Ссылки на пакет Nuget вызывают «Не удалось загрузить файл или сборку»? - PullRequest
0 голосов
/ 17 мая 2019

Существует недавний принцип разбора пакета Nuget.Подробнее смотрите, как NuGet анализирует зависимости пакетов.Для объяснения используется диаграмма Microsoft:

Microsoft Image На этот раз вы выберете самый последний пакет - версию 2.0.без проблем.

Одна проблема, с которой я столкнулся сегодня, состоит в том, что один из моих пакетов Nuget (называемый Package A текущей версии 1.2.3) изначально поддерживает только версию netstandard 2.0, которая определена в файле csproj.

<TargetFramework>netstandard2.0</TargetFramework>

У меня есть другой продукт, пакет ECS Nuget (называемый Пакет B, версия 1.0.0), и Пакет B должен ссылаться на Пакет A.

Маршрут взаимосвязиis [Пакет B 1.0.0] -> [Пакет A 1.2.3]

В настоящее время два пакета в программе можно использовать в обычном режиме.

Позже, благодаря поддержкеплатформы .net я изменил исходный пакет A nuget и изменил его на следующий.

<TargetFrameworks>netstandard2.0;net45</TargetFrameworks>

Пакет Версия генерации пакета - 1.3.2.В настоящее время я обращаюсь к вышеупомянутым двум пакетам и нахожу, что компиляция в порядке, но я получаю ошибку во время выполнения.

enter image description here Я могу решить вышеуказанную проблему,Обновление пакета B, но почему эта ошибка?Это из-за использования TargetFrameworks?Я также надеюсь, что большие люди будут указывать.

1 Ответ

0 голосов
/ 21 мая 2019

Когда я сравнил файл *.deps.json, я нашел что-то полезное.Вот первый сценарий получения следующего файла JSON:

"aliyun-net-sdk-core/1.3.2": {
        "dependencies": {
          "Serilog": "2.5.0",
          "Serilog.Exceptions": "4.0.0",
          "Serilog.Sinks.File": "4.0.0"
        },
        "runtime": {
          "lib/netstandard2.0/aliyun-net-sdk-core.dll": {
            "assemblyVersion": "0.0.0.0",
            "fileVersion": "0.0.0.0"
          }
        }
      }

Однако из-за ссылки на версию 1.3.2 CLR не может найти DLL с версией 1.3.2 при загрузке сборки, существует только версия сборки 0.0.0.0, поэтомуCLR ищет версию 1.2.3, на которую ссылается исходный проект, но она не найдена, поэтому сообщает об ошибке.Ясно понято.

После того, как я составил версию проекта "Miss Assembly", я получил правильный результат.

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