(Использование nuget.exe версии 4.9.2 и Visual Studio 2017 Community Edition)
Я озадачен проблемой восстановления nuget.exe. Я использую Дженкинс, чтобы создавать исходные тексты. У меня было решение с одним проектом, Roadmap, и оно было построено нормально, включая использование
nuget.exe restore "test.sln"
восстановить пакеты nuget. Мои сборки Jenkins всегда начинаются с пустой директории.
Теперь у меня есть второй проект. Он использует несколько одинаковых пакетов nuget. Но когда Jenkins запускает ту же команду nuget.exe для файла .sln, я получаю эту ошибку:
C:\Jenkins\workspace\test>nuget restore "test.sln"
MSBuild auto-detection: using msbuild version '12.0' from 'C:\Program Files (x86
)\MSBuild\12.0\bin\amd64'.
All packages listed in packages.config are already installed.
Invalid restore input. Missing required property 'OutputPath' for project type '
PackageReference'. Input files: C:\Jenkins\workspace\test\Roadtrip\Roadtrip.csproj.
Я вижу OutputPath, установленный в обоих файлах .csproj в моем решении. Но сообщение об ошибке не совсем вводит в заблуждение. Roadmap.csproj, оригинал, имеет такие строки для пакетов nuget:
<ItemGroup>
<Reference Include="CommonServiceLocator, Version=2.0.4.0, Culture=neutral, PublicKeyToken=489b6accfaf20ef0, processorArchitecture=MSIL">
<HintPath>..\packages\CommonServiceLocator.2.0.4\lib\net45\CommonServiceLocator.dll</HintPath>
</Reference>
...
В Roadtrip.csproj, новый, эквивалентный раздел содержит
<ItemGroup>
<PackageReference Include="CommonServiceLocator">
<Version>2.0.4</Version>
</PackageReference>
...
Это тот случай, когда я использую диспетчер nuget решения, чтобы добавить пакеты в один или оба проекта, или использую диспетчер nuget каждого проекта, чтобы добавить их пакеты.
Из того, что я видел в Интернете, Roadtrip выглядит хорошо. Я не уверен, почему это будет отличаться от дорожной карты. В Visual Studio ссылки найдены и оба приложения запущены, а правильные библиотеки DLL находятся в каталогах отладки и выпуска. Кроме того, когда я запускаю на своем ноутбуке строку nuget.exe, пакеты извлекаются.
Только когда я запускаю его на удаленном сервере Jenkins, он выходит из строя. Я пытался найти различия в конфигурациях, но они не выпрыгивают, что я могу найти, что соответствует обоим. Я надеюсь, что здесь есть кто-то знающий, который знает особенности того, почему я вижу это сообщение об ошибке.
Я ценю любую помощь.
Обновление: я собирался добавить это утром, и Скотт упомянул об этом, а также ... Я выбираю Дженкинса, но это действительно машина, на которой работает Дженкинс. Я могу открыть окно cmd на своем ноутбуке (не окно cmd MSVC), стереть каталог пакетов решений и все подкаталоги obj/bin, и nuget.exe restore test.sln
завершится успешно. Делать то же самое на машине с Дженкинсом не удается, как показано выше ... и работал до того, как я добавил второй проект. Версии nuget и Visual Studio одинаковы для обоих, переменные среды в окнах cmd одинаковы для обоих.