问题描述
我正在研究具有多个项目的解决方案。在其中一个项目(比如 Project A
)中,我安装了一个 nuget 包,比如 Utility
,我想使用的函数在 Utility.dll
中。这会将 Utility.dll
的所有依赖项添加到 Project A
的项目引用中。
现在,我在同一个解决方案中仅将 Utility.dll
添加到另一个 Project B
,方法是右键单击 --> 添加引用 --> 现有项目 --> 浏览 --> 添加。
这不会在项目引用中添加 Utility.dll
的依赖项,而是在构建所有依赖项后将其复制到 /bin/debug
文件夹中。
我想知道:-
- msbuild 能否在运行时解析 Utility.dll 的依赖并自动复制其依赖?
- 如果 msbuild 可以解析依赖项,它是引用某个清单文件还是反汇编一个 dll 并读取其依赖项,因为
Utility.dll
的依赖项位于/package
中的不同文件夹中?
解决方法
MSBuild 仅查找相关文件(pdb、xml、..)但仅查找经典 NuGet 引用。
我建议只使用 NuGet 来引用包,而不要在使用 packages.config
时手动添加对包文件夹的直接引用。
对于在 csproj 中使用 PackageReference
而不是旧的 packages.config 方法的项目,默认情况下这些依赖项也会传递(Migration Guide)