ClickOnce 部署未按预期安装

3
我有一个使用.NET 4.61开发的WPF应用程序,并使用ClickOnce部署该应用程序。发布阶段运行正常,但当我尝试安装时,安装程序按预期下载.NET 4.61。完成后(重新启动后),它会出现错误,指出需要安装版本为4.0.2.0的System.drawing.primitives.dll程序集到GAC中。
难道不是.NET461默认情况下将程序集安装在GAC中吗?
信息:
- Windows 10 64位 - Visual Studio 2017
PS:我的开发机器上也存在同样的问题。

System.drawing.primitives.dll 看起来是 .net core 的一个包:https://www.nuget.org/packages/System.Drawing.Primitives/。我认为你不能指望它随 .net461 安装而安装。 - Vince
但我根本不使用 .net core!!! 或者 Prism.Wpf 使用它吗? - Houss_gc
我确实查看了Prism.Wpf的依赖项,但没有依赖于System.Drawing.Primitives。 - Houss_gc
我遇到了完全相同的问题,并发现有人已经报告了它。你可能想要关注 https://developercommunity.visualstudio.com/content/problem/111414/clickonce-with-dependcy-with-netstandard-does-not.html - cilerler
到目前为止,我所看到的是部署文件 .application 抛出了错误,而不是实际的 .exe - cilerler
好的,谢谢。我猜这是一个与EF Core相关的问题。 - Houss_gc
3个回答

2
我能够复制这个问题,但不知道足够多的信息来清晰地回答你的问题,但也许可以帮助更有经验的人来回答。这似乎是与一个WPF应用程序引用.NET Standard 2.0类库相关的问题。
以下是重现步骤:
  • 在Visual Studio 2017中使用文件>新建项目>Visual C#>WPF应用程序(.NET Framework)创建一个新解决方案。
  • 构建和发布。WPF应用程序运行良好。
  • 向解决方案添加一个新项目,使用文件>添加>新项目>Visual C#>.NET Standard>类库>.NET Standard (.NET Framework 4.6.1)
  • 从WPF应用程序向.NET Standard类库添加引用。
  • 构建和发布并尝试安装。
得到一个错误"无法安装或运行该应用程序。该应用程序要求首先安装程序集System.Drawing.Primitives版本4.0.2.0在全局程序集缓存中。"

Error Dialog

我已经在 Git 中复制了这个简单的项目。

https://github.com/colhountech/WPF_With_NetStandard

希望这能帮助某人解决问题。我也遇到了同样的问题,正在尝试解决一个简单的WPF项目,但一直不成功。

是的,我也能够复制它,我从零开始重新创建了我的应用程序并添加了一些内容和发布,当我创建使用efcore的数据访问库时,我不得不添加.net standard以消除一个错误,该错误指出在.netstandard中定义的Object类是未知的,一旦添加了(.net standard),我就遇到了clickonce bug。 - Houss_gc

2

我摆脱了这个烦恼。花费了我很多时间浏览网页和尝试。实际的更改要少得多。

对我有用的方法:

  • 如果您有它们,请从项目文件中删除先前提到的所有额外包含文件。
  • 添加“AutoGenerateBindingRedirects”,如此处所述。
  • 切换到.NET 4.7.1,您可以在此处找到。

1
我遇到了同样的问题。为了解决它,我不得不在“发布”选项卡上的“应用程序文件...”中包含所有所需的软件包。

发布配置截图


是的,我也为我的应用程序做了同样的事情,但在我看来这不是一个好的解决方案,ClickOnce 应该正确处理 EF Core。 - Houss_gc

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接