C# WPF ClickOnce错过的参考

C# WPF ClickOnce错过的参考,c#,.net,wpf,visual-studio,clickonce,C#,.net,Wpf,Visual Studio,Clickonce,我有一个WPF应用程序,可以与本地SQLite和实体框架核心一起工作。我想使用ClickOnce分发我的应用程序 当我使用Visual Studio 2017运行它时,一切正常。但当我使用ClickOnce时,应用程序一开始就崩溃了。崩溃来得太早,所以我甚至无法记录异常。过了一段时间,我发现在发布文件夹中丢失了一些DLL。例如System.Runtime。所有引用都是NuGet包。然后我发现,尽管我在我的项目中引用了DLL,但ClickOnce应用程序文件列表并没有包含它 目前我找到的唯一解决方

我有一个WPF应用程序,可以与本地SQLite和实体框架核心一起工作。我想使用ClickOnce分发我的应用程序

当我使用Visual Studio 2017运行它时,一切正常。但当我使用ClickOnce时,应用程序一开始就崩溃了。崩溃来得太早,所以我甚至无法记录异常。过了一段时间,我发现在发布文件夹中丢失了一些DLL。例如System.Runtime。所有引用都是NuGet包。然后我发现,尽管我在我的项目中引用了DLL,但ClickOnce应用程序文件列表并没有包含它

目前我找到的唯一解决方案是将丢失的DLL作为文件添加到项目的根目录中,并将构建操作设置为内容。在ClickOnce应用程序文件对话框中,我将发布状态设置为包含

它现在起作用了,但看起来不是最好的方法。问题是,为什么一开始就忽略了它们。更有可能是我遗漏了什么或者我不理解问题的根源

UPD:

您可以找到一个示例代码

它可以在VisualStudio中工作,但当您尝试将其安装为ClickOnce应用程序时,它一开始就会崩溃


UPD:问题在Visual Studio Professional 15.6.1版中已修复,即使将dll设置为“复制本地”,也不会复制dll,除非您在代码中实际使用dll。您可以尝试在代码中这样的地方添加System.Runtime,可能吗

     var dummytest = System.Runtime.GCSettings.IsServerGC;

解决这个问题有两种方法

首先,你必须去酒店→ 发表→ 应用程序文件,并在此处使DLL文件包含在项目中

但是如果它不起作用,请转到引用并使DLL文件CopyLocal=False。在项目中添加一个类似于现有项的DLL文件,并使其始终复制

它将正常工作

但对于你的样本,我看了这个,我解决了它。请看这张图片:

您有四个DLL文件。您需要为他们这样做:

System.Diagnostics.Tracing.dll
System.Reflection.dll
System.Runtime.dll
System.Runtime.Extensions.dll
首先,转到您的参考并使其复制本地False

然后转到每个DLL文件的路径,将它们像现有项一样添加,然后将所有DLL文件复制到输出目录CopyAlways

然后将其发布并运行,如图所示。我从publish file运行它,它可以正常工作。

基于上一期的第9期,我可以执行以下操作:

症状 针对.NET Framework 4.0的ClickOnce应用程序引用了
Microsoft.Bcl
Microsoft.Bcl.Async
软件包,安装后可能会遇到
TypeLoadException
或其他错误

决议 这是因为ClickOnce无法部署某些必需的程序集。作为解决方法,请执行以下操作:

  • 右键单击项目并选择添加现有项目
  • 浏览到System.Runtime.dll所在的文件夹
  • 文件名文本框中,粘贴到文件路径中
  • 单击“添加”按钮旁边的向下箭头,然后选择“添加为链接”
  • 在解决方案资源管理器中,按住CTRL键选择System.Runtime.dll
  • 右键单击所选内容,选择属性,然后将复制到输出目录更改为始终复制
  • 再版

  • @Pikoh如我所说:“尽管我在我的项目中引用了DLL,但ClickOnce应用程序文件列表不包含它”@Pikoh在我将它们作为常用文件添加到项目中之前,列表中根本没有它。您在引用“本地副本”中有吗设置为true?@Pikoh是的。我刚刚尝试使用一个测试应用程序添加Entity Framework核心包,它会自动显示在“应用程序文件”中,因此我无法为您提供更多帮助。对不起,正如我在问题中提到的,我在属性>发布>应用程序中没有库。第二个解决方案可以工作,但问题中已经描述了。我可以远程访问您的系统并查看系统上的代码和系统吗?谢谢您的兴趣和时间!在问题a中,您是否添加了指向的链接?您是否可以检查示例?或者它在您的环境中起作用?我更新了答案并进行了测试;)更重要的是-为什么会发生这种情况,您可以修复它,以便只使用copylocal=true。这是一个空洞的解决方案,确实有效。我的代码没有对库的直接引用,但应该添加它,因为其他库在我的代码中使用它。