Невозможно найти пакет.В источнике нет пакетов с этим идентификатором..NET core - PullRequest
0 голосов
/ 19 сентября 2019

Я пытаюсь использовать проект в качестве пакета nuget в другом решении.Проект, который я хочу использовать, имеет 2 ссылки на другие проекты в решении, в котором он находится.Я создаю файл .nupkg, используя команду cli dotnet pack в пути к проекту, который я хочу использовать в качестве пакета nuget.При добавлении файла .nupkg в другое решение с помощью команды dotnet add package я получаю сообщение об ошибке в заголовке сообщения с названием 2-х справочных проектов.

1 Ответ

0 голосов
/ 20 сентября 2019

Использование dotnet cli:

Как @ Лекс Ли предлагает использовать команду типа dotnet add package xxx для ссылки на локальный пакет, созданный вами, вы можете выбратьчтобы настроить локальный канал и передать его в канал перед тем, как вы это сделаете. (Вы также можете опубликовать пакет на nuget.org и других каналах)

Простой способ настройки локального канала: Nuget.Конфигурационный файл управляет поведением потребляемого пакета nuget, вы можете найти файл Nuget.config , который работает для вашего текущего пользователя по адресу: %appdata%\NuGet\NuGet.Config.Вы можете использовать оператор как:

<add key="Local Packages" value="C:\path\..." />  

, чтобы установить папку в качестве локального канала.Затем поместите в него файл xx.nupkg, и проблема исчезнет.Также вы можете установить подачу с помощью пользовательского интерфейса в VS, см. Мое следующее описание в Install it by VS.(Кроме того, вы также можете использовать Nuget Server .)


Установить его с помощью VS:

И так как выпытаясь использовать пакет на локальном компьютере с установленной VS, вы также можете рассмотреть возможность использования пользовательского интерфейса диспетчера пакетов VS Nuget, см. этот документ .

Простой способ сделать это в VS - этоперейдите Tools=>nuget package manager=>package manager settings=>package source, нажмите зеленую кнопку, чтобы определить новый источник пакета, например C:\xxx\MyLocalPackages:

enter image description here

Скопируйте файл xxx.nupkg в папку,и в VS щелкните правой кнопкой мыши проект => Управление пакетами nuget => выберите правильный источник пакета, и вы можете легко его использовать:

enter image description here

Папка будеттакже работает для вас как локальный канал.

Кроме того:

Я создаю файл .nupkg с помощью команды cli dotnet pack .Вы можете переименовать xx.nupkg в xx.zip и проверить содержимое его папки lib.Убедитесь, что сборки упомянутых двух проектов находятся там (я столкнулся с этой новой проблемой после того, как решил исходную проблему). Если их там нет, вы можете получить похожую проблему, такую ​​как this , и вот обходной путь из Martin .

Update1: (более подробная информация об обходном пути Martin) Выгрузите проект в VS для редактирования xx.csproj,добавьте в него этот скрипт:

<Project>

    ...

  <PropertyGroup>
    <TargetsForTfmSpecificBuildOutput>$(TargetsForTfmSpecificBuildOutput);IncludeP2PAssets</TargetsForTfmSpecificBuildOutput>
  </PropertyGroup>

  <ItemGroup>
    <ProjectReference Include = "..\ProjectName\ProjectName.csproj" PrivateAssets="All" />
  </ItemGroup>

  <Target Name = "IncludeP2PAssets" >
    <ItemGroup>
      < BuildOutputInPackage Include="$(OutputPath)\ProjectName.dll" />
    </ItemGroup>
  </Target>
</Project>

Замените ProjectName на имя проекта, от которого вы зависите.Затем соберите его в VS, и вы можете найти xx.nupkg в bin \ debug или bin \ release.(Это должно работать для ядра .net или стандарта .net, и я проверил это)

Любое обновление не стесняйтесь, дайте мне знать:)

...