更新解决方案中所有程序集的版本号

31

我在Visual Studio中有一个相当大的解决方案。是否有一种方法可以一次性更新解决方案中所有程序集的主/次版本号?


在解决方案中共享程序集版本 - Ozair Kafray
6个回答

50
你可以在解决方案中所有项目之间共享 AssemblyInfo.cs 文件。这个共享文件应该包含版本号。为了共享它,你必须在VS中使用“添加现有文件”并在文件对话框中选择“添加为链接”。每个项目都有自己的私有和共享的 AssemblyInfo.cs 文件。私有一个仍然包含非版本属性。
我有一个 TeamCity 设置,在每个 TeamCity 构建中使用实际构建版本生成共享文件,它运行得非常良好。

8
我通常会将共享文件称为“SolutionInfo.cs”,其中还包含版权等信息,并将其保存为解决方案项目在SCM中的项目,所有项目都链接到它。请注意,本翻译仅为大意,可能不完全准确或恰当。 - Richard
我在我的情况下将文件称为VersionInfo :) - grover
这太聪明了(而且非常出色),并且是一个非常好的习惯。谢谢。 - GregRos
非常好。完美的解决方案。 - raiserle
很好。同样的解决方案详细说明并附有截图:在解决方案中共享程序集版本 只是需要注意的是,共用文件中定义的程序集属性无法在项目的程序集信息文件中被覆盖。如果某个项目遵循自己的版本控制,则应该取消与共用文件的关联,并自行定义所有共用属性。 - Ozair Kafray

11

我们有一个单独的AssemblyInfoCommon.cs文件,其中包含版本号,并通过引用在每个项目中进行包含。其他的AssemblyInfo.cs文件仍然存在,但只包含程序集特定的信息(标题和描述)。因此,对于每个C#项目,我们只需要更新一个文件。


10
您可以在其中一个类中拥有一个公共的常量字符串,表示构建号,并将其用于所有不同项目的AssemblyInfo.cs中。当然,这必须在所有其他项目都引用的项目中才能工作。
如果您不喜欢在所有项目中引用相同的AssemblyInfo.cs,那么这是一个不错的选择。
注意!在使用多种语言(例如我的情况下的F#和C#)时,此方法也适用。

4

搜索/替换?

版本号毕竟是存储在文本文件中的(每个项目的Properties文件夹下的AssemblyInfo.cs文件)。


如果所有程序集都是相同的主/次版本,那么这将起作用。不幸的是,我的程序集版本都是五花八门的 :) - PaulB
你是想将它们逐个增加,还是让它们都变成一样的?因为你可以轻松使用正则表达式来找到它们所有,即使它们有不同的数字。 - Lasse V. Karlsen
1
这是一个可行的代码: \[assembly:\s+AssemblyVersion\("\d+.\d+.\d+.\d+"\)\] - Lasse V. Karlsen

1

0

你也可以创建一些“核心”程序集,并将对“核心”程序集的引用添加到每个程序集中。 “核心”程序集将包含常量。在这种情况下,每个程序集信息文件中都将设置来自“核心”常量的程序集版本。

例如:

“核心”程序集具有带有常量的文件Ver.cs: public const string Value = "0.0.0.99";

在每个解决方案程序集信息中将是: [assembly: AssemblyFileVersion(Ver.Value)]


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接