我知道汇编版本的格式是:
<major version>.<minor version>.<build number>.<revision>
Run Code Online (Sandbox Code Playgroud)
有没有办法让版本号成为当前日期?
例如,如果我今天编译构建版本,版本号应如下所示:
2016.02.11.xxxxx
Run Code Online (Sandbox Code Playgroud)
如果将程序集版本设置为1.0.0,则通常会获得xxxxx.*.
我用Google搜索,但没有找到答案(甚至不是问题).
简单部分:在“项目属性”>“构建事件”中,添加“预构建事件命令行”,如下所示:
\n\n"D:\\SomePath\\MyAssemblyInfoPatcher.exe" "$(ProjectDir)Properties\\AssemblyInfo.cs"\nRun Code Online (Sandbox Code Playgroud)\n\n困难的部分: 你提供 MyAssemblyInfoPatcher.exe ,一个打开由第一个参数指定的文件的程序,在其中搜索这一行(忽略那里的值):
\n\n[assembly: AssemblyVersion("8888.0.*")]\nRun Code Online (Sandbox Code Playgroud)\n\n,用以下之一(或类似的)替换该行:
\n\n[assembly: AssemblyVersion("2016.11.05.2359")]\n[assembly: AssemblyVersion("2016.1105.2359.1")]\n[assembly: AssemblyVersion("8888.2016.1105.2359")]\nRun Code Online (Sandbox Code Playgroud)\n\n,并重写该文件。
\n\n该程序根据以下模式之一从系统日期和时间导出这些值:
\n\nyyyy.mm.dd.hhmm\nyyyy.mmdd.hhmm.counter\narbitrary.yyyy.mmdd.hhmm\nRun Code Online (Sandbox Code Playgroud)\n\n如果您硬编码所需的模式,则您的程序无需配置。对于计数器(如果您选择了它),程序可以增加它在文件中找到的值。计数器必须是字 (UInt16),以便递增 65535 环绕到 0。如果您希望计数器每天重置,现在您需要将参考日期存储在辅助文件中或可能在 AssemblyInfo.cs 内的注释中。对于任意数字,您可以重复使用文件中的内容,或硬编码替换。
\n\n时间问题:夏令时的开始和结束使当地时间偶尔会提前一小时(不是问题)并回落一小时(总是令人担心)。为了几乎保证没有重复的时间范围,您可以使用 UTC 或本地时间,但忽略夏令时。没有夏令时的本地时间是许多 Web 服务器使用的折衷方案,甚至是 VS 内置的可选的基于日期的自动版本编号(它用 ab{自 2000 年 1 月 1 日 00:00 开始的天数}覆盖ab*。{自 2000 年 1 月 1 日 00:00 起的秒数除以 2},因此人类不可读)。
\n\n可能的简化: \xe2\x80\xa2 目标文件名始终是“AssemblyInfo.cs”,因此可以在程序中指定它并从参数中省略:“$(ProjectDir)Properties”。\xe2\x80\xa2如果VS 执行程序时当前目录设置为“D:\\Users\\myusername\\Documents\\Visual Studio 2010\\Projects\\solutionfolder\\projectfolder\\Properties”,则不会不需要争论。
\n\n\xe2\x80\xa2A 程序可以通过 System.Reflection.Assembly.GetExecutingAssembly().GetName().Version 读取其 AssemblyVersion 。
\n\xe2\x80\xa2File:属性显示 AssemblyFileVersion。
\n\xe2\x80\xa2AssemblyFileVersion (如果未指定)默认为 AssemblyVersion 。
小智 2
这可以通过 MSBUILD 来完成。这里有一个很好的描述。为此,您不需要构建服务器。您可以在项目的 BeforeBuild Target 中调用自定义 MSBUILD 目标。为此,使用编辑器打开您的 csproj 文件并在文件末尾找到此部分:
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2137 次 |
| 最近记录: |