如何获得发布版本?

IrA*_*App 8 c# desktop-application visual-studio

我想展示我的桌面应用程序的发布版本.我正在尝试使用此代码:

_appVersion.Content = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version;
Run Code Online (Sandbox Code Playgroud)

问题是我没有得到我在项目属性中的发布版本.下面是它的截图:

在此输入图像描述

但我得到了3.0.0.12546.有人知道问题在哪里吗?

Bas*_*sie 7

我也遇到了这个问题,发现设置的版本号AssemblyInfo.cs干扰了以下设置Properties:

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

我通常会评论这些行AssemblyInfo并将其替换为

[assembly: AssemblyVersion("1.0.*")]
Run Code Online (Sandbox Code Playgroud)

检查这些值是否已硬编码到您的AssemblyInfo文件中.

有关自动版本控制的有趣讨论,请参阅此SO问题.检查时AssemblyInfo.cs,确保自动增量(*- 如果使用它)仅针对目标AssemblyVersion而不是AssemblyFileVersion.


调试程序时,可以检查程序集的属性

\bin\Release\app.publish
Run Code Online (Sandbox Code Playgroud)

Details选项卡下,检查版本号.这是否与您在VS中指定的任何设置相匹配?


Hai*_*dad 6

System.Reflection.Assembly.GetExecutingAssembly().GetName().Version;
Run Code Online (Sandbox Code Playgroud)

将获取 AssemblyInfo.cs 文件中存在的程序集版本,要获取您在发布对话框中设置的发布版本,您应该使用

System.Deployment.Application.ApplicationDeployment.CurrentDeployment.CurrentVersion
Run Code Online (Sandbox Code Playgroud)

但请注意,您必须添加对 System.Deployment 的引用,并且只有在您通过右键单击项目文件并单击发布来发布应用程序后,它才会起作用,每次发布时,它都会增加修订版。

如果您尝试在调试模式下调用上面的行,它将不起作用并且会抛出异常,因此您可以使用以下代码:

try
{
    return System.Deployment.Application.ApplicationDeployment.CurrentDeployment.CurrentVersion;
}
catch(Exception ex)
{
    return Assembly.GetExecutingAssembly().GetName().Version;
}
Run Code Online (Sandbox Code Playgroud)


Gor*_*ath 5

我们可以创建一个属性,该属性将返回如下所述的Version信息,并且我们可以使用该属性。

public string VersionLabel
{
    get
    {
        if (System.Deployment.Application.ApplicationDeployment.IsNetworkDeployed)
        {
            Version ver = System.Deployment.Application.ApplicationDeployment.CurrentDeployment.CurrentVersion;
            return string.Format("Product Name: {4}, Version: {0}.{1}.{2}.{3}", ver.Major, ver.Minor, ver.Build, ver.Revision, Assembly.GetEntryAssembly().GetName().Name);
        }
        else
        {
            var ver = Assembly.GetExecutingAssembly().GetName().Version;
            return string.Format("Product Name: {4}, Version: {0}.{1}.{2}.{3}", ver.Major, ver.Minor, ver.Build, ver.Revision, Assembly.GetEntryAssembly().GetName().Name);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)