Как исправить NU1212 для установки инструмента dotnet - PullRequest
0 голосов
/ 27 сентября 2018

Я создаю ядро ​​dotnet и у меня возникают проблемы с его глобальной установкой.Я могу воспроизвести проблему, с которой сталкиваюсь, но не знаю, как ее решить.Ниже приведены мои шаги

  1. dotnet new console -o testconsole
  2. Измените testconsole.csproj, включив в него <PackAsTool> и <PackageOutputPath>

testconsole.csproj

dotnet restore testconsole.csproj dotnet build testconsole.csproj dotnet pack testconsole.csproj утилита dotnet install -g -vd --add-source ./nupkg testconsole

При установке я получаю следующую ошибку

error NU1212: Invalid project-package combination for TestConsole 1.0.9. DotnetToolReference project style can only contain references of the DotnetTool type

Ошибка установки

Воткопия testconsole.nuspec из nupkg, включающая <packageType name="DotnetTool" /> в соответствии с предложением от https://natemcmaster.com/blog/2018/05/12/dotnet-global-tools/

testconsole.nupsec

Ответы [ 2 ]

0 голосов
/ 02 августа 2019

Опираясь на ответ Омаира, практические шаги по решению этой проблемы:

1.Создайте disable_nuget.config, чтобы отключить чтение из глобальной ленты

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <disabledPackageSources>
        <add key="nuget.org" value="true" />
    </disabledPackageSources>
</configuration>

note: присвойте ему специальное имя, чтобы оно не попадало в nuget случайно, когда вы неЯ не хочу, чтобы это было

2.Установите инструмент, ссылаясь на специальную конфигурацию nuget

dotnet pack
dotnet tool install --global --configfile disable_nuget.config --add-source ./nupkg TestConsole
0 голосов
/ 27 сентября 2018

После нахождения основной причины эта ошибка смешная, но также является признаком систематической проблемы.

Вы видите эту часть предупреждения в своих выходных данных?

ПакетTestConsole 1.0.9 была восстановлена ​​с использованием .NETFramework, Version = v4.6.1 вместо целевой платформы проекта .NETCoreApp, Version = v2.1.Этот пакет может быть не полностью совместим с вашим проектом

Что это за версия 1.0.9?Откуда берется .NET Framework 4.6.1?Ничего подобного нет в .NET Core SDK (я просматривал источники) или в каталоге testconsole на моем диске.

Позволяет уменьшить детализацию ведения журнала и повторно запустить команду установки:

$ dotnet tool install -g -v n --add-source ./nupkg testconsole
Build started 2018-09-26 7:16:47 p.m..
     1>Project "/tmp/q2whkgqf.tbt/restore.csproj" on node 1 (Restore target(s)).
     1>Restore:
         Restoring packages for /tmp/q2whkgqf.tbt/restore.csproj...
           CACHE https://api.nuget.org/v3-flatcontainer/testconsole/index.json
           CACHE https://api.nuget.org/v3-flatcontainer/testconsole/1.0.9/testconsole.1.0.9.nupkg
         Installing TestConsole 1.0.9.0.

Внимательно посмотрите на последние несколько строк.dotnet tool install пытается установить https://www.nuget.org/packages/TestConsole/. Не ваш локальный пакет testconsole nuget!

Вы можете обойти его несколькими способами:

  1. Дайте свойинструменты действительно уникальное имя, которое ни с чем не конфликтует ни на nuget.org, ни в канале nuget вашей организации.
  2. Добавьте nuget.config, который <clear/> s, для каналов nuget, так что только каталог ./nupkgиспользуется в качестве канала при установке testconsole.
...