Warm tip: This article is reproduced from serverfault.com, please click

.net-在Visual Studio 2019中以“单个文件”发布时,如何摆脱SNI.dll?

(.net - How do I get rid of SNI.dll when publishing as a "single file" in Visual Studio 2019?)

发布于 2020-11-28 00:16:17

我正在尝试发布一个非常简单的C#.Net 5.0 WinForms应用程序(单个文件输出),作为使用Visual Studio 2019 v16.8.2时从.Net Framework v4.6.1(以前的版本)进行移植的测试用例。发布选项如下:

  • 配置:发布| 任何CPU
  • 目标框架:net5.0-windows
  • 部署模式:框架相关
  • 目标运行时:win-x64
  • 产生单个文件:已启用
  • 启用ReadyToRun编译:已禁用

尽管此生成工作正常,并将两个源程序集合并为一个输出可执行文件,但它还在输出目录中包含SNI.dll。如果没有与可执行文件相同的文件夹中的DLL,应用程序将无法启动,所以我的问题是:如何删除对SNI.dll的依赖关系,使其不包含在已发布的可执行文件中并且不需要运行?

该应用程序是使用Crypto-API生成随机数据的简单前端。它不包含任何数据库功能,这就是为什么它令我感到困惑,以至于输出中包含了SNI.dll。据我所知,SNI.dll与Microsoft.Data.SqlClient有关,我不使用

任何帮助,将不胜感激。干杯

PS。我应该提到,我对Google的所有尝试都导致了有关“ SNI.dll丢失”,“ SNI.dll加载失败”或其他一些变体的文章。

Questioner
HumanBean
Viewed
11
Simon V. 2020-12-02 17:07:55

我遇到了与你相同的问题,并在此处找到了解决方案事实证明,默认情况下,本机库未捆绑在单个文件可执行文件中。你必须将标志IncludeNativeLibrariesForSelfExtract设置true为得到此行为。

你可能还想检查.deps.json文件(从构建文件夹中),以首先了解如何获得此依赖关系。