部署时的C#项目,正确的版本控制,公司等

gre*_*b64 12 .net c# versioning version visual-studio

我的公司正在努力将我们的开发从C++.net转移到C#.我们的产品具有标准的月度发布(例如,5.0.19.2 ...).

在C++ .net中,我们有一个常见的app.rc文件,它标准化了公司信息以及版本号.由于解决方案中的每个项目都包含相同的app.rc文件一次,因此很容易更改200多个项目的版本信息.

这个解决方案如何转化为C#世界?我在写这篇文章之前检查过的问题是通过解决方案资源管理器中的属性窗口提到的,但这不是我想要的.

我知道assemblyinfo.cs包含我想要修改的信息,但我认为我不能拥有一个主文件.我需要将其拆分为多个文件吗?

提前致谢!

Mat*_*ott 14

您可以将文件添加为链接而不是实际文件.例如,我的解决方案可能是:

Solution
    - My Project
        - Properties
            - AssemblyInfo.cs
            - SharedAssemblyInfo.cs (Linked)
    - Solution Items
        - SharedAssemblyInfo.cs
Run Code Online (Sandbox Code Playgroud)

将现有项添加到解决方案时,可以使用Add链接上的下拉箭头,然后选择Add as Link.该SharedAssemblyInfo.cs文件可以包含公共/共享程序集属性,例如:

[assembly: AssemblyVersion("2.0.*")]
[assembly: AssemblyFileVersion("2.0.0.0")]

[assembly: AssemblyCompany("My Company")]
Run Code Online (Sandbox Code Playgroud)

......等.本地项目可以包含项目特定的属性:

[assembly: AssemblyTitle("My Assembly")]
Run Code Online (Sandbox Code Playgroud)

...等


Scr*_*dog 6

在c#解决方案中,通常的做法是在每个项目的assemblyinfo.cs中注释掉版本信息,然后有一个共同的"shared_assemblyinfo.cs"(命名为品味),其中包含版本信息并在所有项目中共享......


sco*_*ttm 6

您可以拥有一个程序集信息文件,并仅在其中指定程序集版本:

using System;
using System.Reflection;

[assembly: AssemblyVersion("1.0.0.0")]
Run Code Online (Sandbox Code Playgroud)

然后,您只需将该文件添加为每个其他项目的链接(您必须Properties\AssemblyInfo.cs手动从每个文件中删除AssemblyVersion属性).当他们建立时,他们都会使用这个文件.