在针对 v4 和 v4.5 的 nuget 包中引用常见的 DLL

Referencing common DLL's in nuget package targetting v4 and v4.5

我有一个 nuget 包,其中包括从我的项目构建的 DLL,以及一些支持的第 3 方 DLL。

这以前在 .nuspec 文件中的条目是这样的:

<files>
    <file src="..\..\Libraries\*.dll" target="lib" />
</files>

Nuget 将正确引用第 3 方库以及我的项目的输出。 但是,我更新了我的项目以同时针对 .NET v4 和 v4.5 - 但在这两种情况下第三部分 DLL 是相同的。

我已将我的 nuspec 文件更改为:

<files>
    <file src="..\..\Libraries\*.dll" target="lib" />
    <file src="bin\release.0\MyProject.dll" target="lib\net40" />
    <file src="bin\release.5\MyProject.dll" target="lib\net45" />
</files>

并且 nuget 包在正确的位置包含所有正确的文件。但是,安装包后,只引用了 "MyProject.dll",没有引用第 3 方 DLL。

我要将 target="lib" 更改为什么,以确保所有框架版本都引用 DLL?

谢谢

您应该将第三方 dll 放入 lib\net40 和 lib\net45 目录。

NuGet 将查看项目的目标框架并在 NuGet 包的 lib 目录中查找匹配项。当它找到匹配项时,它只会添加对该特定 lib 目录中的 dll 的引用。因此,.NET 4.0 项目只会将引用添加到 lib\net40 目录中的 dll。