Проблема с PackageRestore, Silverlight и MSBuild

Мы используем NugetPowerTools PackageRestore, чтобы не помещать папку с нашими пакетами в свн. Это работает при создании проектов .NET с помощью Visual Studio и MSBuild. Он также позволяет создавать проекты Silverlight с помощью Visual Studio.

Однако когда мы используем MSBuild для сборки проектов Silverlight, сборка завершается ошибкой. Похоже, это связано с задачами в Microsoft.Silverlight.Common.targets. Глядя на выходные данные MSBuild, кажется, что он переходит к шагу GetXapOutputFile до того, как возникнет ошибка. Что-то либо на этом шаге, либо после этого шага ищет пакеты, но восстановление пакетов не запускается до тех пор, пока все это не будет выполнено. Построить во второй раз получится.

Чем отличается нажатие на сборку в Visual Studio от запуска MSBuild? Есть ли переключатель командной строки, который мне не хватает?

Если это не сработает, могу ли я каким-то образом изменить NuGet.targets, созданные NuGetPowerTools, или что-то, что я могу поместить в свой файл csproj, который изменит порядок выполнения этих шагов?

Я бегу MSBuild Solution.sln /target:Clean;Rebuild

Изменить

Я обновил NuGet до версии 1.6, удалил все следы NuGetPowerTools и теперь использую встроенную опцию восстановления пакетов. Я все еще получаю эту ошибку.

Редактировать еще раз

Дискуссия вокруг этого вопроса возобновилась. Я проверил это сейчас с NuGet v2.0, и это все еще происходит.


person cadrell0    schedule 08.12.2011    source источник
comment
Я нашел этот коммит на CodePlex. Я думаю, это может решить проблему. nuget.codeplex.com/SourceControl/changeset/0624b2a0fb2a. Надеюсь, он будет включен в следующий релиз.   -  person cadrell0    schedule 08.10.2012


Ответы (1)


Это было исправлено в NuGet версии 2.1.31002.9028. Подробности можно найти в этой фиксации.

Для существующих решений вам нужно будет удалить ./nuget/NuGet.targets из вашего решения. Сделайте это через проводник Windows. Удаление его через Visual Studio удалит только файл из вашего решения, он оставит файл в покое.

Сделав это, щелкните правой кнопкой мыши свое решение и выберите «Включить восстановление пакета». Это позволит воссоздать NuGet.targets с исправлением.

person cadrell0    schedule 12.10.2012