Невозможно найти папку Nuget - PullRequest
0 голосов
/ 16 мая 2019

Я не могу найти некоторые пакеты nuget (VS 2019, asp.net core 2.2).Я обнаружил, что System.ComponentModels.Annotations невозможно найти в моей папке .nuget и в VS, рядом с ней нет стрелки «развернуть», как и всех других пакетов:

enter image description here

В моей папке .nuget:

enter image description here

Я попытался очистить папку с пакетами и перестроить вполучить все пакеты.Я пробовал update-package -reinstall.Я попытался установить system.componentmodel.annotations напрямую (а не устанавливать его как зависимость).Мое решение работает нормально, но я не могу найти этот пакет нигде на моем жестком диске.Я также заметил, что Microsoft.AspNetCore.Razor.Design демонстрирует точно такое же поведение.

1 Ответ

1 голос
/ 17 мая 2019

Когда NuGet восстанавливает проект, который использует PackageReference для пакетов (все проекты в стиле SDK и согласие на традиционные проекты), он записывает файл obj\project.assets.json, который MSBuild использует для завершения остальных операций. строить.

Глядя на раздел packageFolders моего тестового проекта, я вижу это:

  "packageFolders": {
    "c:\\git\\test\\globalPackages\\": {},
    "C:\\Program Files\\dotnet\\sdk\\NuGetFallbackFolder": {}
  },

обратите внимание, что у меня есть nuget.config, который перенаправляет мою папку глобальных пакетов из папки глобальных пакетов моего профиля пользователя, поэтому временные / поддельные пакеты, которые я создаю, не загрязняют мою реальную среду разработки. К вашему сведению, если вам интересно, почему вы не видите c:\users\zivkan\.nuget\packages.

Но обратите внимание, что есть две папки с пакетами.

Ищите System.ComonentModel.Annotations в секции libraries в project.assets.json, я вижу:

    "System.ComponentModel.Annotations/4.5.0": {
      "sha512": "UxYQ3FGUOtzJ7LfSdnYSFd7+oEv6M8NgUatatIN2HxNtDdlcvFAf+VIq4Of9cDMJEJC0aSRv/x898RYhB4Yppg==",
      "type": "package",
      "path": "system.componentmodel.annotations/4.5.0",
      "files": [
          // list of every file in package
      ]
    },

см. Путь говорит system.componentmodel.annotations/4.5.0, что означает, что он может быть в одном или обоих из c:\git\test\globalPackages\system.componentmodel.annotations\4.5.0 и / или C:\Program Files\dotnet\sdk\NuGetFallbackFolder\system.componentmodel.annotations\4.5.0.

В случае использования при попытке загрузить его в Powershell, вы можете попробовать загрузить одну из сборок в каталог lib\*. Выберите TFM, который, по вашему мнению, совместим с вашей версией Powershell.

Что касается причины, по которой Solution Explorer не имеет возможностей для расширения пакета, найдите пакет в разделе targets project.assets.json, и вы увидите следующее:

      "System.ComponentModel.Annotations/4.5.0": {
        "type": "package",
        "compile": {
          "ref/netcoreapp2.0/_._": {}
        },
        "runtime": {
          "lib/netcoreapp2.0/_._": {}
        }
      },

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

В данном конкретном случае это связано с тем, что netcoreapp2.0 имеет встроенную сборку во время выполнения, а пакет Microsoft.NETCore.App содержит метаданные времени компиляции. Вот почему я спросил, почему вы ищете пакет. Если вы используете project.assets.json, чтобы найти точное значение System.ComponentModel.Annotations.dll, которое использует сборка во время компиляции, вы найдете справочную сборку только для метаданных, которую нельзя загрузить. Но выше я привел примеры того, как найти каталог пакета, и вы можете найти загружаемую dll в одном из lib\* каталогов, чтобы попытаться загрузить его в Powershell.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...