【问题标题】:AssemblyVersion and AssemblyFileVersion in a separate fileAssemblyVersion 和 AssemblyFileVersion 在一个单独的文件中
【发布时间】:2014-03-07 10:32:13
【问题描述】:

我们在单独的属性文件中拥有 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 中查看项目属性时,在 Assembly Info 中未检测到版本信息:

我的猜测是这是因为AssemblyVersionAssemblyFileVersion 不在AssemblyInfo.cs 中。

有没有办法“包含”自定义AssemblyVersionInfo.cs 文件?

【问题讨论】:

标签: c# .net tfs msbuild assemblyinfo


【解决方案1】:

这里不止一件事情出错了:

  • 对话框非常空,因为它严格查看 AssemblyInfo.cs 文件的属性。如果您输入版本号,会将它们写入该文件。使用单独的文件不是一个好主意。

  • Windows“详细信息”属性表与 .NET 无关,它仅显示文件中 非托管 版本资源的内容。这仅与 C# 源代码中的属性间接相关,C# 编译器从属性自动生成非托管版本资源。遗憾的是,这个对话框中没有显示超级重要的 [AssemblyVersion] 编号,XP 是最后一个仍然可以显示它的 Windows 版本。

  • 您可能得到 CA1016,因为您将版本号保留为 0。

不显示 [AssemblyVersion] 的 Windows 不是跳过该属性的好理由。如果在属性表中看到它对您很重要,那么只需使 [AssemblyFileVersion] 与 [AssemblyVersion] 相同。请记住它的用途,如果您更改 [AssemblyVersion],则需要重新编译所有引用该程序集的项目。

Microsoft 的 Windows 和 DevDiv 团队之间有一段糟糕的历史,我不想深入了解它的细节。让我们假设 Windows 在适应 .NET 方面所做的非常很少。我们有责任解决这个问题。

【讨论】:

    猜你喜欢
    • 2021-04-25
    • 2010-11-09
    • 2011-03-07
    • 1970-01-01
    • 2010-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-28
    相关资源
    最近更新 更多