软件开发辅助工具 - 将EntityFramework实体文档注释搬进数据库(MSSQL)

作者:V君 发布于:2017-1-9 21:22 Monday 分类:我的应用

TL;DR
[ 本体 ][ 源代码 ]

效果:生成SQL用于更新表和字段说明.
用法:直接运行,在弹出的打开对话框选择定义实体的程序集. (记得启用XML文档生成)
限制:尚不明确.
环境:需要.NET 4.5.2以上, 作为开发者不需要啰嗦更多.


 

扯扯:

 

点击查看原图

 

点击查看原图

 

虽然用上Code-first之后各种便利,然而当需要生成数据库注释用来给运维之类的提供方便时.
咕狗了之后发现并没有现成的工具,懵逼了一会儿. 又查了一下更新数据库注释的方法.
嗯嗯 MSSQL 比 MySQL 做起来方便多了. 于是这个小工具就诞生辣.


首先将打开对话框指定的程序集载入

 遍历所有类 -> 筛选出有[TableAttribute]特性定义的类
  遍历属性 -> 筛选出可读可写的非导航属性
 收集表名,成员名(如果指定了Column特性,将取其指定的列名)

 按对应定义抓取XML文档里的注释

 基于上述信息构建数据库更新SQL脚本. 
  (由于M$SQL新增和更新的分别是两个存储过程, 于是简化处理, 先新增再更新. 
   ((报已存在的错误提示无视掉就可以了 _(:з」∠)_

 将SQL输出到窗体控件

由用户自行丢进SSMS执行,结束.


做这东西过程中遇到了几个有趣的现象, 尽管不是很高深.


0) 嵌套类全名用加号分隔类名
 但是XML文档中仍然是用点分隔类名

1) 基类在不同的程序集
 这时候就要按属性信息的定义类(DeclaringType)去找程序集对应的XML来读取注释了

2) 继承来自泛型的成员
 在XML中泛型以"MyGenericClass`1"的方式表示,
 需要区分泛型然后获取泛型定义(GetGenericTypeDefinition)
 再读取全名才能得到XML中的名字格式,
 如果直接取全名将会得到类似"MyGenericClass[Int32]"的格式.



标签: 软件开发 C# 数据库 ORM

评论(0) 引用(0) 浏览(133)

无缝循环播放 - 蛋疼小工具

作者:V君 发布于:2016-4-25 18:26 Monday 分类:我的应用

TL;DR
[ 本体 ][ 源代码 ]
效果:对指定的音频文件做无缝循环播放.
用法:一个可选参数, 用来指定音频文件. 可以无参数打开然后拖进去.
限制:目前只支持WAV(PCM)格式.
环境:需要.NET 2.0, win7以上可以直接使用. XP需要安装.NET 2.0才能用


扯一句:

 只是为了在挖坑时循环播放某游戏的BGM,

 一直在用的播放器循环有缝隙, 不爽就自己现炒个轮子.

标签: 音乐 软件开发 C# 多媒体 无缝循环播放

评论(0) 引用(0) 浏览(365)

ISO镜像文件替换工具 - 自制小工具

作者:V君 发布于:2016-4-25 6:59 Monday 分类:我的应用

TL;DR
[ 本体 ][ 源代码 ]
效果:替换ISO镜像内的文件.
用法:三个必选参数, 分别是ISO镜像, 镜像内路径, 用于替换内容的文件.
注意:用于替换的文件长度必须小于或等于镜像内文件长度.
限制:目前只实现了ISO9660的支持,典型的解释是可以用在PS3镜像,却不能用在Win7安装镜像.
环境:需要.net4, win8以上可以直接使用. win7需要安装.net4.5才能用

扯扯:

