我们在单独的属性文件中包含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
文件?
答案 0 :(得分:7)
这里出了不止一件事:
该对话框非常空,因为它严格查看AssemblyInfo.cs文件中的属性。如果输入版本号,它会将它们写入该文件。使用单独的文件不是一个好主意。
Windows“详细信息”属性表与.NET无关,它只显示文件中非托管版本资源的内容。这与C#源代码中的属性间接相关,C#编译器会自动生成属性中的非托管版本资源。遗憾的是,超级重要的[AssemblyVersion]号码没有显示在这个对话框中,XP是最后一个仍然可以显示它的Windows版本。
您可能已获得CA1016,因为您将版本号保留为0。
不显示[AssemblyVersion]的Windows 不是跳过该属性的正当理由。如果您在属性表中看到它很重要,那么只需使[AssemblyFileVersion]与[AssemblyVersion]相同即可。请记住它的用途,如果您更改[AssemblyVersion],那么所有项目的引用需要重新编译。
微软的Windows和DevDiv小组之间的历史不佳,我不想深入了解它的细节。我们只是说Windows 非常很少适应.NET。我们有责任解决这个问题。