MSBuild UsingTask и разрешение ссылок


Я использую NuGet, чтобы втянуть YUICompressor.NET.MSBuild, который в свою очередь втягивает YUICompressor.NET и EcmaScript.Net.

Он также добавляет ссылки на все три библиотеки DLL в моем веб-проекте. Затем я могу добавить ссылку UsingTask следующим образом:

<UsingTask TaskName="CssCompressorTask" AssemblyFile="$(SolutionDir)packagesYUICompressor.NET.MSBuild.2.3.0.0libNET20Yahoo.Yui.Compressor.Build.MsBuild.dll" />

И затем использовать задачу для сжатия моего Javascript / CSS в AfterBuild целевой объект

Однако я не хочу ссылаться на эти библиотеки DLL в моем веб-проекте (поскольку они на самом деле не являются частью того, что я отправляю)... но когда я удаляю ссылки, то CssCompressorTask больше не может найдите две другие зависимые библиотеки DLL (они находятся в разных папках от папки /packages - это нормально, если они находятся рядом с Yahoo.Yui.Compressor.Build.MsBuild.dll)

Хотите верьте, хотите нет, но я потратил много часов, пытаясь решить эти зависимости.: Сначала я попытался изменить AssemblySearchPaths, чтобы включить все другие подпапки /packages, как здесь:

Https://github.com/BenPhegan/NuGetAutoTransitiveDependencies

Это не сработало, поэтому я попытался создать встроенный распознаватель сборок, как здесь:

MSBuild UsingTask Resolve References

Это тоже не работает. На данный момент я думаю, что единственный выбор, который у меня есть, - это получить зависимые библиотеки DLL вместе с библиотекой UsingTask, так или иначе... но это похоже на то, что мой MSBuild foo подводит меня : /

Любые идеи очень ценятся! Спасибо.

2 5

2 ответа:

Мне нужна была моя пользовательская задача, чтобы использовать API JSON (NewtonSoft). MSBuild не загружал внешнюю библиотеку dll, пока я не запустил gacutil /i [path to dll].

Ок, v2.4.0.0+ теперь включите библиотеки DLL