我有一个可与本地 SQLite 和 Entity Framework Core 配合使用的 WPF 应用程序。我想使用 ClickOnce 分发我的应用程序。
当我使用 Visual Studio 2017 运行它时,一切正常。但是当我使用 ClickOnce 时,应用程序在启动时崩溃了。崩溃发生得太早了,所以我什至无法记录异常。一段时间后,我发现发布文件夹中缺少一些 dll。例如系统.运行时。所有引用都是 NuGet 包。然后我发现尽管我在项目中引用了 dll,但 ClickOnce 应用程序文件列表并不包含它。
我目前找到的唯一解决方案是将丢失的 dll 添加为项目根目录中的文件,并将构建操作设置为内容。在 ClickOnce 应用程序文件对话框中,我将发布状态设置为“包含”。
它现在可以工作,但看起来不是最好的方法。问题是为什么他们一开始就被错过了。更有可能的是我错过了一些东西或者我不明白问题的根源。
UPD:
您可以找到示例代码here https://github.com/ichepikov/ClickOnceTest/tree/missing-dlls.
它可以在 Visual Studio 中运行,但当您尝试将其安装为 ClickOnce 应用程序时,它会在启动时崩溃。
UPD:该问题已在 Visual Studio Professional 版本 15.6.1 中修复
有两种方法可以解决这个问题.
首先,你必须走特性 → Publish → 申请文件,并在这个地方,制作你的DLL文件include在你的项目中
但如果不起作用,请转到参考文献并制作 DLL 文件复制本地=假。您添加一个 DLL 文件,例如现有项目在你的项目中并使它们始终复制.
它将正常工作。
但对于你的样本,我看了这个并解决了它。看这张图片:
您有四个 DLL 文件。你需要为他们这样做:
System.Diagnostics.Tracing.dll
System.Reflection.dll
System.Runtime.dll
System.Runtime.Extensions.dll
首先去你的参考文献并制作它们复制本地错误:
然后转到每个DLL文件的路径并添加它们,如下所示现有项目,然后将它们全部复制到输出目录 始终复制
Then Publish并像图中所示运行它。我从发布文件运行它并且它有效。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)