我们打开vs的项目属性可以看到有生成事件,如下图:
可以看到有两块空白区域,这个空白区域可以让我们写代码或脚本来处理编译生成前后的时候,处理一些事情,今天就简单的来说说这两块。
生成前事件命令行
我想可以在这里动态生成程序的版本号,将时间增量(DateTime)信息添加到AssemblyFileVersion属性中,该属性具有不破坏任何依赖性的优点。
你可以使用预生成事件生成文件,那是在项目的预生成,事件中:
echo [assembly:System.Reflection.AssemblyFileVersion("%date:~0,4%.%date:~5,2%%date:~8,2%.%time:~0,2%%time:~3,2%.%time:~6,2%")] > $(ProjectDir)PropertiesVersionInfo.cs
将生成的VersionInfo.cs文件(Properties子文件夹)包含到项目中,并且AssemblyInfo.cs文件中的AssemblyFileVersion代码注释掉,每次编译的时候就是当前时间作为版本号了。
后期生成事件命令行
我想让程序生成的类库输出到指定的目录下,方便供其他程序引用和访问,保证其他程序引用到的都是最新的类库程序。
set outPath=$(SolutionDir)$(ProjectName).Output if exist "%outPath%" rd /s /q "%outPath%" md "%outPath%" copy $(TargetDir) "%outPath%"
以上代码直接在项目的同级目录生成以项目名+.Output的文件夹,并把bin中的dll复制到里面。
好了,试试吧,看看是否有版本号和输出到指定目录下?