как решить Не удается найти ошибку nuget пакета

Работа над созданием пакета nuget для проекта (A.csproj), который зависит от другого проекта (B.csprojec), добавленного в качестве ссылки на проект.
Вот файл .nuspec,

<?xml version="1.0"?>
<package >
  <metadata>
    <id>A.Client</id>
    <title>A.Client</title>
    <description>HttpClient and Models for calling the A Microservice.</description>
    <version>1.0.2</version>
    <authors></authors>
    <owners></owners>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <copyright>.</copyright>
    <tags></tags>
    <dependencies>
      <group targetFramework=".NETFramework4.5">
        <dependency id="Newtonsoft.Json" version="9.0.1" exclude="Build,Analyzers" />
        // <dependency id="B" version="1.0.0"/> tried this but same error
      </group>
      <group targetFramework=".NETStandard2.0">
        <dependency id="Newtonsoft.Json" version="9.0.1" exclude="Build,Analyzers" />
        // <dependency id="B" version="1.0.0"/> tried this but same error
      </group>
    </dependencies>
    <frameworkAssemblies>
      <frameworkAssembly assemblyName="System.Net.Http" targetFramework=".NETFramework4.5" />
    </frameworkAssemblies>
  </metadata>
  <files>
    <file src="bin\$configuration$\netstandard2.0\A.dll" target="lib\netstandard2.0" />
    <file src="bin\$configuration$\net45\A.dll" target="lib\net45" />
  </files>
</package>

я использовал

nuget pack A.nuspec -Properties configuration=debug

Чтобы сгенерировать пакет. Однако, когда я попытался использовать этот пакет внутри c.csprojc, я получил следующую ошибку

Severity    Code    Description Project File    Line    Suppression State
Error   NU1101  Unable to find B. No packages exist with this id in source(s): Local Package source, Microsoft Visual Studio Offline Packages, nuget.org, Package source    

Что я пропустил ?


person yesIcan    schedule 17.09.2018    source источник
comment
Вы создали пакет B? Ошибка предполагает, что пакет B не собран или недоступен из каталога, содержащего пакет A. Команда nuget pack, которую вы использовали, упоминает только A.nuspec.   -  person Matt Ward    schedule 18.09.2018
comment
a и b.csproj находятся в одном решении, на b как на проект, а не на пакет.   -  person yesIcan    schedule 18.09.2018
comment
Вы пробовали опцию -IncludeReferencedProjects при использовании nuget pack?   -  person Matt Ward    schedule 19.09.2018
comment
Задайте URL-адрес источника пакета: api.nuget.org/v3/index.json в разделе Инструменты - ›Диспетчер пакетов Nuget -› настройки диспетчера пакетов (вкладка Источник пакета)   -  person Pranesh Janarthanan    schedule 05.06.2021


Ответы (7)


Источник пакета отключен !!

Я установил VS2017 professional в свою систему, открыл существующий проект и обнаружил, что несколько пакетов отсутствуют. Я перепробовал все, что мог, не глядя на исходный код пакета !!

«Управление

Я пишу этот ответ, когда пробовал следующие решения, но ни одно из них не сработало:

  1. Очистка кеша
  2. Восстановление или переустановка пакетов
  3. Изменение цели
  4. Обновление диспетчера пакетов Nuget

Решение:

Шаг 01. Перейдите в Настройки диспетчера пакетов (Инструменты> Диспетчер пакетов Nuget> Настройки диспетчера пакетов)  Диспетчер пакетов Nuget ›Настройки диспетчера пакетов

Шаг 02. Проверьте источники пакета. Как видите, исходный код пакета здесь уже загружен SDK / nugets / packages. Я не знаю причины, но источник онлайн-пакета с nuget.org отсутствовал в моей системной установке Visual Studio.

введите описание изображения здесь

Шаг 03. Установите nuget.org в качестве источника пакета, затем «Очистите все кеши Nuget» и затем восстановите пакеты. Ошибка исчезнет.

