dotnet 执行 docker 容器 error MSB4018 CreateAppHost 任务意外失败可能原因
在使用 ASP.NET Core 的 docker 调试的时候,在生成的这一步提示 C:Program Filesdotnetsdk3.1.201SdksMicrosoft.NET.SdktargetsMicrosoft.NET.Sdk.targets(424,5): error MSB4018: “CreateAppHost”任务意外失败 可能的原因是 docker 内之前的容器没有关闭
关注输出窗口,如果可以看到如下内容,那么就是 docker 内存在上次运行的容器没有关闭
1>docker exec -i 93b62c811acccda3232d8a18072f54991fc03198f646b810f8da08351d46daf5 /bin/sh -c "if PID=$(pidof dotnet); then kill $PID; fi"
1>/bin/sh: pidof: command not found
1>C:UsersLindexi.nugetpackagesmicrosoft.visualstudio.azure.containers.tools.targets1.10.8buildContainer.targets(138,5): warning CTP1006: 未能在容器中停止应用程序。由于文件正在使用中,因此生成可能会失败。
1>C:UsersLindexi.nugetpackagesmicrosoft.visualstudio.azure.containers.tools.targets1.10.8buildContainer.targets(138,5): warning CTP1006: Docker 命令失败,退出代码为 0。
1>C:UsersLindexi.nugetpackagesmicrosoft.visualstudio.azure.containers.tools.targets1.10.8buildContainer.targets(138,5): warning CTP1006: /bin/sh: pidof: command not found
此时 VS 的错误提示内容如下
11>C:Program Filesdotnetsdk3.1.201SdksMicrosoft.NET.SdktargetsMicrosoft.NET.Sdk.targets(424,5): error MSB4018: “CreateAppHost”任务意外失败。
11>C:Program Filesdotnetsdk3.1.201SdksMicrosoft.NET.SdktargetsMicrosoft.NET.Sdk.targets(424,5): error MSB4018: Microsoft.NET.HostModel.HResultException: 8007006E
11>C:Program Filesdotnetsdk3.1.201SdksMicrosoft.NET.SdktargetsMicrosoft.NET.Sdk.targets(424,5): error MSB4018: 在 Microsoft.NET.HostModel.ResourceUpdater.Update()
11>C:Program Filesdotnetsdk3.1.201SdksMicrosoft.NET.SdktargetsMicrosoft.NET.Sdk.targets(424,5): error MSB4018: 在 Microsoft.NET.HostModel.AppHost.HostWriter.<>c__DisplayClass2_0.<CreateAppHost>g__UpdateResources|1()
11>C:Program Filesdotnetsdk3.1.201SdksMicrosoft.NET.SdktargetsMicrosoft.NET.Sdk.targets(424,5): error MSB4018: 在 Microsoft.NET.HostModel.RetryUtil.RetryOnWin32Error(Action func)
11>C:Program Filesdotnetsdk3.1.201SdksMicrosoft.NET.SdktargetsMicrosoft.NET.Sdk.targets(424,5): error MSB4018: 在 Microsoft.NET.HostModel.AppHost.HostWriter.CreateAppHost(String appHostSourceFilePath, String appHostDestinationFilePath, String appBinaryFilePath, Boolean windowsGraphicalUserInterface, String assemblyToCopyResorcesFrom)
11>C:Program Filesdotnetsdk3.1.201SdksMicrosoft.NET.SdktargetsMicrosoft.NET.Sdk.targets(424,5): error MSB4018: 在 Microsoft.NET.Build.Tasks.CreateAppHost.ExecuteCore()
11>C:Program Filesdotnetsdk3.1.201SdksMicrosoft.NET.SdktargetsMicrosoft.NET.Sdk.targets(424,5): error MSB4018: 在 Microsoft.NET.Build.Tasks.TaskBase.Execute()
11>C:Program Filesdotnetsdk3.1.201SdksMicrosoft.NET.SdktargetsMicrosoft.NET.Sdk.targets(424,5): error MSB4018: 在 Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()
11>C:Program Filesdotnetsdk3.1.201SdksMicrosoft.NET.SdktargetsMicrosoft.NET.Sdk.targets(424,5): error MSB4018: 在 Microsoft.Build.BackEnd.TaskBuilder.<ExecuteInstantiatedTask>d__26.MoveNext()
解决方法就是通过命令结束 docker 容器
使用 docker ps
命令找到所有在运行的实例,使用 docker kill
命令杀掉正在运行的实例,重新在 VS 按下 F5 开始调试就可以
关于 docker 命令请看 docker常用命令-docker kill_OneZeroTwoFour-CSDN博客
VisualStudio 解决首次调试 docker 的 vs2017u5 exists, deleting 太慢问题
本文会经常更新,请阅读原文: https://blog.lindexi.com/post/dotnet-%E6%89%A7%E8%A1%8C-docker-%E5%AE%B9%E5%99%A8-error-MSB4018-CreateAppHost-%E4%BB%BB%E5%8A%A1%E6%84%8F%E5%A4%96%E5%A4%B1%E8%B4%A5%E5%8F%AF%E8%83%BD%E5%8E%9F%E5%9B%A0.html ,以避免陈旧错误知识的误导,同时有更好的阅读体验。
本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名林德熙(包含链接: https://blog.lindexi.com ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请 与我联系 。
- 如何使用Metasploit对安卓手机进行控制
- 关于MySQL DNS解析探究之二:unauthenticated user
- Thrift Direct Memory OOM问题解决方法
- Mapreduce程序中reduce的Iterable参数迭代出是同一个对象
- 内部威胁那些事儿(二):系统破坏
- 从用户行为去理解内容-item2vec及其应用
- Dubbo与Zookeeper、SpringMVC整合和使用(入门级)
- Websocket HandShake Sec-WebSocket-Accept 生成策略
- 关于JVM CPU资源占用过高的问题排查
- ActiveMQ简单介绍以及安装
- Java Process destroy方法kill进程,返回码测试
- 百度人脸识别API Java调用
- Java Socket Timeout总结
- 求一个数组中子数组的最大和算法(Java实现)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 每日两题 T12
- 删除列中的 NULL 值
- Linux生产环境CPU使用率100%,教你定位到具体函数
- Nginx技术总结之二——Nginx进程模型
- 「PostgreSQL技巧」Citus实时执行程序如何并行化查询
- Nginx技术总结之四——集群和负载均衡的算法与实现
- SQL 找出 100 以内的质数
- SQL 获取最长的日期序列
- Lucene基本知识入门
- LeetCode 35. 搜索插入位置
- 【面试系列】反射+动态代理,你为何老是搞不懂?
- 我不知道还可以用 JS 做的 6 件事
- 【服务网格架构】Envoy架构概览(7):断路,全局限速和TLS
- 你的消息队列如何保证消息不丢失,且只被消费一次,这篇就教会你
- 【服务网格架构】Envoy架构概览(9):访问日志,MongoDB,DynamoDB,Redis