[英]Programmatically change the AssemblyVersion and AssemblyFileVersion attributes
[英]AssemblyVersion and AssemblyFileVersion in a separate file
我们在单独的属性文件中拥有AssemblyVersion
和AssemblyFileVersion
属性。 这是因为它们在所有项目之间“链接”并由构建服务器更新。 我们不想在每次构建或发行后都必须手动更新版本。
AssemblyInfo.cs
:
[assembly: AssemblyTitle("MyProductTitle")]
[assembly: AssemblyCulture("")]
[assembly: Guid("579eb194-08f1-44fc-9422-21aaf6cb2963")]
AssemblyVersionInfo.cs
:
[assembly: AssemblyFileVersion("0.0.14056.19")]
[assembly: AssemblyVersion("0.0.0.0")]
问题是我们的构建服务器针对每个项目抱怨以下警告:
CA1016 : Microsoft.Design : Add an AssemblyVersion attribute to 'MyProduct.dll'.
在本地构建项目时,bin中的实际DLL文件具有应用的所有版本号(文件属性对话框):
在Visual Studio中查看项目属性时,在程序集信息中未检测到版本信息:
我的猜测是这是由于AssemblyVersion
和AssemblyFileVersion
没有驻留在AssemblyInfo.cs
。
有什么办法可以“包括”自定义的AssemblyVersionInfo.cs
文件?
这里有不只一件事出错了:
该对话框非常空,因为它严格查看AssemblyInfo.cs文件中的属性。 如果输入版本号,会将它们写入该文件。 使用单独的文件不是一个好主意。
Windows“详细信息”属性表与.NET无关,它仅显示文件中非托管版本资源的内容。 C#编译器仅与C#源代码中的属性间接相关,而C#编译器会根据这些属性自动生成非托管版本资源。 可悲的是,此对话框中未显示非常重要的[AssemblyVersion]数字,XP是仍可以显示该数字的最后一个Windows版本。
您可能得到了CA1016,因为您将版本号保留为0。
Windows不显示[AssemblyVersion] 并不是跳过该属性的充分理由。 如果重要的是要在属性表中看到它,则只需使[AssemblyFileVersion]与[AssemblyVersion]相同即可。 请记住它的用途,如果更改[AssemblyVersion],则需要重新编译所有引用该程序集的项目。
在Microsoft的Windows和DevDiv小组之间有糟糕的历史,我不想详细介绍它。 让我们只说Windows 几乎没有去适应.NET。 解决这个问题取决于我们。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.