【发布时间】:2017-04-25 14:06:42
【问题描述】:
我有一个依赖于其他几个包的 nuget 包(例如Newtonsoft.Json)。
包不打算用作类库,它只添加自定义 MSBuild 操作,因此包的结构如下所示:
-package CustomBuildAction
|-lib/net45/CustomBuildAction.dll
|-build/CustomBuildAction.targets
当我安装包时,CustomBuildAction.targets 是从 csproj 正确引用的,但是当我尝试运行 build 时,我收到一个错误:
无法从程序集“dll/CustomBuildAction.dll 的路径”加载“CustomBuildAction”任务。无法加载文件或程序集“Newtonsoft.Json.dll,Version=...”或其依赖项之一。
我已将Newtonsoft.Json.dll 作为包依赖项包含在 nuspec 文件中,nuget 将其显示为依赖项,但 MSBuild 无法解决它。对我来说,问题似乎是我使用包文件夹中的相对路径(相对于构建文件夹)从 .targets 文件中引用CustomBuildAction.dll,即:
../lib/net45/CustomBuildAction.dll
但是这个 dll 并不打算放在构建输出文件夹中,在那里它可以找到它的所有依赖项。 我该如何解决这个问题?我应该在包中直接包含依赖项还是有其他方法来解决它?
【问题讨论】:
-
如果仅由自定义 MSBuild 操作使用,项目是否需要引用 CustomBuildAction.dll?我只需将它放在 .targets 文件旁边的构建目录中,然后从那里导入它。然后在构建目录中也有 Newtonsoft.Json.dll。
-
@Matt Ward 不,没有必要将它作为参考添加到项目中。将尝试将 dll 移动到构建文件夹中,有趣的想法
标签: c# dll msbuild nuget nuget-package