msbuild не выбирает пакеты из восстановленного местоположения
Используете ли вы файл nuget.config
или указываете restoreDirectory: '$(Build.SourcesDirectory)'
непосредственно в задаче nuget restore
, nuget восстановит пакет в папка C:\repo\s\packages
.
Однако NuGet Restore восстанавливает только пакеты в каталог восстановления , но не изменяет файл проекта .
Когда мы добавляем пакеты nuget в проект, он добавляет следующий код в файл проекта для указания местоположения DLL:
<ItemGroup>
<Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\packages\Newtonsoft.Json.12.0.3-beta1\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>
</ItemGroup>
Существует узел HintPath
для указания местоположения файла DLL.
Когда мы используем nuget.config
или restoreDirectory: '$(Build.SourcesDirectory)'
для изменения местоположения восстановления пакета, MSBuild не будет забирать пакет / dll на основе HintPath
. Правильный HintPath должен быть:
<HintPath>..\..\packages\Newtonsoft.Json.12.0.3-beta1\lib\net45\Newtonsoft.Json.dll</HintPath>
Вот почему msbuild не выбирает пакеты из восстановленного местоположения.
Чтобы решить эту проблему, вам нужно использовать командную строку NuGet в диспетчере пакетов. Консоль (на локальной VS):
Update-Package -reinstall
, чтобы принудительно переустановить ссылки на пакет в проект, он обновит HintPath
. Загрузите файл изменений в Azure devops и постройте его.
Надеюсь, это поможет.