ссылки на .NET Framework 4 DLL в .NET Core 2.0 - PullRequest
0 голосов
/ 08 октября 2018

У меня есть какая-то dll, которая написана в .Net framework 4.0, и я не могу запустить свою программу, когда ссылаюсь на мой проект, который написан на .NET core 2.0.

ХотяМоя IDE (vs 2017) может правильно распознать объекты, импортированные из этой dll во время выполнения. У меня возникла следующая исключительная ситуация:

System.BadImageFormatException: 'Could not load file or assembly 'A_dotnet_4.0_A, Version=10.0.0.0, Culture=neutral, PublicKeyToken=0ad20d08c672086a'. An attempt was made to load a program with an incorrect format.'

Я пытался:

  1. изменить мои настройки налюбой процессор, как я видел в посте здесь
  2. , пытался очистить-восстановить мой проект.

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

Ответы [ 3 ]

0 голосов
/ 08 октября 2018

В итоге:

Не работает, потому что версия .NET Framework этой DLL слишком низкая.Поддержка .NET Core 2.0 и выше, ссылающаяся на другие библиотеки .NET Standard (например, .NET Core или .NET Framework или любую другую будущую библиотеку, которая может реализовать .NET Standard).

.NET Framework 4.0 не реализует .NET Standard, поэтому не создает совместимые библиотеки .NET Standard: .NET Framework только начал реализовывать .NET Standard с версии 4.5 и выше.Поэтому, если вы можете найти версию этой DLL, скомпилированной для .NET Framework 4.5, она должна теоретически работать, исключая некоторые крайние случаи.

0 голосов
/ 08 октября 2018

Возможно ли это?

Нет, это не так.

  • .NET Core может запускать сборки, ориентированные либо на .NET Core, либо на .NET Standard
  • .NET Framework может запускать сборки, ориентированные либо на саму .NET Framework, либо на .NET Standard

Таким образом, невозможно объединить две сборки, предназначенные для Full Framework и Core соответственно.Не в ядре и не в полном объеме.

Если вам нужна общая библиотека, к которой могут обращаться оба, она должна быть нацелена на стандарт .NET, чтобы ее можно было использовать как в полной среде, так и в Core.

0 голосов
/ 08 октября 2018

Вы не можете сделать это.

.NET Core может ссылаться на .NET Standard DLL
.NET Framework может ссылаться на .NET Standard DLL

.NET Core не может ссылаться на .NET Framework DLL (или наоборот).

Если у вас есть, например, стандартный проект .NET, вы не можете ссылаться на .NET Framework и .NET Core Framework.
Это один или другой.

enter image description here

Чтобы уточнить это, у нас есть проект с общим BusinessLogic, который представляет собой библиотеку .NET Standard 2.0.
Мы ссылаемся на этот проект в2 других проекта. .NET Core 2.1 и .NET Standard 4.7.

Если вы ссылаетесь на элементы .NET Core или .NET Framework непосредственно в этой общей библиотеке .NET Standard, все идет не так.

...