c# - 如何在 Windows 窗体上显示 ClickOnce 版本号

标签 c# .net deployment clickonce

我有一个部署到两个不同位置的 Windows 窗体应用程序。

  • 内联网 - ClickOnce
  • 互联网 - 通过 Windows 安装程序安装在 citrix 场上

我显示单击一次部署版本的 ClickOnce 版本号 ApplicationDeployment.IsNetworkDeployed

if (ApplicationDeployment.IsNetworkDeployed)
        return ApplicationDeployment.CurrentDeployment.CurrentVersion;

但对于非点击应用程序,我不确定如何检索 clickonce 版本,除非我在程序集信息中硬编码版本号。

是否有自动检索非 clickonce 部署版本的 ClickOnce 版本号的方法?

最佳答案

  1. 将对 System.Deployment 的程序集引用添加到您的项目。

  2. 在您的类文件中导入命名空间:

    VB.NET:

    Imports System.Deployment.Application
    

    C#:

    using System.Deployment.Application;
    
  3. CurrentVersion 属性中检索 ClickOnce 版本。

    您可以从 ApplicationDeployment.CurrentDeployment.CurrentVersion 属性获取当前版本。这将返回 System.Version对象。

    注意(来自 MSDN):

    CurrentVersion will differ from UpdatedVersion if a new update has been installed but you have not yet called Restart. If the deployment manifest is configured to perform automatic updates, you can compare these two values to determine if you should restart the application.

    注意:CurrentDeployment 静态属性仅在使用 ClickOnce 部署应用程序时才有效。因此,在访问此属性之前,您应该首先检查 ApplicationDeployment.IsNetworkDeployed 属性。它在调试环境中总是会返回一个 false。

    VB.NET:

    Dim myVersion as Version
    
    If ApplicationDeployment.IsNetworkDeployed Then
       myVersion = ApplicationDeployment.CurrentDeployment.CurrentVersion
    End If
    

    C#:

    Version myVersion;
    
    if (ApplicationDeployment.IsNetworkDeployed)
       myVersion = ApplicationDeployment.CurrentDeployment.CurrentVersion;
    
  4. 使用 Version 对象:

    从这里开始,您可以使用标签中的版本信息,比如在“关于”表单中,以这种方式:

    VB.NET:

    versionLabel.Text = String.Concat("ClickOnce published Version: v", myVersion)
    

    C#:

    versionLabel.Text = string.Concat("ClickOnce published Version: v", myVersion);
    

    (Version 对象被格式化为由四部分组成的数字 (major.minor.build.revision)。)

关于c# - 如何在 Windows 窗体上显示 ClickOnce 版本号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1098112/

相关文章:

c# - 如何将文件保存为不同的用户

c# - 转换导致不同的 GetType

c# - 在 Console.WriteLine 方法中格式化字符串

c# - 在pdf文件中搜索字符串

java - 将 Tomcat 中的 .war 应用程序部署到 root

git - 跟踪已部署应用程序的文件

php - 部署一个小型 PHP + MySQL 服务

c# - 创建编译错误而不是运行时错误

c# - Win32Exception 参数不正确

.net - 通过非泛型 IDictionary 枚举时,无法将泛型字典项转换为 DictionaryEntry