为什么nuget dll显示在Visual Studio 2019的项目根目录中



我的解决方案中有一个SDK项目。我需要添加一个NuGet包("customLib.net"(,它提供了查找文件之间差异的功能。

如果您创建一个简单的.Net Framework 4.7.2控制台应用程序并将此NuGet添加到其中,则它将自动下载它以及所有依赖项,包括";customLib.redisp.windows.x64";。正如我所理解的";customLib.net.dll";是.net的API;customLib.dll">(来自"customLib.redisp.windows.x64"包(本身就是一个引擎,为win-x64编译。程序包存储在SolutionFolder/packages中。还有一个package.config文件,其中包含所有必需的引用。一切如预期。

但是,如果要将相同的NuGet包添加到具有相同目标的SDK(类库(项目中:.Net Framework 4.7.2,它还应该下载NuGet包以及所有依赖项。确实如此。但它没有将包存储在SolutionFolder/packages文件夹中,也没有任何package.config文件。它将它们存储在C驱动器上的全局NuGet存储中。问题是,当我启动应用程序时,它在运行时抛出异常:

"Unable to load DLL 'customLib': The specified module could not be found.". 

输出文件夹中不存在此dll。我通过下载";customLib.redist.windows.x64">NuGet包到项目,尽管事实上"customLib.net">已经有对此包的引用。这对我来说有点奇怪,,以下是问题:

  1. 为什么,如果;customLib.net"取决于";customLib.redist.windows.x64">,它不将依赖dll复制到输出文件夹?同时,控制台应用程序复制这两个库
  2. 为什么在下载"customLib.redist.windows.x64">Nu获取"customLib.dll">文件显示在我的Visual Studio项目根目录中;C: \Users\MyUsr\.nuget\packages\customLib.redisp.windows.x64\1.0.1\runtimes\win-x64">

根据描述,我可以假设您有.NET标准控制台应用程序,但您在其中添加了.NET核心类库。这就是您面临此类问题的原因。

因为在.NET核心库项目中,没有package.config文件,引用是直接添加到csproj文件中的。以及下载到用户目录中的软件包,而不是软件包文件夹。

因此,您需要将.Net标准类库添加到您的项目中,而不是添加.Net核心库

要了解更多信息,请参阅.NET Core和.NET标准类库项目类型之间的区别是什么?

最新更新