Недавно я начал использовать NuGet для управления внешними пакетами. Пока что мне это нужно только для NLog. Все работает отлично, когда я создаю проект в VS 2012. Однако я пытаюсь использовать TeamCity как сервер CI (я довольно новичок в CI), и это дает мне следующую ошибку:
[Csc] SomeNamespace\SomeClass.cs(10, 7): error CS0246:
The type or namespace name 'NLog' could not be found
(are you missing a using directive or an assembly reference?)
(эта ошибка повторяется повсюду, где я использую NLog)
Теперь я не включил папку "packages/" в SVN, так как считал хорошей практикой не включать двоичные файлы и позволить MSBuild в TeamCity загружать их самостоятельно. Однако это явно не делает этого. Я включаю файл package.xml в SVN. Что я могу проверить, чтобы увидеть, что происходит не так?
Обновление Благодаря @DavidBrabant меня подтолкнули в правильном направлении. Однако теперь я получаю следующую ошибку в TeamCity:
Package restore is disabled by default. To give consent, open the Visual Studio Options dialog,
click on Package Manager node and check 'Allow NuGet to download missing packages during build.'
Однако я не в Visual Studio, а TeamCity, поэтому я не знаю, как установить "согласие" на true! Я попытался установить RestorePackages в "true" в файле NuGet.targets:
<RestorePackages Condition=" '$(RestorePackages)' == '' ">true</RestorePackages>
но это не сработало.
Обновление 2 Чтобы сделать это, я также установил следующее свойство NuGet.targets:
<RequireRestoreConsent Condition=" '$(RequireRestoreConsent)' != 'true' ">false</RequireRestoreConsent>
Это сделало выполнение сборки успешным!