我有一个部署到两个不同位置的 Windows 窗体应用程序。
- 内联网 - ClickOnce
- 互联网 - 通过 Windows 安装程序安装在 citrix 场上
我显示单击一次部署版本的 ClickOnce 版本号 ApplicationDeployment.IsNetworkDeployed
。
if (ApplicationDeployment.IsNetworkDeployed)
return ApplicationDeployment.CurrentDeployment.CurrentVersion;
但对于非点击应用程序,我不确定如何检索 clickonce 版本,除非我在程序集信息中硬编码版本号。
是否有自动检索非 clickonce 部署版本的 ClickOnce 版本号的方法?
最佳答案
将对
System.Deployment
的程序集引用添加到您的项目。在您的类文件中导入命名空间:
VB.NET:
Imports System.Deployment.Application
C#:
using System.Deployment.Application;
从
CurrentVersion
属性中检索 ClickOnce 版本。您可以从
ApplicationDeployment.CurrentDeployment.CurrentVersion
属性获取当前版本。这将返回System.Version
对象。注意(来自 MSDN):
CurrentVersion
will differ fromUpdatedVersion
if a new update has been installed but you have not yet calledRestart
. 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;
使用
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/