Обычно мы видим следующие цели в project.json
:
"frameworks": {
"net45": {},
"dnx451": {},
"dnxcore50": { }
}
dnxcore50
будет единственной переносимой версией кода проекта, а dnx451
на самом деле нацелена на .Net 4.5.1 mscorlib и т.д...
Теперь, если я добавлю еще одну цель с именем dnx50
, это создаст правильный вывод и будет работать нормально.
Разница между dnx451 и dnx50 заключается в том, что он ссылается на разные DLL сборки .Net.
Например mscorlib.dll
:
- dnx451 ссылается на
C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\mscorlib.dll
- dnx50 ссылается на
C:\Windows\Microsoft.NET\assembly\GAC_32\mscorlib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dll
, что по сути является версией .net 4.6.
Теперь вопрос:
Имеет ли смысл создавать эту цель dnx50
, например, для вашей пользовательской библиотеки? В основном для таргетинга на .net 4.6, и вам нужна определенная функциональность, которой нет в dnxcore50
Portable?
Или на самом деле достаточно цели dnx451
, и если мне не нужна конкретная функция из более поздних версий .net (4.5.2, 4.6), эта цель все равно будет использовать .net 4.6, если он установлен в системе, и я просто ориентируюсь на самую низкую версию, необходимую для моего проекта?
Означает ли это, что наличие обеих целей, dnx451 и dnx50, на самом деле создаст один и тот же результат, верно?