【发布时间】:2009-04-17 09:00:11
【问题描述】:
我在 Visual Studio 中有一个相当大的解决方案。有没有办法一次性更新解决方案中所有程序集的主要/次要版本号?
【问题讨论】:
我在 Visual Studio 中有一个相当大的解决方案。有没有办法一次性更新解决方案中所有程序集的主要/次要版本号?
【问题讨论】:
您可以在解决方案中的所有项目之间共享一个 AssemblyInfo.cs 文件。此共享文件应包含版本号。要共享它,您必须使用 VS 中的添加现有文件并在文件对话框中选择添加为链接。每个项目都有其私有和共享的 AssemblyInfo.cs。私有的仍然包含非版本属性。
我有一个 TeamCity 设置,我使用实际构建版本在每个 TeamCity 构建中生成共享文件,它运行良好。
【讨论】:
我们有一个带有版本号的 AssemblyInfoCommon.cs,并通过引用包含在每个项目中。其他 AssemblyInfo.cs 文件仍然存在,但仅包含特定于程序集的信息(标题和描述)。因此,对于每个 C# 项目,我们只有一个文件需要更新。
【讨论】:
您还可以在您的一个类中使用一个公共 const 字符串,它表示内部版本号,并在您的所有 AssemblyInfo.cs 中将其用于不同的项目。当然,这必须在所有其他项目都引用的项目中才能工作。
如果您不喜欢在所有项目中引用相同的 AssemblyInfo.cs,这是一个不错的选择。
编辑:注意!当您使用多种语言(在我的例子中是 F# 和 C#)时,这也适用。
【讨论】:
搜索/替换?
毕竟版本号存储在文本文件中(每个项目的 Properties 文件夹下的 AssemblyInfo.cs)。
【讨论】:
前段时间我在一个需要高度管理版本控制的项目中使用了一个非常有用的实用程序:
http://www.codeproject.com/KB/macros/versioningcontrolledbuild.aspx
【讨论】:
您还可以创建一些“核心”程序集并在每个程序集中添加对“核心”程序集的引用。 “核心”程序集将保持不变。在这种情况下,每个程序集信息文件中的程序集版本将从“核心”常量设置。 例如:
"core" 程序集的文件 Ver.cs 具有常量: 公共常量字符串值 = "0.0.0.99";
在每个解决方案中,程序集信息将: [程序集:AssemblyFileVersion(Ver.Value)]
【讨论】: