构建解决方案报access denied错误 路径访问被拒绝如何解决
构建解决方案触发Access Denied(无法设置文件最后访问/修改时间)修复指南

注意:Windows系统中文件夹默认的「只读」属性为半选状态,仅用于标记系统自定义文件夹属性,不会阻止程序写入、修改文件夹内的文件,因此单独取消bin文件夹的只读勾选无法解决这类访问拒绝问题。
按以下优先级排查修复:
- 排查文件占用问题
这类报错90%以上是bin目录下的编译输出文件被其他进程锁定,导致编译流程无法修改文件时间属性:- 关闭所有可能占用文件的程序:包括正在运行的项目生成的exe/后台服务、IIS/IIS Express调试进程、打开了bin目录的文件资源管理器窗口
- 打开任务管理器,结束残留的
MSBuild.exe、dotnet.exe、和项目同名的运行中进程,如果使用Visual Studio可以先完全关闭devenv进程再重新打开 - 如果找不到占用进程,打开系统自带的资源监视器,在「CPU」标签页下的「关联的句柄」搜索框输入报错路径里的文件名,即可定位到占用进程,手动结束即可
- 修正目录NTFS权限与存储位置
- 不要把项目放在
C:\Program Files、C:\Windows、系统盘根目录这类受UAC保护的系统路径,这类路径默认会拦截普通用户进程的写入操作,把项目移动到非系统盘的自定义开发目录(比如D:\Code\Projects)下再测试 - 右键点击项目根目录(不要仅修改bin文件夹),选择「属性-安全」,给当前登录的系统用户、
Authenticated Users用户组授予完全控制权限,勾选「替换所有子对象权限项」,等待权限递归应用完成后再尝试编译
- 不要把项目放在
- 清理编译缓存与异常配置
- 关闭IDE后手动删除项目目录下的
bin、obj两个缓存文件夹,重新打开解决方案执行「重新生成」 - 不要直接在压缩包预览窗口打开解决方案,必须先把压缩包完整解压到本地目录后再打开sln文件,否则文件会存放在权限受限的临时目录,触发访问错误
- 检查杀毒软件、Windows Defender的防护日志,如果bin目录下的文件被标记为风险项拦截写入,把项目根目录加入杀毒软件白名单即可
- 关闭IDE后手动删除项目目录下的
- 特殊场景适配
- 如果项目存放在OneDrive、百度网盘等同步盘的同步目录下,同步进程会锁定正在同步的文件导致编译失败,把项目移出同步目录,或者暂时暂停同步功能再编译
- 如果开启了Windows Defender的「受控文件夹访问」(勒索软件防护功能),需要把你使用的IDE(Visual Studio/Rider等)、
MSBuild.exe、dotnet.exe加入允许访问的应用列表,否则防护规则会拦截程序修改目录内文件属性的操作
内容的提问来源于stack exchange,提问作者Zeeshan Sulemani
相关产品推荐
相关产品推荐

