0

我在我的应用程序部署中使用每次发布时自动增加修订

发布版本截图

结合AssemblyInfo.cs

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

我想通过以下方式向用户显示软件的当前版本:

protected void InitializeVersionInfo()
{
    Assembly a = Assembly.GetExecutingAssembly();
    Version v = System.Deployment.Application.ApplicationDeployment.IsNetworkDeployed
            ? System.Deployment.Application.ApplicationDeployment.CurrentDeployment.CurrentVersion
            : Assembly.GetExecutingAssembly().GetName().Version;

    string version = String.Format( System.Globalization.CultureInfo.InvariantCulture,
        @"Tool - Version {0}.{1}.{2} (r{3})", v.Major, v.Minor, v.Build, v.Revision );
    VersionLabel.Text = version;
}

但我得到不同的版本号:

调试器屏幕截图

我做错了什么或我错过了什么?

如何让软件显示2.0.0.12

4

2 回答 2

2

发布选项卡上指定的版本是“包版本”。此版本字符串将嵌入到包清单文件中。

AssemblyInfo.cs 中指定的版本是程序集版本。此版本在编译时嵌入到程序集中,在程序集被打包之前。“*”在每个构建上启用版本自动增量(即使构建将永远不会发布)。此版本与软件包版本无关。

如果您需要包版本来匹配程序集版本,那么您必须手动同步它们(即在发布之前将特定的非通配符版本同时放入发布设置和 AssemblyInfo.cs)。

此外,您可以只在程序集版本上显示包版本:

if (System.Deployment.Application.ApplicationDeployment.IsNetworkDeployed)
{
    VersionLabel.Text = System.Deployment.Application.ApplicationDeployment.CurrentDeployment.CurrentVersion.ToString();
}
于 2013-10-03T10:13:32.557 回答
2

您正在使用Automatically increment revision功能。

[assembly: AssemblyVersion( "2.0.0.*" )]

注意 * 每次随机构建应用程序时都会递增。

如果您需要特定版本,请不要使用自动递增功能。即手动更新它

[assembly: AssemblyVersion( "2.0.0.12" )]

不要忘记关闭自动递增功能

于 2013-10-03T10:15:07.117 回答