Как правильно настроить пакеты NuGet для совместной работы с DevOps (TFS)
Полагаю, вы используете packages.config в качестве управления пакетами nuget, потому что вы сказали "he has to change the path that is set in the ProjectNameFile.csproj because the path there contains ../../../../NuGetPackages/....
".
Итак, если вы используете packages.config
, вы должны использовать относительные пути для repositoryPath
в файле nuget.config
при создании проекта с помощью DevOps Azure.
Как мызнаете, когда мы собираем проект в DevOps Azure, DevOps Azure всегда копируют проект в путь, подобный D:\a\1\s\xx
, который отличается от пути в вашем локальном компьютере.И NuGet всегда использует относительные пути (..\packages
или ../../../../NuGetPackages/...
) в ProjectNameFile.csproj
, например:
<Reference Include="packagename, Version=3.0.0.0, xxx">
<Private>True</Private>
<HintPath>..\packages\xxx\lib\net45\xxx.dll</HintPath>
</Reference>
В этом случае, когда мы собираем проект, nuget по-прежнему восстанавливает пакеты nuget вабсолютный путь C:\Development\projectname\Packages
, но поскольку местоположение проекта изменилось на D:\a\1\s\xx
, поэтому относительные пути для HintPath
в файле .csproj также должны быть изменены соответствующим образом, в противном случае nuget не сможет найти соответствующую DLLfile.
Итак, мы должны установить repositoryPath
как относительные пути в файле nuget.config
, например:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<config>
<add key="repositoryPath" value=".\packages" />
</config>
</configuration>
С этим параметром путь к папке пакетов основан нав файле nuget.config
.Если вы не изменили расположение файла nuget.config
, HintPath
изменять не нужно.
Примечание:
globalPackagesFolder
используется для другого типа управления nuget packagereference
.
Если вы работаете с кем-то еще над разработкой проекта, вам нужно унифицировать расположение пакета nuget, а не постоянно изменятьHintPath
вручную.В противном случае это приведет к путанице в вашем развитии.
Надеюсь, это поможет.