Kestrel Запуск рамки?

У меня есть новый проект ASP.NET 5 и настройте project.json, как показано ниже:

    "frameworks": {
    "dnx451":  {
        "dependencies": {
            "ExternalLibrary": "1.3.0" }
        },
    "dnxcore50": {}
}

Я запускаю проект через Kestrel с командой по умолчанию, определенной в project.json.

"kestrel": "Microsoft.AspNet.Hosting --server Kestrel --server.urls http://localhost:5001"

Все работает отлично. Проект выполняется, и зависимость работает хорошо. Единственное, что я не понимаю, кто решает, какую базовую структуру использовать?

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

Как примечание, проект работает довольно неплохо, без каких-либо ошибок, но когда я пытаюсь вручную создать проект с помощью DNU, я получаю ошибку ниже. На данный момент я не считаю это критичным, так как это не приводит к сбою во время выполнения, насколько я могу судить. Просто хотел добавить его, если это поможет.

http://pastebin.com/x44VtXct

Ответ 1

В Visual Studio 2015 используемая структура определяется в следующем порядке:

  • Свойства проекта. Щелкните правой кнопкой мыши значок .xproj в своем обозревателе решений и выберите "Свойства". Перейдите в раздел "Приложение" (по умолчанию), и вы можете "Использовать конкретную версию DNX", включая версию, платформу и архитектуру.

  • Глобальный .json. Я не знаю, можно ли здесь изменить платформу, но, например:

    "sdk": {
        "version": "1.0.0-beta6-12032"
    }
    
  • Visual Studio использует определенное время выполнения по умолчанию в зависимости от его версии. Я считаю, что VS 2015 RC использует по умолчанию бета4,.Net Framework, x64.

При запуске из командной строки он определяется вашим активным dnvm. Вы можете использовать команду dnvm list для отображения установленных вами виртуальных машин. Вы получите список, похожий на следующий:

Active Version           Runtime Architecture Location                    Alias
------ -------           ------- ------------ --------                    -----
       1.0.0-beta4       clr     x64          C:\Users\Matt\.dnx\runtimes
       1.0.0-beta4       clr     x86          C:\Users\Matt\.dnx\runtimes
       1.0.0-beta4       coreclr x64          C:\Users\Matt\.dnx\runtimes
       1.0.0-beta4       coreclr x86          C:\Users\Matt\.dnx\runtimes
       1.0.0-beta4-11566 clr     x86          C:\Users\Matt\.dnx\runtimes
       1.0.0-beta5-11855 clr     x64          C:\Users\Matt\.dnx\runtimes
       1.0.0-beta5-11855 clr     x86          C:\Users\Matt\.dnx\runtimes
       1.0.0-beta5-11855 coreclr x64          C:\Users\Matt\.dnx\runtimes
       1.0.0-beta6-11921 clr     x64          C:\Users\Matt\.dnx\runtimes
       1.0.0-beta6-11921 clr     x86          C:\Users\Matt\.dnx\runtimes x64
       1.0.0-beta6-12005 clr     x64          C:\Users\Matt\.dnx\runtimes
       1.0.0-beta6-12005 clr     x86          C:\Users\Matt\.dnx\runtimes
  *    1.0.0-beta6-12032 clr     x64          C:\Users\Matt\.dnx\runtimes default
       1.0.0-beta6-12032 clr     x86          C:\Users\Matt\.dnx\runtimes

* указывает вашу текущую виртуальную машину. coreclr использует dnxcore50, а остальные (вероятно, mono на вашем Mac) используют соответствующую структуру, но, похоже, компилируются как dnx451.