我有一个大型的WinForms应用程序(C#,.NET 4.5.2),它有几个自己的DLL(应用程序的插件),在同一个解决方案中都是不同的项目。我使用Visual Studio 2015社区。 p>
主应用程序和所有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”是包含主要版本号和次要版本号的字符串。但我不知道在哪里可以定义该字符串,或者根本不可能。
答案 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之前编辑它们的程序集。