Как правильно настроить пакеты NuGet для совместной работы с DevOps (TFS) - PullRequest
0 голосов
/ 28 февраля 2019

Я прочитал и прошел через следующее:

Но у меня все еще есть проблемы с пакетами папок, которые содержат пакеты для моего решения, когда я проверяю свой код, для моей стороны все работает нормально, когда кто-то другой получает проверенное решение, он должен изменить путь, которыйустанавливается в ProjectNameFile.csproj , поскольку путь там содержит

.. / .. / .. / .. / NuGetPackages /....

но должно быть (и работает только в случае изменения)

.. / Packages

Но чем тогда, когда это лицо регистрируется, и я получаю эту версию,папка с моими пакетами исчезла ... Мы использовали TFS в других проектах, но это первое для меня ...

Я попробовал все, чтоссылки, которые я отправил, являются предложением, но без везения. Инструменты> параметры> Диспетчер пакетов NuGet выглядит следующим образом: enter image description here

У меня есть файл NuGet.Config на том же уровне, что и имя моего проекта.Файл sln, который имеет следующее содержание:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <config>
    <!-- I tried each line below seperately and together -->
    <add key="globalPackagesFolder" value=".\packages" /> 
    <add key="repositoryPath" value="C:\Development\projectname\Packages" />
  </config>
</configuration>

Итак, что я сделал сейчас, так это создал папку Packages на уровне projectname.sln, и когда я создаю свое решение, этоработает, но эй, я не могу делать это каждый раз (X), и я уверен, что есть способ достичь этого, но не знаю как.

Заранее благодарен за любые отзывы.

1 Ответ

0 голосов
/ 01 марта 2019

Как правильно настроить пакеты 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 изменять не нужно.

Примечание:

  1. globalPackagesFolderиспользуется для другого типа управления nuget packagereference.

  2. Если вы работаете с кем-то еще над разработкой проекта, вам нужно унифицировать расположение пакета nuget, а не постоянно изменятьHintPath вручную.В противном случае это приведет к путанице в вашем развитии.

Надеюсь, это поможет.

...