我有一个非常古老的Windows Forms应用程序,我正在尝试构建ClickOnce安装程序。
一切都很好,除了从应用程序中访问ApplicationDeployment.CurrentDeployment的任何尝试都会导致:
未设置应用程序标识。
我在网上发现了很多此类帖子,尤其是Stack Overflow,但人们在调试器下运行他们的应用程序,或者根本不是网络部署的本地版本。
我强调在我的情况下,应用程序是网络部署的(可离线使用)。我通过单击ClickOnce安装程序创建的桌面图标来运行它。更新工作正常(尝试发布更新以确保它有效)。
然而,无法访问ApplicationDeployment.CurrentDeployment。
我做错了什么?
实际上,我只是尝试阅读“程序和功能”小程序中显示的应用程序版本。有没有办法在不使用ClickOnce API的情况下读取此信息,例如,直接从注册表中读取(我知道这不太好)。
代码非常简单:
[STAThread]
static void Main(string[] argv)
{
System.Windows.Forms.MessageBox.Show(ApplicationDeployment.CurrentDeployment.CurrentVersion.ToString()); // Crash here
DoSomethingUseful();
}
答案 0 :(得分:0)
我使用属性完成了此操作并直接将其值绑定在XAML中。我正在使用WPF,但我希望这会有所帮助。
private string _verSion = ApplicationDeployment.CurrentDeployment.CurrentVersion.ToString();
public string verion
{
get
{
return _verSion;
}
set
{
_verSion = value;
OnPropertyChanged(() => verion);
}
}
我没有使用消息框完成此操作。你也可以试试。打开一个窗口“关于我们”或其他东西。取一个字符串并将其绑定到此属性。