Подтвердить что ты не робот

DNX против DNX Core

Я начал очень простой проект "kick the tires" ASP.Net MVC (бета) в VS2015, и у меня возникла проблема, обертывающая мою голову вокруг ссылок DNX и DNX Core.

В этом примере я пытаюсь использовать DateTime.ToShortDateString() и включить intellisense для ядра DNX.

DNX Core Error

Я понимаю, что это происходит потому, что это не реализовано в DNX Core, и я могу обернуть вокруг него директивы компилятора.

Условная компиляция

Это правильный подход? Различия между двумя платформами документированы где угодно? Наконец, если я все Windows, все IIS все время предлагают Core DNX, или моя первая задача состоит в том, чтобы просто удалить его из файла project.json?

4b9b3361

Ответ 1

Я думаю, единственный ответ - это зависит.

Dnx vs Dnx Core

Dnx работает поверх платформы .NET(а также моно) и имеет доступ к полной версии .NET 4.5.2 (теперь .NET 4.6) BCL. В основном все добавлено в .NET с 1.0.

Dnx Core запускает ontop CoreClr, который по существу является урезанной версией .NET Framework. Некоторые вещи отсутствуют, некоторые вещи никогда не придут к CoreClr по разным причинам. Я не знаю конкретного списка того, что произойдет/не придет. Вы можете совать на corefx и coreclr github, чтобы посмотреть, что там есть.

Теперь вопрос действительно о лучшем подходе. У вас есть несколько вариантов.

Если вы никогда не планируете запускать проект в CoreCLR, вы можете удалить его из проекта project.json вместе.

Если вы планируете работать в CoreCLR (независимо от причины), вы можете сделать несколько вещей.

  • Использовать общие методы API для среды

    В вашем случае, если theDate.ToString("d") эквивалентно theDate.ToShortDateString(), то почему бы просто не использовать первый?

  • Используйте соответствующую директиву компилятора DNX451 и т.д.

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