由于玩ODE PS3需要重签EBOOT/SELF, 下下来的东西部分会是原盘镜像而不是打散的目录.
然而ODE的奇怪机制, 个头大的游戏直接用打散的目录会死机...
难道这是要先解开然后替换再重新创建镜像? 傻了, 都是以10G做单位的.
咕狗过没有ISO镜像编辑工具, 至少没有 on-the-fly 这样的.
根据经验, 重签之后的文件会比原盘小, 因为重签过程显示 compress 嘛.
好吧, 看来又要造轮子了.
先做可行性分析, 用WINHEX定位到文件内容偏移, 手动修改再用别的软件读被修改的文件.
内容预期, 没有出错, 证实可行.
然后接着啃ISO镜像格式标准文档/查阅别人写好的代码经过无数坑,总算是弄懂格式长啥样.
然后自个从头到尾写了个实现, 最后打算做界面时偷懒了.
 -- 你个打字的拖什么控件, 给我老老实实用命令行!

最后给看不懂TLDR的人一个示例:
IsoImage.exe z:\ps3.iso PS3_GAME\USRDIR\EBOOT.BIN Z:\453\EBOOT.BIN
这样就能把重签好的EBOOT塞回镜像里面了

标签: 软件开发 C# PS3 ISO9660

评论(0) 引用(0) 浏览(285)

[update2]批量文件重命名/垂直编辑/数字对齐 - 自制小工具

作者:V君 发布于:2016-3-13 2:17 Sunday 分类:我的应用

TL;DR

[ 本体 ][ 源代码 ]

效果:批量修改文件名;

用法:

1)双击打开, 把要处理的单个文件夹拖进窗口

2)按住alt键在需要对齐的地方拖下来,按需要进行删除/补齐或批量更改,剪切粘贴.

 注意:垂直选中文字块剪切后,需要在贴上的地方拖一个长光标才能跨行粘贴. update:可以直接用左右箭头来移动长光标.

3)点击工具栏Go!执行, 这时候可以点Reset来进行下一轮处理;

环境:需要.net4, win8以上可以直接使用. win7需要安装.net4.5才能用

点击查看原图


隐藏秘籍:

alt+鼠标拖放 块状选择
●alt+shift+方向键━开始/改变块状选择
●块状选择时 左右箭头左右移动选择块
●块状选择时 ctrl+左右箭头增减选择块宽度
●块状选择时 shift+左右箭头左右移动选中内容
▲块状选择时不要按ctrl+别的键(包括ctrl+Z)



[~闲话时间~]

这就是前段时间的文章提到的做法, 终于把自动化做出来了.

虽然用了NootePad++的文本编辑器组件,但是这货自己并不带纵向编辑.

在自己实现纵向编辑上花了好大功夫.

看来NPP也不仅仅是个包着文本编辑器组件的壳(笑)


不要吐槽源码为啥这么手打.

自从出来工作之后大部分是Web, 习惯手打界面布局.

作为一个牛逼的软件开发人员, 应该对使用设计器感到羞愧(笑)

整天从早到晚打字,设计器什么的经一去不复返喽!!


update:

上一个版本是关闭窗口时提示要不要执行, 现在改成工具栏了

本想在标题栏加按钮, 但是发现很难实现, 玻璃效果和经典主题的处理方式还不同...


update2:

修正包含全角数字文件名时拖入失效的BUG

标签: 软件开发 C# 字符串处理 Winform 小工具 纯文本 纵向编辑 批命令

评论(2) 引用(0) 浏览(431)

剪贴板纯文本 - 自制小工具

作者:V君 发布于:2016-3-9 1:00 Wednesday 分类:我的应用

TL;DR

[ 本体 ][ 源代码 ]

效果:将剪贴板中的富文本格式清除, 变为纯文本; 

用法:直接运行, 用快速启动工具绑定快捷键更佳;

环境:XP需要安装.net2.0, Win7以上可以直接用.


听我扯扯:

阅读全文>>

标签: 软件开发 剪贴板 C# 小工具 纯文本 快捷键

评论(0) 引用(0) 浏览(217)

Powered by emlog 去你妹的备案 sitemap