【发布时间】:2022-01-01 17:55:55
【问题描述】:
我的解决方案中有一个 SDK 项目。我需要添加一个 NuGet 包(“customLib.net”),它提供了查找文件之间差异的功能。
如果您创建一个简单的 .Net Framework 4.7.2 控制台应用程序并将此 NuGet 添加到其中,那么它将自动下载它以及所有依赖项,包括“ customLib.redist.windows.x64"。据我了解,“customLib.net.dll”是 .net 的 API,“customLib.dll”(来自“customLib.redist.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" 已经引用了这个包。这对我来说有点奇怪,下面是问题:
- 为什么,如果 "customLib.net" 依赖于 "customLib.redist.windows.x64",它不会将依赖的 dll 复制到输出文件夹?同时,控制台应用程序会复制这两个库。
- 为什么在下载 "customLib.redist.windows.x64" NuGet 后 "customLib.dll" 文件显示在 Visual Studio 的项目根目录中,完整路径为“ C:\Users\MyUsr\.nuget\packages\customLib.redist.windows.x64\1.0.1\runtimes\win-x64"?
【问题讨论】:
标签: c# .net visual-studio nuget clr