我在使用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"
}
}
我尝试了以下方法:
>当我的dnvm指向运行时dnx-coreclr-win-x64.1.0.0-rc1-update1时,如下图所示.
我的应用程序成功构建但是,我在docker上运行/调试应用程序时遇到以下错误,我的应用程序卡在“打开站点http://192.168.99.100:5000”
错误详情:
Current运行时框架与’app’不兼容
当前运行时目标框架:’DNX,Version = v4.5.1(dnx451)’
请确保运行时与project.json中指定的框架匹配
>由于上面的错误消息表明框架中存在不匹配,我通过修改默认别名并执行命令dnvm use default -p将默认和活动运行时更改为dnx-coreclr-linux-x64.1.0.0-rc1-update1.然后,我重启我的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
因此,应用程序再次无法以与第1点相同的错误运行.
此外,在更改默认运行时dnu还原从命令行停止工作并给出以下错误:
‘dnu’ is not recognized as an internal or external command,operable
program or batch file.
有趣的是,’dnu’restore命令继续在VS中运行(如VS构建日志中所示).
>然后我尝试将dnvm运行时更改为dnx-mono.1.0.0-rc1-update1.但它失败并出现以下错误:
Cannot find dnx-mono.1.0.0-rc1-update1.1.0.0-rc1-update1,do you need
to run ‘dnvm install
default’?
At C:\Program Files\Microsoft DNX\Dnvm\dnvm.ps1:1659 char:9
+ throw “Cannot find $runtimeFullName,do you need to run ‘$Com …
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : OperationStopped: (Cannot find dnx…stall default’?:String) [],Run
timeException
+ FullyQualifiedErrorId : Cannot find dnx-mono.1.0.0-rc1-update1.1.0.0-rc1-update1,do you nee
d to run ‘dnvm install default’?
我需要使用什么运行时从VS运行docker以及如何更改它?请求您的帮助以解决问题.
更新
我终于能够通过将docker文件第一行更改为FROM microsoft / aspnet来解决此问题:1.0.0-rc1-update1-coreclr FROM microsoft / aspnet:1.0.0-rc1-update1.谢谢@bertt的提示.
对于CoreClr,应该是’FROM microsoft / aspnet:1.0.0-rc1-update1-coreclr’