【问题标题】:How can I maintain a shared AssemblyFileVersion and seperate AssemblyVersions for each of my project assemblies?如何为我的每个项目程序集维护一个共享的 AssemblyFileVersion 和单独的程序集版本?
【发布时间】:2013-01-11 20:17:37
【问题描述】:

我正在使用链接的 AssemblyInfo.cs 文件为我的所有类库设置 AssemblyFileVersion。

[assembly: AssemblyFileVersion("6.60.3.4")]

我将本地/默认 AssemblyInfo.cs 文件用于其他所有内容。

//example of AssemblyVersion set in project AssemblyInfo.cs    
[assembly: AssemblyVersion("6.60.3.1")]

我的结果是 AssemblyFileVersion 和 AssemblyVersion 都设置为 AssemblyFileVersion 值。

如何为我的每个项目程序集维护一个共享的 AssemblyFileVersion 和单独的 AssemblyVersions?

编辑

我的印象是我可以/应该使用 AssemblyFileVersion 来跟踪项目中所有 dll 程序集的发布版本。我们的想法是让 exe 和 dll 都具有相同的 AssemblyFileVersion。仅当对该特定 dll 进行修改时,AssemblyVersion 才会增加。这个逻辑对我来说很有意义。请告知是否有更合乎逻辑的方法来处理大型项目

【问题讨论】:

  • 根据定义,您所指的版本不再与特定程序集有任何关系。我假设您的意思是套件版本或类似的东西。添加程序集时会发生什么?是第一个版本 6.60.3.4 吗?
  • 见上面的编辑。希望这能澄清我正在尝试做的事情。

标签: c#


【解决方案1】:

下面的帖子What are differences between AssemblyVersion, AssemblyFileVersion and AssemblyInformationalVersion? 建议您反其道而行之。

This answer 提供了一个可以根据您的需要进行调整的实现。

【讨论】:

  • 您的帖子有助于我了解一些人如何使用 AssemblyVersion 和 AssemblyFileVersion。
  • @faldeland 我很高兴它有帮助。请随时投票并接受它。如果它没有回答您的问题,请告诉我需要添加或修复的内容。
【解决方案2】:

据我所知,没有简单的解决方案。我认为最简单的解决方案是先单独构建您的类库,然后让其他构建依赖于此。一般来说,试图操纵 AssemblyInfo 文件中的值是徒劳的。

您可以模仿像 TeamCity 这样的系统。他们通过提取所有源代码,然后在实际构建之前使用 Web UI 中提供的版本号编辑 AssemblyInfo 文件来做到这一点。

【讨论】:

  • @faldeland 当您查看 dll 或 exe 的属性时,显示的版本号将反映 AssemblyInfo 文件中的内容。当您构建时,AssemblyInfo 版本会自动递增,因此如果您一起构建所有程序集,即使其中一些没有代码更改,版本也会更新。
【解决方案3】:

我的问题是正确的,但我想知道我是否被误导了一点。我正在使用 Windows 文件属性对话框来确认我的 ProductVersion 和 FileVersion 设置正确。

我将以下内容添加到我的共享 AssemblyInfo.cs 文件中,它开始按预期工作。

[assembly: AssemblyVersion("6.60.0.0")]    
[assembly: AssemblyInformationalVersion("6.60.0.0")]

任何想法为什么这会更新 AssemblyVersion 而不仅仅是这个

[assembly: AssemblyVersion("6.60.0.0")]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-30
    • 2010-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多