В чем разница между .NET Framework DLL и .NET core DLL? Зачем им нужно отдельное время выполнения? - PullRequest
0 голосов
/ 06 июля 2019

При проверке .NET Core DLL и .NET Framework DLL с помощью ildasm они кажутся очень похожими. Единственное отличие, которое я вижу, - это ссылки (ссылки на .NET Framework DLL mscorlib).

Это имеет смысл, так как оба должны соответствовать ECMA-335. Однако я не понимаю, как среда выполнения знает, как использовать среду выполнения .NET Core или среду .NET Framework, когда она загружает DLL впервые. Я также не вижу никакой причины, по которой .NET Framework не сможет запускать библиотеки DLL .NET Core =>, пока он может найти ссылки, все они должны быть библиотеками ECMA-335.

1 Ответ

1 голос
/ 07 июля 2019

Нет большой разницы, поэтому библиотеки, скомпилированные с использованием .NET Standard, можно запускать в обеих средах выполнения.

Различия состоят главным образом в том, что библиотеки .NET Core полагают, что System.String происходит из System.Runtime,и библиотеки .NET Framework считают, что это исходит от mscorlib.При правильных сборках прокладок типа «вперед-назад» обе среды выполнения могут запускать библиотеки, скомпилированные для другой ... вплоть до получения исключения MissingMethodException или TypeNotFoundException, поскольку библиотека использует что-то доступное только в одной из сред выполнения (новые методы в .NET Core,или методы, не включенные в .NET Core, которые присутствуют в .NET Framework).

Различия во времени выполнения более тонкие:

  • .NET Core не имеет нескольких доменов приложений на процесс
  • .NET Core имеет System.Span в качестве специального типа во время выполнения для повышения производительности
  • .NET Framework имеет один GAC от 4,0 до 4,8
  • .NET Core поддерживает отдельныекопии Shared Frameworks для каждого выпуска исправления (для блокировки версии приложения)
  • .NET Framework GAC выигрывает
  • .NET Core локальный файл приложения выигрывает
  • .NET Coreбольше не использует CAS / частичное доверие
  • и т. д.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...