Почему мой путь к хранилищу игнорируется в Azure DevOps / TFS? - PullRequest
0 голосов
/ 20 февраля 2020

Прежде всего, у меня есть NuGet.Config:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <config>
    <add key="repositoryPath" value=".\ExternalReferences\Packages" />
      <solution>
        <add key="disableSourceControlIntegration" value="true" />
      </solution>
  </config>
</configuration>

В root моей dev ветви. Его работа заключается в том, что каждый проект в моей ветви dev восстанавливает пакеты в \dev\ExternalReferences\Packages, что прекрасно работает локально.

Я пытаюсь внедрить Azure конвейеров через TFS (VisualStudio Team Services / DevOps) для my CI-Build.

Однако TFS восстанавливает пакеты в неправильную папку \dev\packages (где \dev - D:\a\9\s\) вместо \dev\ExternalReferences\Packages.

Acquired lock for the installation of Newtonsoft.Json 12.0.3
Installing Newtonsoft.Json 12.0.3.
Adding package 'Microsoft.Extensions.Logging.Abstractions.2.2.0' to folder 'D:\a\9\s\packages'

Это нарушает сборку позже (что предполагает ExternalReferences\Packages):

PrepareForBuild:
  Creating directory "bin\Release\".
  Creating directory "obj\Release\".
ResolveAssemblyReferences:
  Primary reference "Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL".
##[warning]C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\Microsoft.Common.CurrentVersion.targets(2110,5): Warning MSB3245: Could not resolve this reference. Could not locate the assembly "Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL". Check to make sure the assembly exists on disk. If this reference is required by your code, you may get compilation errors.
C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\Microsoft.Common.CurrentVersion.targets(2110,5): warning MSB3245: Could not resolve this reference. Could not locate the assembly "Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL". Check to make sure the assembly exists on disk. If this reference is required by your code, you may get compilation errors. [D:\a\9\s\Conwell.WebServices.Google\Conwell.WebServices.Google.csproj]

Есть идеи, как сделать NuGet для восстановления в правильном каталоге?

Я только что создал стандартный конвейер для тип проекта Asp. NET

Nuget

Ответы [ 2 ]

1 голос
/ 20 февраля 2020

Почему мой repositoryPath игнорируется в Azure DevOps / TFS?

Поскольку задача восстановления nuget восстанавливает пакеты в неправильную папку \dev\package s, кажется, настройки repositoryPath в NuGet.Config игнорируется.

Чтобы решить эту проблему, можно попытаться указать nuget.config при настройке задачи восстановления nuget, чтобы убедиться, что вы используете NuGet.Config:

enter image description here

Тогда мой nuget.config выглядит следующим образом:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <add key="AzureDevOpsFeed" value="https://pkgs.dev.azure.com/xxxn/_packaging/xxx/nuget/v3/index.json" />
    <add key="nuget.org" value="https://api.nuget.org/v3/index.json" />
  </packageSources>

  <config>
    <add key="repositoryPath" value=".\ExternalReferences\Packages" />
  </config>

</configuration>

Затем, в результате теста, я могу получить пакет в папке ExternalReferences\Packages:

enter image description here

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

0 голосов
/ 20 февраля 2020

В качестве обходного пути я настроил каталог напрямую:

Go для конвейера и отредактировал:

Edit Pipeline

Go для восстановления NuGet, каталога Advanced и Destination:

Nuget Restore

Я по-прежнему открыт для опций, которые относятся к NuGet.Config.

...