Имя: nuget.org (или как хотите) Источник: https://api.nuget.org/v3/index.json

введите описание изображения здесь

person jainashish    schedule 20.11.2019
comment
Это было именно мое решение. Я не знаю, почему установщик VS исключил url-адрес nuget.org в качестве источника пакета, можно подумать, что он был бы включен в качестве источника по умолчанию. - person Skychan; 25.02.2020
comment
Спасибо. Это была проблема для меня, и вы указали мне точное решение, я мучился несколько дней, пока не нашел эту страницу. - person RotatingWheel; 07.04.2020
comment
Спасибо Спасибо. Я как раз возвращаюсь в Visual Studio через несколько лет, и у меня было несколько таких ошибок. Нашел несколько ответов, которые я не мог понять или которые казались плохими обходными путями. Нашел ваш, он имеет смысл и сработал! Теперь я могу приступить к программированию! - person Doug Glancy; 04.05.2020
comment
Для всех, кто сталкивается с этой проблемой в сборке Azure, эта открытая проблема Azure DevOps № 9046 дает ответ: github.com/NuGet/Home/issues/9046#issuecomment-579012605 Короче говоря, добавление файла nuget.config в ваш проект с <clear/> до того, как ваш источник пакета заставит процесс сборки загрузить его снова, предотвращая это ошибка автономного пакета. - person Dan Oliver; 08.07.2020
comment
Бинго. Это действительно неприемлемо для команд MS из-за того, что, как ни странно, у них нет набора исходных кодов nuget. Я надеюсь, что это просто ошибка, но это 2021 год, и я комментирую комментарии 2019 года. Как опытный разработчик .NET, при необходимости полной переустановки системы, полностью установленная новейшая версия VStudio 2019 Pro, вручную установил .NET Framework 4.8 и версии dotnet core 5.0 и 3 (dot.net), но проблема все еще возникла ?! Как это могло быть нормально? Невероятно, что у них как-то была эта настройка по умолчанию. Извините за жалобу, но это не годится для усыновления. - person Nicholas Petersen; 14.04.2021
comment
@Skychan Я думаю, что VS установил его для текущего пользователя, но вы открыли VS как администратор, и вам нужно установить их самостоятельно. - person Oge Nwike; 06.07.2021
comment
Спасибо! У меня такая же проблема. И ваше решение работает хорошо. - person ZHANG Luyao; 16.07.2021
comment
Я столкнулся с той же проблемой в VS 2019. Интересно, почему нет четких инструкций от MS. - person Rehan Arshad; 19.07.2021

Я просто сделал это, и все прошло нормально. В вашей Visual Studio перейдите по ссылке:

  1. Инструменты
  2. Диспетчер пакетов Nuget
  3. Общий
  4. Нажмите кнопку «Очистить все кеши Nuget».
  5. Ресурсы пакета и нажмите «Обновить».
  6. Woolah! Ошибка исчезла ...
person Israel Ocbina    schedule 05.12.2018
comment
это сделало это для меня лол - person PinoyDev; 17.05.2021

Действия GitHub

Я хотел бы добавить, что в Github Actions репозиторий nuget.org по умолчанию не запрашивается. Вместо этого GitHub по умолчанию использует кешированный репозиторий пакетов, и может случиться так, что указанный вами пакет не в этом кеше, а на nuget.org (у меня это было для System.CommandLine).

Вы можете исправить это, добавив файл nuget.config в корневой каталог, содержащий следующие

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
  </packageSources>
</configuration>

Пример файла github_action.yml

name: .NET

on:
  push:
    branches: [ master ]
  pull_request:
    branches: [ master ]

jobs:
  build:

    runs-on: windows-latest

    steps:
    - uses: actions/checkout@v2
    - name: Setup .NET
      uses: actions/setup-dotnet@v1
      with:
        dotnet-version: 5.0
    - name: Clean
      run: dotnet clean && dotnet nuget locals all --clear
    - name: Restore dependencies
      run: dotnet restore
    - name: Build
      run: dotnet build --no-restore
    - name: Test
      run: dotnet test --no-build --verbosity normal
