У меня есть проект .NET 6, и я пытаюсь загрузить стороннюю dll, которая построена с помощью .NET framework 4.0, зависимости mscorelib
, System.Configuration
, System.Data
, System.Drawing
и System.Core
, все версии 4.0.
Когда я запускаю метод, приложение вылетает с исключением:
System.IO.FileNotFoundException: не удалось загрузить файл или сборку «**dll, версия = 1.0.0.0, культура = нейтральная, PublicKeyToken = null». Система не может найти указанный файл.
Кажется, между зависимыми сборками существует некоторый конфликт версий, но некоторые библиотеки .NET framework 2.0 работают нормально. Как решить эту проблему, если я не могу попросить dll verdor собрать новую?
@DanielA.White, но некоторые библиотеки .net framework 2.0 могут работать, в чем разница между 2.0 и 4.0?
@Lamp: это не имеет ничего общего с 2.0 и 4.0: .NET 6 содержит некоторые классы/методы из .NET Framework 2.0 и некоторые классы/методы из .NET Framework 4.0 (и множество новых классов/методов) . Если тот, который нужен вашей библиотеке, есть, хорошо, в противном случае не повезло. Только создатель сторонней DLL может изменить используемые классы/методы.
Если библиотека использует функции для .NET Framework, она не может работать в .NET Core. Если это не так, сборка до стандарта .NET позволяет ему работать на обоих. Либо:
Библиотека не может использоваться в .NET Core, и в этом случае вам не повезло.
у него есть отдельные сборки для .NET Framework и .NET Core, и в этом случае вам нужно будет выбрать правильный,
или разработчик библиотеки скомпилировал ее только для .NET Framework, когда ее можно было скомпилировать иначе, и в этом случае вы можете попытаться скомпилировать ее самостоятельно.
вы не можете слепо ссылаться на сборки .net framework из .net (core). вы должны попытаться найти обновленные версии для сторонней библиотеки