无效的AssemblyVersion

时间:2013-10-03 10:03:10

标签: c# version

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

Publish version screen shot

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;
}

但是我得到了不同的版本号:

Debugger screenshot

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

如何让软件显示2.0.0.12

2 个答案:

答案 0 :(得分:2)

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

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

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

此外,您只需在Assembly Version上显示Package Version:

if (System.Deployment.Application.ApplicationDeployment.IsNetworkDeployed)
{
    VersionLabel.Text = System.Deployment.Application.ApplicationDeployment.CurrentDeployment.CurrentVersion.ToString();
}

答案 1 :(得分:2)

您正在使用Automatically increment revision功能。

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

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

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

[assembly: AssemblyVersion( "2.0.0.12" )]

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