我正在使用 NuGet 拉入 YUICompressor.NET.MSBuild
,进而拉入 YUICompressor.NET
和 EcmaScript.Net
.
它还在我的 Web 项目中添加了对所有三个 DLL 的引用。
然后我可以像这样添加 UsingTask 引用:
<UsingTask TaskName="CssCompressorTask" AssemblyFile="$(SolutionDir)\packages\YUICompressor.NET.MSBuild.2.3.0.0\lib\NET20\Yahoo.Yui.Compressor.Build.MsBuild.dll" />
然后使用任务在
AfterBuild
中压缩我的 Javascript/CSS目标但是,我不想在我的 Web 项目中引用这些 DLL(因为它们实际上不是我发布的内容的一部分)......但是当我删除这些引用时,CssCompressorTask 就无法再找到其他两个依赖的 DLL (它们位于
/packages
文件夹之外的不同文件夹中 - 如果它们位于 Yahoo.Yui.Compressor.Build.MsBuild.dll
旁边就可以了)信不信由你,我花了几个小时试图解决依赖关系:
首先我尝试修改
AssemblySearchPaths
包括所有其他/packages 子文件夹,如下所示:https://github.com/BenPhegan/NuGetAutoTransitiveDependencies
这不起作用,所以我尝试创建一个内联程序集解析器,如下所示:
MSBuild UsingTask Resolve References
这也行不通。目前,我认为我唯一的选择是将依赖的 DLL 与 UsingTask dll 放在一起,以一种或另一种方式......但这感觉就像我的 MSBuild foo 失败了:/
任何想法都非常感谢!谢谢。
最佳答案
我需要我的自定义任务来使用 JSON API (NewtonSoft)。直到我运行 gacutil /i [path to dll]
,MSBuild 才加载外部 dll .
关于MSBuild UsingTask 和解析引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18364243/