从 nuget 包引用 nuget 包



我有一个依赖于其他几个的 nuget 包(例如Newtonsoft.Json)。 包不打算用作类库,它只添加自定义 MSBuild 操作,因此包的结构如下所示:

-package CustomBuildAction
|-lib/net45/CustomBuildAction.dll
|-build/CustomBuildAction.targets

当我安装软件包时CustomBuildAction.targets从csproj正确引用,但是当我尝试运行build时,我收到一个错误:

无法从程序集"路径到 dll/CustomBuildAction.dll"加载"自定义构建操作"任务。无法加载文件或程序集"Newtonsoft.Json.dll,版本=..."或其依赖项之一。

我已经将Newtonsoft.Json.dll作为包依赖项包含在 nuspec 文件中,nuget 将其显示为依赖项,但 MSBuild 无法解决它。对我来说,问题似乎是我在包文件夹中使用相对路径(相对于构建文件夹)从 .targets 文件中引用CustomBuildAction.dll,即:

../lib/net45/CustomBuildAction.dll

但此 dll 不应放置在生成输出文件夹中,在该文件夹中可以找到其所有依赖项。 如何解决此问题?我应该将依赖项直接包含在包中还是有另一种解决方法?

MSBuild 将从包含任务程序集的文件夹中解析任务依赖项。遗憾的是,这意味着您需要在 NuGet 包中与 CustomBuildAction.dll 文件一起包含 Newtonsoft.Json.dll。

若要防止程序集最终出现在生成输出中,请将程序集放入包中的其他文件夹中。例如,tools/只要它不在 lib 中,它就不会被视为可供引用的程序集。

最新更新