如何获取WPF应用程序的发布版本

时间:2014-03-20 08:53:49

标签: c# wpf clickonce

我想要我的WPF应用程序发布版本。我尝试使用this问题的答案。它可以工作,但问题是我们可以手动更改那里的值。我想知道我的项目实际发布了多少次(不需要版本号。我发布了我的应用程序的次数)。可以这样做吗?

4 个答案:

答案 0 :(得分:12)

使用Click Once,每次发布时,Visual Studio都会自动更改数字。每次发布时它都会增加值。您的问题是您已手动更改了号码。解决方案是发布并让Visual Studio更新值...您应该注意到您的项目需要在发布后保存。这是因为Visual Studio只为您增加了值。


更新>>>

如果要从代码中访问已发布的版本( 已在您的问题中明确指出),那么您可以使用此代码,但必须确保应用程序是网络部署的首先......这意味着它实际上已经发布,因此在调试时它不会起作用。试试这个:

private string GetPublishedVersion()
{
    if (System.Deployment.Application.ApplicationDeployment.IsNetworkDeployed)
    {
        return System.Deployment.Application.ApplicationDeployment.CurrentDeployment.
            CurrentVersion.ToString();
    }
    return "Not network deployed";
}

答案 1 :(得分:7)

您可能会被2组数字搞糊涂。请注意,您可以在两个不同的地方

中设置WPF应用的版本
  1. 项目属性/发布标签/ 发布版本
  2. AssemblyInfo.cs 文件中声明的
  3. AssemblyVersion,如果在“解决方案资源管理器”中展开“项目属性”节点,则可以找到该文件。
  4. 它们的相似之处在于它们都提供4个数字:主要,次要,构建和修订。不同之处在于,如果应用实际上已发布(即已安装),Publish Version 仅可用。它在您的调试会话中不可用,也不是您只是将可执行文件复制到另一台计算机并在那里运行它。因此,如果您只需要跟踪EXE文件的版本,请使用 AssemblyInfo.cs

    相应地,要读取数据,请使用以下代码:

    1阅读发布版本(在“发布”标签中声明)

    using System.Deployment.Application;
    ApplicationDeployment.CurrentDeployment.CurrentVersion.ToString();
    

    请注意,在这种情况下:a)您需要添加对System.Deployment程序集的引用,b)如果未部署应用程序,它将无效。

    2阅读汇编版本(在AssemblyInfo.cs中声明)

    Assembly.GetExecutingAssembly().GetName().Version;
    

    这个一直有效。

答案 2 :(得分:3)

 var obj=Assembly.GetExecutingAssembly().GetName().Version;
    string version= string.Format("Application Version {0}.{1}", obj.Build, obj.Revision);  

OR

 string version= string.Format("Application Version {0}.{1}", obj.Major, obj.Minor); 

适合您的任何属性。

答案 3 :(得分:2)

通用解决方案,如果我们从非启动程序集中获取应用程序版本:

var version = System.Reflection.Assembly.GetEntryAssembly().GetName().Version;
string appVersion = $"{version.Major}.{version.Minor}";

GetEntryAssembly提供启动项目的版本。