C# ClickOnce:“未设置应用程序标识”
我有一个非常旧的应用程序,我目前正在尝试为它构建ClickOnce安装程序 一切正常,但从应用程序中访问ApplicationDeployment.CurrentDeployment的任何尝试都会导致: 未设置应用程序标识 我在web上发现了很多此类帖子,尤其是在StackOverflow上,但人们在调试器下运行应用程序,或者干脆不使用网络部署的本地版本 我强调,在我的例子中,应用程序是网络部署的,可以脱机使用。我通过单击ClickOnce安装程序创建的桌面图标来运行它。Update works fine尝试发布更新以确保其正常工作 但是,ApplicationDeployment.CurrentDeployment不可访问 我做错了什么 事实上,我只是试图读取程序和功能小程序中显示的应用程序版本。有没有一种方法可以不使用ClickOnce API直接从注册表读取这些信息?我知道这不好 代码非常简单:C# ClickOnce:“未设置应用程序标识”,c#,deployment,installation,clickonce,C#,Deployment,Installation,Clickonce,我有一个非常旧的应用程序,我目前正在尝试为它构建ClickOnce安装程序 一切正常,但从应用程序中访问ApplicationDeployment.CurrentDeployment的任何尝试都会导致: 未设置应用程序标识 我在web上发现了很多此类帖子,尤其是在StackOverflow上,但人们在调试器下运行应用程序,或者干脆不使用网络部署的本地版本 我强调,在我的例子中,应用程序是网络部署的,可以脱机使用。我通过单击ClickOnce安装程序创建的桌面图标来运行它。Update works
[STAThread]
static void Main(string[] argv)
{
System.Windows.Forms.MessageBox.Show(ApplicationDeployment.CurrentDeployment.CurrentVersion.ToString()); // Crash here
DoSomethingUseful();
}
我使用一个属性完成了这项工作,并将其值直接绑定到中。我正在使用WPF,但我希望这能有所帮助
private string _verSion = ApplicationDeployment.CurrentDeployment.CurrentVersion.ToString();
public string verion
{
get
{
return _verSion;
}
set
{
_verSion = value;
OnPropertyChanged(() => verion);
}
}
我没有使用消息框完成此操作。你也可以试试。打开一扇关于我们的窗户。获取一个字符串并将其绑定到此属性。您应该检查应用程序是否已通过网络部署!即使你认为这不是你的问题。只是为了最佳实践而这样做。只是为了添加到@Herdo comment的参考。ApplicationDeployment.IsNetworkDeployed