在针对 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。
我有一个 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。