我有一个nuget包,它依赖于其他几个包(例如Newtonsoft.Json)。Package并不打算用作类库,它只添加了自定义的MSBuild操作,因此package的结构如下所示:
-package CustomBuildAction
|-lib/net45/CustomBuildAction.dll
|-build/CustomBuildAction.targets当我安装包时,CustomBuildAction.targets是从csproj正确引用的,但是当我试图运行build时,我得到一个错误:
无法从程序集"path to dll/CustomBuildAction.dll“加载"CustomBuildAction”任务。无法加载文件或程序集“”Newtonsoft.Json.dll,Version=...“”或者它的一个依赖项。
我已经将Newtonsoft.Json.dll作为包依赖项包含到nuspec文件中,nuget将其显示为依赖项,但MSBuild无法解析它。对我来说,问题似乎是我使用packages文件夹中的相对路径(相对于构建文件夹)从.targets文件引用了CustomBuildAction.dll,即:
../lib/net45/CustomBuildAction.dll但是这个dll并不打算放在build output文件夹中,在这个文件夹中它可以找到它的所有依赖项。如何解决此问题?我是否应该将依赖项直接包含到包中,或者有其他方法来解决它?
发布于 2017-05-03 11:47:26
MSBuild将解析包含任务程序集的文件夹中的任务依赖项。不幸的是,这意味着您需要在CustomBuildAction.dll文件的同时将Newtonsoft.Json.dll包含在NuGet包中。
若要防止程序集在生成输出中结束,请将程序集放入包中的其他文件夹中。例如,tools/只要它不在lib中,它就不会被视为可供引用的程序集。
https://stackoverflow.com/questions/43612991
复制相似问题