【问题标题】:How can I read WPF publish version number in code behind如何在后面的代码中读取 WPF 发布版本号
【发布时间】:2014-06-21 00:10:18
【问题描述】:

我想在启动窗口中读取和显示 WPF 应用程序发布版本号,在发布选项卡中的项目属性中有发布版本,我怎样才能得到它并在 WPF 窗口中显示它。

提前致谢

【问题讨论】:

    标签: c# wpf xaml code-behind


    【解决方案1】:

    使用Assembly.GetExecutingAssembly() 访问程序集版本并在 UI 中显示

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

    【讨论】:

    • 感谢您的宝贵时间,虽然我的应用程序版本是 1.0.0.158,但它可以工作,但始终设置版本 1.0.0.0 !
    • @AbdusalamElsherif 你在哪里有版本?在 assemblyinfo 里面?
    • 以这种方式添加程序集信息绝对有效。
    • @AbdulsalamElsharif,我认为这是因为您正在使用来自另一个项目(另一个程序集)的此代码 sn-p。例如,您的主要 Windows 应用版本是 1.0.2,但您的 dll 项目是 1.0.0。
    • 如果您使用“发布”方法进行部署,AssemblyVersion 不起作用。
    【解决方案2】:

    在您的项目中添加对System.Deployment 库的引用,并将此sn-p 调整为您的代码:

    using System.Deployment.Application;
    

    string version = null;
    try
    {   
        //// get deployment version
        version = ApplicationDeployment.CurrentDeployment.CurrentVersion.ToString();
    }
    catch (InvalidDeploymentException)
    {
        //// you cannot read publish version when app isn't installed 
        //// (e.g. during debug)
        version = "not installed";
    }
    

    如评论所述,调试时无法获取发布版本,建议处理InvalidDeploymentException

    【讨论】:

    • 如果您首先检查 ApplicationDeployment.IsNetworkDeployed 这将让您知道 CurrentDeployment 是否可用。这样你就不必处理异常,但可以做一个简单的 if-else。
    • 这回答了一半的问题,但不是关于在 WPF 显示中显示它的部分。你如何绑定一个组件然后使用这个版本变量?
    • 这在 .net core 中仍然有效吗?
    • @hybrid2102 效果很好。我在 WPF .NET Core 3.1 上使用了这些代码。我将文本版本 1.1.1.1 添加到项目 -> 属性 -> 包选项卡 -> 包版本。我可以在运行时获得正确的字符串(包括调试)。
    【解决方案3】:

    使用GetEntryAssembly 而不是GetExecutingAssembly 从当前可执行文件而不是从当前执行的DLL 中获取版本,如下所示:

    string version = System.Reflection.Assembly.GetEntryAssembly().GetName().Version.ToString();
    

    【讨论】:

      【解决方案4】:
      string version = Assembly.GetExecutingAssembly().GetName().Version.ToString(); 
      
      Console.WriteLine(version);
      

      【讨论】:

      • 我不明白为什么这个回复和下面的回复描述了相同的答案,但是一个得到+17,另一个得到-1
      • @Smith.Lai 因为是相同的答案,除了 2 年后。
      • @Smith.Lai 你说得对,我已经编辑了other answer 来清理一下。它比这个答案更有效,这只是top-voted answer 的欺骗。
      猜你喜欢
      • 1970-01-01
      • 2012-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-18
      • 2012-03-22
      • 1970-01-01
      相关资源
      最近更新 更多