Невозможно запустить Kestrel с помощью «dnx web», говорит «текущая целевая среда выполнения не совместима»

asp.net asp.net-core dnx coreclr kestrel-http-server

504 просмотра

1 ответ

4362 Репутация автора

Есть много похожих вопросов по SO, но я не смог найти решение своей проблемы. Очевидно, я еще недостаточно знаком с .NET Core ...)

У меня строгое приложение ASP.NET Core, и я пытаюсь запустить веб-сервер Kestrel с помощью веб- команды dnx , но это не удается, потому что кажется, что целью активной платформы является dnx451 (вместо dnxcore50 ).

Мой global.json выглядит так:

 {
   "projects": [ "FolderName", "src", "test" ], // What IS the actual project name?

  "sdk": {
    "version": "1.0.0-rc1-update2",
    "runtime":  "coreclr", 
    "architecture": "x86"
  }
}

Выдержки из проекта. Json :

    "commands": {
        "web": "Microsoft.AspNet.Server.Kestrel --server.urls=http://*:8000/"
    },

  "frameworks": {
    "dnxcore50": { }
  }

Любой в конечном итоге, в launchSettings.json :

{
  "profiles": {
    "web": {
      "commandName": "web",
      "launchBrowser": false,
      "launchUrl": "http://localhost:8000",
      "environmentVariables": {
        "Hosting:Environment": "Development"
      },
      "sdkVersion": "dnx-coreclr-win-x86.1.0.0-rc1-update2"
    }
  }
}

Насколько я вижу, зависимости в project.json соответствуют версии SDK:

"dependencies": {
    "EntityFramework.Commands": "7.0.0-rc1-final",
    "EntityFramework.MicrosoftSqlServer": "7.0.0-rc1-final",
    "Microsoft.ApplicationInsights.AspNet": "1.0.0-rc1",
    "Microsoft.AspNet.Authentication.Cookies": "1.0.0-rc1-final",
    "Microsoft.AspNet.Diagnostics.Entity": "7.0.0-rc1-final",
    "Microsoft.AspNet.Identity.EntityFramework": "3.0.0-rc1-final",
    "Microsoft.AspNet.IISPlatformHandler": "1.0.0-rc1-final",
    "Microsoft.AspNet.Mvc": "6.0.0-rc1-final",
    "Microsoft.AspNet.Mvc.TagHelpers": "6.0.0-rc1-final",
    "Microsoft.AspNet.Server.Kestrel": "1.0.0-rc1-final",
    "Microsoft.AspNet.StaticFiles": "1.0.0-rc1-final",
    "Microsoft.AspNet.Tooling.Razor": "1.0.0-rc1-final",
    "Microsoft.Extensions.CodeGenerators.Mvc": "1.0.0-rc1-final",
    "Microsoft.Extensions.Configuration.FileProviderExtensions": "1.0.0-rc1-final",
    "Microsoft.Extensions.Configuration.Json": "1.0.0-rc1-final",
    "Microsoft.Extensions.Configuration.UserSecrets": "1.0.0-rc1-final",
    "Microsoft.Extensions.Logging": "1.0.0-rc1-final",
    "Microsoft.Extensions.Logging.Console": "1.0.0-rc1-final",
    "Microsoft.Extensions.Logging.Debug": "1.0.0-rc1-final",
    "Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0-rc1-final"
  }

Однако, когда я запускаю dnx web, я получаю следующее:

System.InvalidOperationException: The current runtime target framework is not compatible with 'Okaymaker.Web'.
Current runtime target framework: 'DNX,Version=v4.5.1 (dnx451)'
 Version:      1.0.0-rc1-16609
 Type:         Clr
 Architecture: x86
 OS Name:      Windows
 OS Version:   10.0
 Runtime Id:   win10-x86

Please make sure the runtime matches a framework specified in project.json

Не уверен, почему в нем говорится, что текущая целевая платформа - dnx451 ? Я предполагаю, что могу запустить dnx use до запуска dnx web , но у меня сложилось впечатление, что конфиг должен обрабатывать настройки для меня?

Вот что я вижу, если я запускаю список dnvm :

Active Version           Runtime Architecture Location                         Alias
------ -------           ------- ------------ --------                         -----
       1.0.0-beta8       clr     x64          C:\Users\TedNyberg\.dnx\runtimes
       1.0.0-beta8       clr     x86          C:\Users\TedNyberg\.dnx\runtimes
       1.0.0-beta8       coreclr x64          C:\Users\TedNyberg\.dnx\runtimes
       1.0.0-beta8       coreclr x86          C:\Users\TedNyberg\.dnx\runtimes
       1.0.0-rc1-update1 clr     x64          C:\Users\TedNyberg\.dnx\runtimes
       1.0.0-rc1-update1 clr     x86          C:\Users\TedNyberg\.dnx\runtimes
       1.0.0-rc1-update1 coreclr x64          C:\Users\TedNyberg\.dnx\runtimes
       1.0.0-rc1-update1 coreclr x86          C:\Users\TedNyberg\.dnx\runtimes
  *    1.0.0-rc1-update2 clr     x86          C:\Users\TedNyberg\.dnx\runtimes default
       1.0.0-rc1-update2 coreclr x86          C:\Users\TedNyberg\.dnx\runtimes

Изменить. Похоже, что эти проблемы можно решить / избежать, установив обновление 3 для Visual Studio 2015 и обновленный инструментарий для .NET Core , которые доступны по адресу: https://www.microsoft.com/net/core#windows.

Автор: Ted Nyberg Источник Размещён: 19.07.2016 09:32

Ответы (1)


0 плюса

4063 Репутация автора

Решение

Вы должны использовать, dnvm useчтобы установить текущее время выполнения в coreclr. VisualStudio был недостаточно умным, но опубликованные скрипты были достаточно умными, чтобы создать сценарий оболочки для статического выбора правильного движка.

Это был подтвержденный недостаток RC1 (извините за то, что ленился искать видео-заметки из ASP.NET Community Standup) и был исправлен как часть dotnetинтерфейса командной строки.

Автор: Thomas Размещён: 20.08.2016 10:20
Вопросы из категории :
32x32