如何与其DLL共享主应用程序的主要版本和次要版本?

时间:2017-11-01 16:57:15

标签: c# .net dll

我有一个大型的WinForms应用程序(C#,.NET 4.5.2),它有几个自己的DLL(应用程序的插件),在同一个解决方案中都是不同的项目。我使用Visual Studio 2015社区。

主应用程序和所有DLL的版本号分别在各自的AssemblyInfo.cs文件中分配,如下所示:

[assembly: AssemblyVersion("1.0.*")]

现在我想将应用程序的版本升级到2.0。。我还希望所有的DLL都是2.0。。我目前拥有它的方式我需要进入每个DLL并手动将版本更改为2.0。*。

有没有办法从应用程序继承“2.0”部分,以便将来我只需要在一个地方更改主要版本号和次要版本号?

我做了一些搜索,但未能找到答案。

更新 我希望的是我可以替换

[assembly: AssemblyVersion("1.0.*")]

有类似的东西:

[assembly: AssemblyVersion(some_string + ".*")]

其中“some_string”是包含主要版本号和次要版本号的字符串。但我不知道在哪里可以定义该字符串,或者根本不可能。

2 个答案:

答案 0 :(得分:1)

通过项目解决方案资源管理器将原始AssemblyInfo.cs文件的链接添加到其他项目:

右键点击项目 - > Add - > Existing item - > Add as link(来自下拉菜单)

现在,更改原始AssemblyInfo.cs后,所有更改都将应用于将文件添加为链接的所有项目。

修改

为避免重复每个程序集应该唯一的属性(例如GUID),请创建两个文件,一个用于共享属性(如版本号),另一个用于程序集特定属性。没有人强迫你把所有东西都放在同一个文件里。它甚至不必命名为AssemblyInfo.cs

答案 1 :(得分:0)

在Visual Studio中,您可以设置预构建事件。

  • 右键单击项目并选择属性
  • 转到构建活动

然后在预构建事件的第一个框中,您可以启动一个像这样的简单脚本

if $(ConfigurationName) == Release C:\AssemblyChanger.exe $(ProjectDir)

上面的示例脚本将启动" AssemblyChanger.exe"位于您的C驱动器上,它将作为参数传递当前的Visual Studio项目文件夹。从那里可以非常简单地阅读关于管理"版本"的特定项目的Assembly.cs。并编辑作为参数传递的路径中的那个。此外,只有在您处于发布模式时才会调用此选项("如果"可以在没有问题的情况下删除)。

您可以创建一个简单的控制台应用程序来执行此操作。

该脚本可以在所有DLL预构建事件中设置,因此当它们编译时,它们会调用脚本并在编译器创建DLL之前编辑它们的程序集。