Ошибки загрузки сборки в зависимостях Microsoft.Data.SqlClientC#

Место общения программистов C#
Ответить
Anonymous
 Ошибки загрузки сборки в зависимостях Microsoft.Data.SqlClient

Сообщение Anonymous »

У меня есть модель Entity Framework 6 (Code First, с включенной миграцией и отключенной автоматической миграцией) в библиотеке классов, предназначенной для .NET 4.8 и .NET Standard 2.1 (AnyCPU). Это файл .csproj в стиле SDK. Она многоцелевая, поэтому я могу использовать одну и ту же модель как в проектах .NET Framework, так и в проектах .NET Core, что также является причиной того, что в модели используется EF6 вместо EF Core.

Код: Выделить всё

net48;netstandard2.1

В том же решении у меня есть приложение WPF .NET Framework 4.8 x64, которое использует библиотеку классов модели EF6 через ссылку на проект. Это проект .csproj старого стиля, а не SDK, поскольку это проект WPF, ориентированный только на .NET 4.8 (только). В этом проекте включено «Автоматическое создание перенаправлений привязки». Этот проект должен быть ориентирован на .NET 4.8, поскольку у него есть другие зависимости, недоступные для .NET 5+, и он нацелен на x64, а не на AnyCPU, поскольку он использует взаимодействие P/Invoke с x64 C++ DLL.
И в библиотеке классов, и в проектах приложений WPF установлен пакет NuGet Microsoft.EntityFramework.SqlServer 6.5.1, который извлекает Пакеты NuGet EntityFramework 6.5.1 и Microsoft.Data.SqlClient 5.1.5 как транзитивные зависимости. Microsoft.Data.SqlClient зависит от Microsoft.Identity.Client >= 4.56.0 и Azure.Identity >= 1.10.3.
Я обновил Azure.Identity до 1.13.2 (на данный момент это последняя версия), поскольку все версии старше 1.11.4 были помечены как уязвимые. При обновлении Azure.Identity также обновляется Microsoft.Identity.Client до версии 4.67.2. В обоих проектах установлена ​​одна и та же версия обоих пакетов.
Я пытаюсь использовать Update-Database, чтобы применить миграцию Code First к моей базе данных. Я выбрал приложение WPF в качестве запускаемого проекта отладки решения, а библиотека классов модели EF6 выбрана в качестве «проекта по умолчанию» в консоли диспетчера пакетов NuGet, где я запускаю команду PowerShell Update-Database.
Когда я запускаю Update-Database, я получаю следующее исключение:

Код: Выделить всё

System.TypeInitializationException: The type initializer for 'Microsoft.Data.SqlClient.SqlAuthenticationProviderManager' threw an exception.
---> System.IO.FileLoadException: Could not load file or assembly 'Microsoft.Identity.Client, Version=4.56.0.0, Culture=neutral, PublicKeyToken=0a613f4dd989e8ae' or one of its dependencies.
The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
Похоже, что сборка Microsoft.Data.SqlClient отклоняет обновленную версию Microsoft.Identity.Client, хотя в соответствии с требованиям к зависимостям пакета NuGet.
Если я понизлю версию Azure.Identity до 1.10.3 (которая транзитивно позволяет Microsoft.Identity.Client перейти на 4.56.0, который также помечен как уязвимый), я больше не получаю исключений при загрузке сборки. Однако я не заинтересован в том, чтобы в моем проекте были пакеты с известными уязвимостями. Почему эти сбои загрузки сборки происходят, когда у меня включена функция «Автоматическое создание перенаправлений привязки»? Есть ли способ исправить это, кроме принятия уязвимых пакетов?

Подробнее здесь: https://stackoverflow.com/questions/793 ... pendencies
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»