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

C# 如何与DLL共享主应用程序的主要版本和次要版本?,c#,.net,dll,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.* 是否有一

我有一个大型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_字符串是包含主版本号和次版本号的字符串。但是我不知道在哪里可以定义该字符串,或者这是否可行。

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

右键单击下拉菜单中的项目->添加->现有项->添加为链接

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

编辑:


为了避免重复每个程序集应该是唯一的属性(如GUID),请创建两个文件,一个用于共享属性(如版本号),另一个用于程序集特定的属性。没有人强迫您将所有内容都放在同一个文件中。它甚至不必在Visual Studio中命名为AssemblyInfo.cs,您可以设置预生成事件

在项目上单击鼠标右键,然后选择“属性” 转到生成事件 然后在预构建事件的第一个框中,您可以启动这样一个简单的脚本

if $(ConfigurationName) == Release C:\AssemblyChanger.exe $(ProjectDir)
上面的示例脚本将启动位于c驱动器上的AssemblyChanger.exe,并将当前Visual Studio项目文件夹作为参数传递。从这里可以非常简单地读取管理版本的特定项目上的Assembly.cs,并在作为参数传递的路径中编辑该版本。另外,只有在您处于释放模式时才会调用该函数,并且可以毫无问题地删除该函数

您可以创建一个简单的控制台应用程序来实现这一点


该脚本可以在所有DLL预构建事件中设置,因此在编译时调用该脚本,并在编译器创建DLL之前对其程序集进行编辑。

如果发生更改,则程序集版本应该更改。它并不意味着拥有相同库的精确副本,而是具有不同的版本号。但除此之外,您还可以在Visual Studio中执行预构建脚本批处理exe。。您可以自己编写该脚本,并使其编辑assembly.cs,然后在编译新值时,该脚本将被更改。您应该添加一个警告,即这也将使所有DLL共享所有值,包括assembly和assembly guid。不仅是版本号ROK,如果我理解正确,这将对我添加此链接的所有项目使用相同的AssemblyInfo.cs?这也意味着AssemblyInfo.cs中的所有其他属性都相同?我对每个DLL使用不同的AssemblyTitle、AssemblyDescription等值。@是的,我们所做的是有一个共享链接的SharedAssemblyInfo.cs,它只包含版本号和公司信息等共享信息。然后,我们从AssemblyInfo.cs中删除该信息,我们的项目只使用这两个文件。这听起来像是我需要的。但是,我似乎找不到添加为链接选项。我可以添加…->现有项目。。。然后我得到一个选择文件对话框。当我这样做时,我会得到一份文件的副本,我可以独立编辑这两个文件。VS 2015中是否还不存在添加为链接选项?是的,您必须单击添加按钮旁边的小三角形箭头