Почему проект. NET framework может быть добавлен в качестве ссылки в проект. NET Standard 2.0? - PullRequest
1 голос
/ 28 мая 2020

При преобразовании проекта. NET Framework 4.6.2 в. NET Стандартный проект, я заметил, что могу добавить. NET Ссылку на проект Framework в проект. NET Standard, что не соответствует Теоретически звучат правильно.

Почему. NET проект фреймворка может быть добавлен в качестве ссылки в. NET Стандартный проект 2.0?

1 Ответ

1 голос
/ 28 мая 2020

Когда есть. NET Стандартный проект компилируется с netstandard.dll. Оба. NET Framework и. NET Core имеют netstandard.dll (который обеспечивает перенаправление типов в mscorlib.dll или System.Runtime.dll). Вот почему вы можете использовать. NET Стандартный проект как в. NET Core, так и. NET Framework.

Итак, что происходит, когда ваш. NET Standard ссылается на проект. NET Framework project (который скомпилирован с mscorlib.dll)?

Если у вас есть цепочка ссылок . NET Framework ->. NET Standard ->. NET Framework то нет проблема вообще, потому что во время выполнения у вас есть mscorlib.dll со всеми необходимыми типами.

А как насчет . NET Core ->. NET Standard ->. NET Framework Ссылки? Во время выполнения у вас есть только System.Runtime.dll. Нет проблем с. NET Стандартным проектом, потому что netstandard.dll будет вводить переадресацию в System.Runtime.dll. Но хитрость в том, что . NET Core также имеет mscorlib.dll ! И да, это также только пересылка типов в типы System.Runtime.dll. И все работает. ... если вы не будете использовать какой-либо. NET Тип фреймворка, которого нет в System.Runtime.dll.

Дополнительная литература:. NET Прокладка совместимости с фреймворком

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