首页 文章

从nuget包引用nuget包

提问于
浏览
0

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

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

当我安装包 CustomBuildAction.targets 正确地从csproj引用时,但是当我尝试运行构建时,我得到一个错误:

无法从程序集“path to dll / CustomBuildAction.dll”加载“CustomBuildAction”任务 . 无法加载文件或程序集“Newtonsoft.Json.dll,Version = ...”或其依赖项之一 .

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

../lib/net45/CustomBuildAction.dll

但是这个dll并不打算放在构建输出文件夹中,它可以找到它的所有依赖项 . 我该如何解决这个问题?我应该在包中包含依赖项还是有另一种方法来解决它?

1 回答

  • 0

    MSBuild将从包含任务程序集的文件夹中解析任务依赖性 . 不幸的是,这意味着你需要在你的CustomBuildAction.dll文件旁边的NuGet包中包含Newtonsoft.Json.dll .

    要防止程序集在构建输出中结束,请将程序集放入程序包中的其他文件夹中 . 例如,工具/只要它不在lib中,它就不会被视为可供引用的程序集 .

相关问题