ASP.NET核心 - 在Visual Studio 2015中通​​过Docker进行调试时出现的问题

Ank*_*jay 5 c# asp.net docker visual-studio-2015 asp.net-core

我在使用Visual Studio中的Docker运行构建在ASP.NET Core上的应用程序时遇到问题.我的应用程序只使用dnxcore50框架.我的project.json文件是:

{
  "version": "1.0.0-*",
  "compilationOptions": {
    "emitEntryPoint": true
  },
  "dependencies": {
    "Microsoft.AspNet.IISPlatformHandler": "1.0.0-rc1-final",
    "Microsoft.AspNet.Mvc": "6.0.0-rc1-final",
    "Microsoft.AspNet.Server.Kestrel": "1.0.0-rc1-final",
    "Microsoft.AspNet.StaticFiles": "1.0.0-rc1-final"
  },
  "frameworks": {
    "dnxcore50": { }
  },
  "exclude": [
    "wwwroot",
    "node_modules"
  ],
  "publishExclude": [
    "**.user",
    "**.vspscc"
  ],
  "commands": {
    "web": "Microsoft.AspNet.Server.Kestrel"
  }
}
Run Code Online (Sandbox Code Playgroud)

我尝试了以下方法:

  1. 当我的dnvm指向运行时dnx-coreclr-win-x64.1.0.0-rc1-update1时,如下图所示.

在此输入图像描述

我的应用程序成功构建 但是,我在docker上运行/调试应用程序时遇到以下错误,我的应用程序卡在"打开站点http://192.168.99.100:5000 " 在此输入图像描述

错误详细信息: 当前运行时框架与'app'不兼容当前运行时目标框架:'DNX,Version = v4.5.1(dnx451)'请确保运行时与project.json中指定的框架匹配

  1. 由于上面的错误消息表明框架中存在不匹配,我通过修改默认别名和执行命令将默认和活动运行时更改为dnx-coreclr-linux-x64.1.0.0-rc1-update1dnvm use default -p.然后,我重启我的VS(以确保在VS中可以看到更改).

在此输入图像描述

但是,我的应用程序仍然建立在DNX版本v4.5.1上,如下面的构建日志中所示:

1>  Information: [LoaderContainer]: Load name=Microsoft.Dnx.Tooling
1>  Information: [PathBasedAssemblyLoader]: Loaded name=Microsoft.Dnx.Tooling in 2ms
1>  Information: [Bootstrapper] Runtime Framework: DNX,Version=v4.5.1
1>  Microsoft .NET Development Utility Mono-x64-1.0.0-rc1-16231
Run Code Online (Sandbox Code Playgroud)

因此,应用程序再次无法以与第1点相同的错误运行.

此外,在更改默认运行时dnu还原从命令行停止工作并给出以下错误:

'dnu'不被识别为内部或外部命令,可操作程序或批处理文件.

有趣的是,'dnu'restore命令继续在VS中运行(如VS构建日志中所示).

  1. 然后我尝试将dnvm运行时更改为dnx-mono.1.0.0-rc1-update1.但它失败并出现以下错误:

找不到dnx-mono.1.0.0-rc1-update1.1.0.0-rc1-update1,你需要运行'dnvm install default'吗?在C:\ Program Files\Microsoft DNX\Dnvm\dnvm.ps1:1659 char:9 + throw"找不到$ runtimeFullName,你需要运行'$ Com ... + ~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 〜+ CategoryInfo:OperationStopped :(找不到dnx ... stall default'?:String)[],运行timeException + FullyQualifiedErrorId:找不到dnx-mono.1.0.0-rc1-update1.1.0.0-rc1-update1,你需要运行'dnvm install default'吗?

我需要使用什么运行时从VS运行docker以及如何更改它?请求您的帮助以解决问题.

更新 我终于能够通过将docker file第一行更改为FROM microsoft/aspnet:1.0.0-rc1-update1-coreclrFROM 来解决此问题microsoft/aspnet:1.0.0-rc1-update1.谢谢@bertt的提示.

ber*_*rtt 2

你的 dockerfile 的第一行是什么?对于 CoreClr 应为“FROM microsoft/aspnet:1.0.0-rc1-update1-coreclr”