gpt4 book ai didi

c# - WPF ClickOnce 遗漏引用

转载 作者:行者123 更新时间:2023-11-30 23:13:09 24 4
gpt4 key购买 nike

我有一个与本地 SQLite 和 Entity Framework Core 配合使用的 WPF 应用程序。我想使用 ClickOnce 分发我的应用程序。

当我使用 Visual Studio 2017 运行它时一切正常。但是当我使用 ClickOnce 时应用程序在启动时崩溃。崩溃太早了,所以我什至无法记录异常。一段时间后,我发现发布文件夹中缺少一些 dll。例如 System.Runtime。所有引用都是 NuGet 包。然后我发现尽管我在我的项目 ClickOnce 应用程序文件列表中引用了 dll,但不包含它。

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

它现在可以工作,但看起来不是最好的方法。问题是为什么他们首先被错过了。更有可能是我遗漏了什么,或者我不了解问题的根源。

更新:

您可以找到示例代码 here .

它可以在 Visual Studio 中运行,但当您尝试将其安装为 ClickOnce 应用程序时,它会在启动时崩溃。

UPD:问题已在 Visual Studio Professional 版本 15.6.1 中修复

最佳答案

解决这个问题有两种方法

首先,你必须去PropertiesPublishApplication Files,在这个地方,制作你的DLL文件包含在你的项目中

This place

但如果它不起作用,请转至 References 并使 DLL 文件 CopyLocal = False。您在项目中添加一个 DLL 文件,如 Existing Item 并使它们Copy Always

DLL file and copy always

它将正常工作。

但是对于您的示例,我看了这个并解决了它。看这张图片:

Enter image description here

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

System.Diagnostics.Tracing.dll
System.Reflection.dll
System.Runtime.dll
System.Runtime.Extensions.dll

首先转到您的引用并使它们Copy Local False:

Enter image description here

然后到每个DLL文件的路径下,像Existing Item一样添加,然后全部Copy To Output Directory CopyAlways

Enter image description here

然后发布它并像这张图片中那样运行它。我从发布文件运行它并且它有效。

关于c# - WPF ClickOnce 遗漏引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43756396/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com