为了将增量(DateTime)信息插入到“ AssemblyFileVersion”属性中,这样做的优点是不会破坏任何依赖关系。
在Boog的解决方案基础上进行改进(对我来说不起作用,可能是因为使用的是VS2008?),可以通过生成文件的预构建事件组合,添加该文件(包括其版本属性),然后再使用一种方法读取这些值。也就是说:
预构建事件:
echo [assembly:System.Reflection.AssemblyFileVersion("%date:~-4,4%.%date:~-7,2%%date:~-10,2%.%time:~0,2%%time:~3,2%.%time:~-5,2%")] > $(ProjectDir)Properties\VersionInfo.cs
将生成的VersionInfo.cs文件(位于Properties子文件夹中)包含到您的项目中。
获取日期的代码(精确到秒):
var version = assembly.GetName().Version;
var fileVersionString = System.Diagnostics.FileVersionInfo.GetVersionInfo(assembly.Location).FileVersion;
Version fileVersion = new Version(fileVersionString);
var buildDateTime = new DateTime(fileVersion.Major, fileVersion.Minor/100, fileVersion.Minor
不太舒适...而且,我不知道它是否会创建很多强制重新构建(因为文件总是在变化)。
例如,您可以使其更智能,如果您每隔几分钟/小时只更新VersionInfo.cs文件(通过使用临时文件,然后在检测到足够大的更改时复制/覆盖真实的VersionInfo.cs)。 我曾经做过这个相当成功。