Как заставить команду do tnet publi sh использовать частные источники Nuget - PullRequest
1 голос
/ 29 мая 2020

Я использую VS2019 (16.4) в стенах компании. Я изменил источники VS Nuget, и мое решение компилируется и запускается после нескольких запросов к нашему внутреннему фонду для утверждения пакетов Nuget.

Теперь я пытаюсь использовать команду dotnet publish, но она терпит неудачу с кучей ошибок, таких как: error NU1605: Detected package downgrade: System.Runtime.Extensions from 4.3.0 to 4.1.0. Reference the package directly from the project to select a different version..

Я подумал, что он, вероятно, не осведомлен о частных источниках Nuget ... поэтому я поискал, и решение, похоже, состоит в том, чтобы включить файл NuGet.Config в решение root:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <add key="Company Artifactory" value="https://repo.comany.com/artifactory/api/nuget/comany-nuget" />
    <add key="Company Eval Artifactory" value="https://repo.comany.com/artifactory/api/nuget/comany-nuget-eval" />
  </packageSources>
</configuration>

Это не помогло. Кажется, есть новая команда dotnet, которая позволит добавлять источники через CLI: https://docs.microsoft.com/en-us/dotnet/core/tools/dotnet-nuget-add-source, но, к сожалению, наша версия - 3.1.100, и новая команда применима к 3.1.200 .. .да ... для получения новой версии в нашей компании потребуется съезд.

Любая помощь приветствуется.

1 Ответ

1 голос
/ 30 мая 2020

Спасибо @omajid за вашу помощь. Вот что у меня работает:

В каждом проекте root папка:

  • dotnet restore
  • dotnet build --configuration Release
  • dotnet publish --no-restore -r win-x64 -c Release -o c:\somwhere /p:PublishSingleFile=true /p:DebugType=None

Вышеупомянутое требует, чтобы мы добавили идентификатор среды выполнения в файл проекта:

<PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>
    <RuntimeIdentifier>win-x64</RuntimeIdentifier>
    <IsTransformWebConfigDisabled>true</IsTransformWebConfigDisabled>
    <AssemblyVersion>0.0.2.0</AssemblyVersion>
</PropertyGroup>

К сожалению, восстановление с идентификатором времени выполнения не сработало (те же ошибки, что и в моей исходной проблеме ), что, вероятно, означало бы, что идентификатор среды выполнения не нужен в файле проекта:
dotnet restore --runtime win-x64

Мое первоначальное наблюдение было неверным! Источники Nuget НЕ вызывали проблем с восстановлением в publish .... это был идентификатор среды выполнения. Я до сих пор не знаю, почему ошибка проявилась именно так ... но вызов dotnet publish с переключателем --no-restore, похоже, сделал это за меня.

Остается проблема, почему dotnet restore --runtime win-x64 не работает.

...