person JBSnorro    schedule 30.03.2021
comment
Это озадачило меня на некоторое время, так как у меня была матричная сборка из ubuntu-latest и windows-latest, а Linux-версия отлично работала с NuGet, но не с Windows! - person Kevin Smith; 04.05.2021

для меня:% appdata% \ NuGet \ NuGet.Config содержал только <activePackageSource> <add key="nuget.org" value="https://www.nuget.org/api/v2/" /> </activePackageSource>

после выполнения

nuget sources add -Name "NuGet official package source" -Source "https://api.nuget.org/v3/index.json"

это было добавлено

  <packageSources>
    <add key="https://www.nuget.org/api/v2/" value="https://www.nuget.org/api/v2/" />
    <add key="NuGet official package source" value="https://api.nuget.org/v3/index.json" />
  </packageSources>

впоследствии были обнаружены пакеты.

person sotto    schedule 25.11.2020

Я решил это, добавив зависимый файл

<files>
    <file src="bin\$configuration$\netstandard2.0\a.dll" target="lib\netstandard2.0" />
    <file src="bin\$configuration$\net45\a.dll" target="lib\net45" />
    <file src="bin\$configuration$\netstandard2.0\b.dll" target="lib\netstandard2.0" />
    <file src="bin\$configuration$\net45\b.dll" target="lib\net45" />
  </files>

Также не забудьте очистить локальный кеш nuget locals all –clean или сменить версию.

person yesIcan    schedule 19.09.2018

Мне удалось решить эту проблему, добавив еще несколько ссылок на источник пакета в источник пакета nuget (Инструменты -> Диспетчер пакетов Nuget -> Параметры диспетчера пакетов -> Источник пакета).

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

person Pooja Sinha    schedule 04.05.2020

Эти ошибки начали периодически появляться для нашего конвейера сборки Azure DevOps, но никогда не локально.

Пример ошибки:

ошибка NU1101: невозможно найти пакет Microsoft.EntityFrameworkCore.Sqlite. Нет пакетов с этим идентификатором в источнике (ах): автономные пакеты Microsoft Visual Studio

Если бы мы перезапустили сборку, все могло бы работать, но потом это случилось снова.

Затем я заметил, что это всегда происходило в нашем тестовом проекте, а не в нашем основном веб-проекте.

Мы используем .NET/NuGet конвейерное кеширование для ускорения наших сборок. Мы используем версию по умолчанию, которая выглядит так:

variables:
  NUGET_PACKAGES: $(Pipeline.Workspace)/.nuget/packages

steps:
- task: Cache@2
  inputs:
    key: 'nuget | "$(Agent.OS)" | **/packages.lock.json,!**/bin/**'
    restoreKeys: |
       nuget | "$(Agent.OS)"
    path: $(NUGET_PACKAGES)
  displayName: Cache NuGet packages

https://docs.microsoft.com/en-us/azure/devops/pipelines/release/caching?view=azure-devops#netnuget

Единственное изменение заключается в том, что Microsoft использует $(UserProfile), но мы используем $(Pipeline.Workspace) для переменной. Возникла ошибка при использовании $(UserProfile), о которой вы можете прочитать здесь:

https://github.com/MicrosoftDocs/azure-devops-docs/issues/10110

Он читает packages.lock.json, который необходимо включить, отредактировав файл проекта (.csproj).

<PropertyGroup>
    <RestorePackagesWithLockFile>true</RestorePackagesWithLockFile>
</PropertyGroup>

https://devblogs.microsoft.com/nuget/enable-repeatable-package-restores-using-a-lock-file/.

Оказалось, что мы создали packages.lock.json только для нашего веб-проекта, но не для нашего тестового проекта. После добавления RestorePackagesWithLockFile в наш тестовый проект он снова заработал.

person Ogglas    schedule 02.02.2021