You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VS Code运行C# Hello World出现MSB4018访问拒绝错误原因咨询

错误根因

你遇到的是.NET 6编译阶段的文件权限错误,核心触发点是CreateAppHost生成可执行宿主环节,无法访问路径C:\Users\insaf\OneDrive\Bureau\csharp\obj\Debug\net6.0\apphost.exe,抛出UnauthorizedAccessException拒绝访问异常。
从项目路径判断,90%以上的概率是项目存放在OneDrive同步目录导致:OneDrive的同步进程会在文件生成后立刻锁定读取上传,导致编译流程无法覆盖、删除已生成的apphost.exe文件。其余可能的触发原因包括:

  • 上一次运行的程序进程未正常退出,后台持续占用apphost.exe文件
  • 第三方杀毒软件/Windows Defender实时防护拦截了对该exe文件的修改操作
  • 当前Windows账号对项目目录没有完整读写权限
修复步骤

按顺序尝试,执行到某一步问题解决即可停止:

  1. 直接将整个csharp项目文件夹移出OneDrive同步目录,比如放到C:\code、C:\Users\insaf\source\repos这类纯本地、无同步程序监控的路径,重新用VS Code打开项目后运行即可。这是最彻底的解决方案,所有开发项目都不建议存放在同步盘目录下,同步进程的文件锁会反复触发各类编译、读写异常。
  2. 如果不想移动项目,先打开任务管理器,结束所有dotnet.exe、和你项目同名的csharp.exe/apphost.exe进程,再手动删除项目根目录下的bin、obj两个缓存文件夹,重新执行编译运行。
  3. 临时暂停OneDrive同步、临时关闭杀毒软件实时防护后重试编译。
  4. 临时跳过exe宿主生成做验证:打开项目下的csharp.csproj文件,在<PropertyGroup>节点中添加配置<UseAppHost>false</UseAppHost>,保存后重新运行。该配置会让dotnet run直接执行编译生成的dll文件,不会生成独立的apphost.exe,自然不会触发该文件权限问题,配置参考:
<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net6.0</TargetFramework>
    <UseAppHost>false</UseAppHost>
  </PropertyGroup>
</Project>

补充说明:<UseAppHost>false</UseAppHost>仅适合开发阶段临时验证,正式发布编译生成独立exe文件时需要移除该配置,否则不会输出可直接双击运行的exe文件。

内容的提问来源于stack exchange,提问作者ifcheprogrammer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 13:36:22