【问题标题】:Referencing common DLL's in nuget package targetting v4 and v4.5在针对 v4 和 v4.5 的 nuget 包中引用通用 DLL
【发布时间】:2015-01-30 12:39:13
【问题描述】:

我有一个 nuget 包,其中包含从我的项目构建的 DLL,以及一些支持 3rd-party DLL。

这在以前使用 .nuspec 文件中的一个条目,如下所示:

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

Nuget 会正确引用第 3 方库以及我的项目的输出。 不过,我已经更新了我的项目以同时针对 .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?

谢谢

【问题讨论】:

    标签: c# .net nuget versioning


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢,这确实是我最终做的。希望有更好的东西,因为它会使包装的大小翻倍,但至少它可以工作。
    猜你喜欢
    • 2016-04-16
    • 2014-07-16
    • 1970-01-01
    • 2019-10-11
    • 1970-01-01
    • 2018-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多