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

时间:2015-01-30 12:39:14

标签: c# .net nuget versioning

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

这之前在.nuspec文件中有一个条目,如下所示:

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

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

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

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

并且nuget包中包含正确位置的所有正确文件。但是,安装程序包后,只引用了“MyProject.dll”,第三方DLL不是。

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

由于

1 个答案:

答案 0 :(得分:1)

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

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