在项目中手动引用 nuget 安装的 DLL

问题描述

我正在研究具有多个项目的解决方案。在其中一个项目(比如 Project A)中,我安装了一个 nuget 包,比如 Utility,我想使用的函数Utility.dll 中。这会将 Utility.dll 的所有依赖项添加Project A 的项目引用中。

现在,我在同一个解决方案中仅将 Utility.dll 添加到另一个 Project B方法是右键单击 --> 添加引用 --> 现有项目 --> 浏览 --> 添加

这不会在项目引用中添加 Utility.dll 的依赖项,而是在构建所有依赖项后将其复制到 /bin/debug 文件夹中。

我想知道:-

  1. msbuild 能否在运行时解析 Utility.dll 的依赖并自动复制其依赖?
  2. 如果 msbuild 可以解析依赖项,它是引用某个清单文件还是反汇编一个 dll 并读取其依赖项,因为 Utility.dll 的依赖项位于 /package 中的不同文件夹中?

解决方法

MSBuild 仅查找相关文件(pdb、xml、..)但仅查找经典 NuGet 引用。

我建议只使用 NuGet 来引用包,而不要在使用 packages.config 时手动添加对包文件夹的直接引用。

对于在 csproj 中使用 PackageReference 而不是旧的 packages.config 方法的项目,默认情况下这些依赖项也会传递(Migration Guide