Я столкнулся с этой проблемой в двух сценариях.
Во-первых, когда я пытаюсь построить свое решение из командной строки, используя msbuild.exe. Во-вторых, когда я пытаюсь собрать sln и содержащие проекты на моем сервере сборки, используя TFS и CI.
Я получаю ошибки, утверждая, что ссылки отсутствуют. При проверке моего локального каталога сборки и сервера TFS я вижу, что папка / packages не создается, а пакеты nuget не копируются. Следование инструкциям, приведенным в ответе Александра, http://nuget.codeplex.com/workitem/1879 также не сработало для меня.
Я включил восстановление пакетов через VS2010, и я видел, что сборки работают только из VS2010. Опять же, использование msbuild fails. Мой обходной путь, вероятно, совершенно недопустим, но для моей среды это все работает как из локальной командной строки, так и из сборки CI в TFS.
Я вошел в. \ Nuget и изменил эту строку в файле .nuget \ NuGet.targets:
из:
<RestoreCommand>$(NuGetCommand) install "$(PackagesConfig)" -source "$(PackageSources)" -o "$(PackagesDir)"</RestoreCommand>
to: (обратите внимание, без кавычек вокруг переменных)
<RestoreCommand>$(NuGetCommand) install $(PackagesConfig) -source $(PackageSources) -o $(PackagesDir)</RestoreCommand>
Я понимаю, что если в моих каталогах есть пробелы, это не получится, но у меня нет пробелов в моих каталогах, и поэтому этот обходной путь заставил мои сборки завершиться успешно ... на данный момент.
Я скажу, что включение регистрации уровня диагностики в вашей сборке поможет показать, какие команды выполняет msbuild. Это то, что заставило меня временно взломать файл целей.