Ошибка MSBuild в поиске файла nuget.targets
Я пытаюсь создать проект csproj с msbuild, но у меня есть всевозможные странные проблемы, жалующиеся на то, что не найдут nuget.targets.
Я запускаю простейшую сборку командной строки с помощью MSbuild:
Msbuild Project.csproj
И это работает в моей обычной папке dev, но в другом месте папки он терпит неудачу с этими ошибками:
error MSB4019: The imported project "C:\BuildAgent\work\CableSense\.nuget\nuget.targets" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk.
Этот путь (C:\BuildAgent\work\CableSense\.nuget\nuget.targets
) на самом деле неправильный и отсутствует папка после работы (work\somefolder\cablesense), но я не понимаю, почему. Более странно, если я создам еще один проект, который является частью решения, то это работает, это просто этот проект.
csproj указывает местоположение файла nuget.targets следующим образом:
<Import Project="$(SolutionDir)\.nuget\nuget.targets" />
И SolutionDir определяется так:
<SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir>
Это то же самое, что и другой проект, который работает. Любые идеи?
Ответы
Ответ 1
Argh! После публикации этого вопроса я нашел проблему. В принципе, проект имел зависимости от других проектов. Файлы csproj для этих связанных проектов были немного неправильными - и это было как SolutionDir:
<SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\CableSense\</SolutionDir>
Что тогда вызвало проблему! Надеюсь, что это помогает кому-то еще, я чувствую себя плохо для ответа на свой вопрос сейчас.
Ответ 2
ОК, поэтому я недавно получил ту же ошибку, но решение для меня было другим.
В определении сборки в разделе "Параметры источника" у меня была папка "Исходный контроль", установленная в каталог фактического проекта вместо корневой папки для решения.
Я знаю, что это старый ответ, но это может помочь кому-то, кто сделал ту же ошибку, что и я.
Ответ 3
для меня я просто изменил местоположение решения, чтобы иметь короткое местоположение.