dan*_*die 63 .net c# deployment clickonce
我有一个Windows窗体应用程序,部署到两个不同的位置.
我为Click-once部署版本显示ClickOnce版本号ApplicationDeployment.IsNetworkDeployed.
if (ApplicationDeployment.IsNetworkDeployed)
return ApplicationDeployment.CurrentDeployment.CurrentVersion;
Run Code Online (Sandbox Code Playgroud)
但对于非点击应用程序,我不知道如何检索clickonce版本,除非我在汇编信息中硬编码版本号.
是否有自动检索非Clickonce部署版本的ClickOnce版本号?
小智 98
将程序集引用添加System.Deployment到项目中.
在类文件中导入名称空间:
VB.NET:
Imports System.Deployment
Run Code Online (Sandbox Code Playgroud)
C#:
using System.Deployment;
Run Code Online (Sandbox Code Playgroud)从CurrentVersion属性中检索ClickOnce版本.
您可以从ApplicationDeployment.CurrentDeployment.CurrentVersion酒店获取当前版本.这会返回一个System.Version对象.
注意(来自MSDN):
CurrentVersion将不同于UpdatedVersion是否已安装新的更新但尚未调用Restart.如果部署清单配置为执行自动更新,则可以比较这两个值以确定是否应重新启动应用程序.
注意:CurrentDeployment静态属性仅在使用ClickOnce部署应用程序时有效.因此,在访问此属性之前,应ApplicationDeployment.IsNetworkDeployed首先检查该属性.它总是在调试环境中返回false.
VB.NET:
Dim myVersion as Version
If ApplicationDeployment.IsNetworkDeployed Then
myVersion = ApplicationDeployment.CurrentDeployment.CurrentVersion
End If
Run Code Online (Sandbox Code Playgroud)
C#:
Version myVersion;
if (ApplicationDeployment.IsNetworkDeployed)
myVersion = ApplicationDeployment.CurrentDeployment.CurrentVersion;
Run Code Online (Sandbox Code Playgroud)使用Version对象:
从这里开始,您可以使用标签中的版本信息,例如在"关于"表单中,以这种方式:
VB.NET:
versionLabel.Text = String.Concat("ClickOnce published Version: v", myVersion)
Run Code Online (Sandbox Code Playgroud)
C#:
versionLabel.Text = string.Concat("ClickOnce published Version: v", myVersion);
Run Code Online (Sandbox Code Playgroud)
(Version对象被格式化为一个由四部分组成的数字(major.minor.build.revision).)
Jar*_*Par 11
不,我不相信有办法.我相信ClickOnce信息来自清单,该清单仅在ClickOnce部署中可用.我认为硬编码版本号是您的最佳选择.
.NET (Core) 7 及更高版本的解决方案
在.net Core上,您可以从环境变量中读取版本号ClickOnce_CurrentVersion。
string versionString = Environment.GetEnvironmentVariable("ClickOnce_CurrentVersion") ?? "0.0.0.0";
Version version= Version.Parse(versionString);
MessageBox.Show(version.ToString());
Run Code Online (Sandbox Code Playgroud)
查看文档