繁体   English   中英

AssemblyVersion和AssemblyFileVersion在单独的文件中

[英]AssemblyVersion and AssemblyFileVersion in a separate file

我们在单独的属性文件中拥有AssemblyVersionAssemblyFileVersion属性。 这是因为它们在所有项目之间“链接”并由构建服务器更新。 我们不想在每次构建或发行后都必须手动更新版本。

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中查看项目属性时,在程序集信息中未检测到版本信息:

VS项目属性

我的猜测是这是由于AssemblyVersionAssemblyFileVersion没有驻留在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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM