如何为Visual Studio解决方案的构件配置版本?
Visual Studio 解决方案构件版本管理方案
是的,Visual Studio 生态下有和其他技术栈类似的统一版本配置方案,发布构件时可以自动读取配置的版本号,无需手动逐个修改,具体方式根据项目类型有所区别:
新SDK风格项目(.NET Core/.NET 5+、.NET Standard类库等)
这类是目前.NET生态的主流项目格式,版本可以统一配置在两个位置:- 单项目场景:直接在对应项目的
.csproj(C#项目)、.vbproj(VB.NET项目)文件的PropertyGroup节点中添加<Version>x.y.z</Version>配置即可,发布NuGet包、生成程序集时都会自动使用该版本号。你也可以根据需求拆分配置<AssemblyVersion>、<FileVersion>、<InformationalVersion>字段,分别对应程序集版本、文件版本、产品版本三类不同的版本标识。 - 多项目解决方案场景:在解决方案根目录新建
Directory.Build.props文件,把版本配置写入该文件,解决方案下所有项目都会自动继承这个版本配置,无需每个项目单独修改,逻辑和Maven父POM统一管理版本的方式高度相似。
- 单项目场景:直接在对应项目的
传统.NET Framework非SDK风格项目
这类项目默认版本存放在Properties\AssemblyInfo.cs(C#)或对应语言的程序集信息文件中,你可以将版本相关的配置抽离为独立的CommonAssemblyInfo.cs文件放在解决方案根目录,所有项目添加该文件的「链接引用」,仅修改公共文件即可实现全解决方案版本同步。也可以通过MSBuild参数在构建时动态注入版本号,无需修改源码文件。C++项目(
.vcxproj)
版本信息可以统一配置在独立的.rc资源脚本的版本信息块中,也可以通过自定义MSBuild属性文件统一管理,构建时会自动嵌入到生成的exe/dll文件的资源属性里。
如果是CI/CD自动发布场景,以上所有配置都支持通过构建命令动态覆盖版本号,比如执行dotnet build /p:Version=2.1.0即可指定本次构建的版本,和Maven、Gradle等工具的版本参数透传逻辑一致。
内容的提问来源于stack exchange,提问作者Chris F
相关产品推荐
相关产品推荐

