使用Visual Basic与.NET 6时,如何在代码中访问PublishVersion?
.NET 6 获取Visual Studio自动递增PublishVersion的解决方案
方案1:项目文件同步版本号(最简单直接)
在项目文件(.csproj或.vbproj)中添加以下配置,让Visual Studio自动递增的PublishVersion同步到程序集版本,无需手动修改AssemblyVersion:
<PropertyGroup> <!-- 启用修订号自动递增,格式为主版本.次版本.* --> <PublishVersion>1.0.*</PublishVersion> <!-- 将PublishVersion同步到程序集版本和文件版本 --> <AssemblyVersion>$(PublishVersion)</AssemblyVersion> <AssemblyFileVersion>$(PublishVersion)</AssemblyFileVersion> </PropertyGroup>
配置完成后,每次发布时Visual Studio会自动递增修订号,程序集版本也会同步更新。在代码中读取版本信息:
using System.Reflection; var currentVersion = Assembly.GetExecutingAssembly().GetName().Version; Console.WriteLine($"当前发布版本:{currentVersion}");
方案2:MSBuild生成版本信息文件
如果需要单独获取PublishVersion而不依赖程序集版本,可以通过MSBuild自动生成包含版本信息的文件:
- 在项目中创建一个模板文件
VersionTemplate.cs,内容如下:
namespace YourAppNamespace; public static class PublishVersionInfo { public const string CurrentVersion = "$(PublishVersion)"; }
- 在项目文件中添加配置,让MSBuild在编译前替换模板中的变量并生成实际文件:
<ItemGroup> <None Include="VersionTemplate.cs" /> <Compile Include="VersionInfo.g.cs" /> </ItemGroup> <Target Name="GeneratePublishVersionFile" BeforeTargets="CoreCompile"> <Copy SourceFiles="VersionTemplate.cs" DestinationFiles="VersionInfo.g.cs" OverwriteReadOnlyFiles="true"> <ReplaceTokens SourceFiles="VersionTemplate.cs" DestinationFiles="VersionInfo.g.cs"> <Tokens> <Token Name="PublishVersion" Value="$(PublishVersion)" /> </Tokens> </ReplaceTokens> </Copy> </Target>
发布后,VersionInfo.g.cs会被自动生成,直接在代码中调用PublishVersionInfo.CurrentVersion即可获取自动递增的发布版本号。
方案3:ClickOnce发布场景(有限支持)
如果使用ClickOnce发布.NET 6应用,可以读取发布清单文件中的版本信息,但这种方式仅适用于ClickOnce场景,通用性不如前两种方案。
内容的提问来源于stack exchange,提问作者Computing Troubleshooter
相关产品推荐
相关产品推荐

