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

Rider编译失败:文件被占用引发System.IO.IOException错误求助

解决Fody编译时System.IO.IOException(文件被占用但不存在)问题

核心问题分析

Fody在IL注入阶段需要独占访问输出文件,即便报错提及的文件/目录不存在,也大概率是系统文件句柄泄漏或Fody全局缓存残留引发的虚假占用提示。


分步解决方案

1. 彻底清理Fody全局缓存

Fody在用户目录存储的全局缓存可能残留失效句柄:

  • 打开文件资源管理器,导航到C:\Users\<你的用户名>\.nuget\packages\fody
  • 删除该目录下所有版本的Fody文件夹
  • 重启IDE,右键项目选择「NuGet包管理器→还原」重新获取依赖

2. 强制释放系统残留句柄

用Windows内置工具排查并释放潜在的文件锁定:

  • 按下Win+R输入resmon.exe打开资源监视器
  • 切换到「CPU」选项卡,点击底部「关联的句柄」
  • 在搜索框输入报错路径关键词(如Curator.exe),找到对应项后右键选择「结束进程」
  • 若搜索不到结果,直接重启Windows资源管理器(任务管理器→进程→找到Windows资源管理器→右键重启)

3. 禁用Fody增量编译

增量编译的缓存冲突可能触发异常,手动修改项目文件:

  • 右键项目选择「编辑项目文件」(.csproj/.vbproj)
  • 在<PropertyGroup>节点中添加配置:
    <FodyDisableIncrementalProcessing>true</FodyDisableIncrementalProcessing>
    
  • 保存后执行「Build→Clean Solution」,再重新编译

4. 重置MSBuild与NuGet缓存

清理MSBuild的无效状态缓存:

  • 打开管理员权限的命令提示符,执行:
    dotnet clean --verbosity detailed
    dotnet nuget locals all --clear
    
  • 若使用Visual Studio,额外执行:
    devenv /clean
    

5. 排查第三方插件冲突

代码加密、混淆类插件可能与Fody的IL注入逻辑冲突:

  • 临时卸载所有第三方编译插件(仅保留Fody核心及必要编织器)
  • 重新编译项目,若恢复正常,再逐个排查插件兼容性

验证流程

完成操作后:

  • 先编译一个空测试项目,确认Fody能正常工作
  • 再回到原项目,清理后重新编译

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 07:15:01