已发布版本 WPF .NET Core

sco*_*dro 12 c# wpf clickonce visual-studio .net-core

我希望使用类似于下面的代码,但在 .NET Core WPF C# 应用程序中。这是我以前用过的。

public static string GetVersion()
{
   if (System.Deployment.Application.ApplicationDeployment.IsNetworkDeployed)
   {
      Version myVersion = ApplicationDeployment.CurrentDeployment.CurrentVersion;
      return $"Version {myVersion}";
   }
   return "Version not deployed";
}
Run Code Online (Sandbox Code Playgroud)

.NET Core 中有等效的吗?

tha*_*guy 7

围绕此问题和ClickOnce部署有一个已解决的问题

ApplicationDeployment类不可用 - 该类的实现System.Deployment assembly属于 .NET Core 3.1 或 .NET 5

我们将有一种方法来公开该类启用的一些属性,即 URL 参数和更新状态。但是,对于 .NET 5 版本,这项工作无法完成。我们将在 .NET 6 预览版之一中启用它。以下是跟踪问题:#27 和 #53

ApplicationDeployment无法在已部署的 ClickOnce 应用程序中使用类,但可以使用主要的 ClickOnce 体验。它包括:创建 ClickOnce 部署(清单)、发布应用程序、创建和发布更新。您的应用程序将进行自动更新检查(如果用户接受,则进行更新) - 这部分由 ClickOnce 运行时和新的 Launcher 工具处理,该工具成为 .NET Core 3.1 和 .NET 5 应用程序的 ClickOnce 部署的入口点。

因此,目前似乎没有办法直接在 .NET Core 中执行此操作。

  • 好吧,我知道它不在框架中。但还有什么选择呢?我仍然想显示 CurrentVersion,我还想显示 CurrentDeployment.DataDirectory (所以用户现在 mdf 文件在哪里)。为了解决第一个问题,我可以硬编码一个字符串,并在有新版本时更改它(不好)。对于第二个问题我不知道。 (4认同)
  • 那么如何才能间接做到这一点呢? (2认同)