Visual Studio生成项目报错MSB4018:CreateAppHost任务意外失败
问题描述
每次生成.NET项目时都会抛出如下错误:
1>C:\Program Files\dotnet\sdk\3.1.302\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.targets(424,5): error MSB4018: The "CreateAppHost" task failed unexpectedly. 1>C:\Program Files\dotnet\sdk\3.1.302\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.targets(424,5): error MSB4018: Microsoft.NET.HostModel.HResultException: 80070002 1>C:\Program Files\dotnet\sdk\3.1.302\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.targets(424,5): error MSB4018: at Microsoft.NET.HostModel.ResourceUpdater.AddResourcesFromPEImage(String peFile) 1>C:\Program Files\dotnet\sdk\3.1.302\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.targets(424,5): error MSB4018: at Microsoft.NET.HostModel.AppHost.HostWriter.<>c__DisplayClass2_0.<CreateAppHost>g__UpdateResources|1() 1>C:\Program Files\dotnet\sdk\3.1.302\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.targets(424,5): error MSB4018: at Microsoft.NET.HostModel.RetryUtil.RetryOnWin32Error(Action func) 1>C:\Program Files\dotnet\sdk\3.1.302\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.targets(424,5): error MSB4018: at Microsoft.NET.HostModel.AppHost.HostWriter.CreateAppHost(String appHostSourceFilePath, String appHostDestinationFilePath, String appBinaryFilePath, Boolean windowsGraphicalUserInterface, String assemblyToCopyResorcesFrom) 1>C:\Program Files\dotnet\sdk\3.1.302\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.targets(424,5): error MSB4018: at Microsoft.NET.Build.Tasks.CreateAppHost.ExecuteCore() 1>C:\Program Files\dotnet\sdk\3.1.302\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.targets(424,5): error MSB4018: at Microsoft.NET.Build.Tasks.TaskBase.Execute() 1>C:\Program Files\dotnet\sdk\3.1.302\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.targets(424,5): error MSB4018: at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute() 1>C:\Program Files\dotnet\sdk\3.1.302\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.targets(424,5): error MSB4018: at Microsoft.Build.BackEnd.TaskBuilder.<ExecuteInstantiatedTask>d__26.MoveNext()
已尝试无效方案
- 以管理员身份运行Visual Studio
- 删除项目的obj和bin文件夹
- 新建项目后复制原项目的所有源代码
仅关闭杀毒软件可临时解决问题,但不符合使用安全要求。
可行解决方案
- 添加杀毒软件排除项:将以下三类路径加入本地杀毒软件的扫描排除列表,既保留杀毒防护能力,又不会拦截编译操作:
- 所有开发项目的根目录,尤其是各项目下的
bin、obj文件夹 - .NET SDK安装目录,默认路径为
C:\Program Files\dotnet\sdk\ - Visual Studio安装目录,默认路径为
C:\Program Files\Microsoft Visual Studio\
如果是企业域管控的杀毒软件,可联系IT运维将上述路径加入集团白名单策略。
- 所有开发项目的根目录,尤其是各项目下的
- 项目配置跳过AppHost生成:如果开发阶段不需要生成独立的exe启动文件,可编辑对应项目的
.csproj文件,在<PropertyGroup>节点下添加配置:
该配置会直接跳过报错的CreateAppHost任务,程序启动时会依赖系统安装的.NET Runtime运行,适合临时规避问题。<UseAppHost>false</UseAppHost> - 升级.NET SDK版本:当前使用的.NET Core 3.1 SDK已经停止官方支持,升级到.NET 6、.NET 8等仍在支持周期内的LTS版本,旧版本SDK的已知兼容性问题已修复,可大幅降低杀毒软件误报概率。
- 单独白名单编译输出文件:如果仅需要处理单个项目,可将该项目编译输出的exe文件加入杀毒软件白名单,出现隔离时直接恢复并加白,无需完全关闭杀毒防护。
内容的提问来源于stack exchange,提问作者Salmon
相关产品推荐
相关产品推荐

