Visual Studio 2022构建.NET项目时遇Inception Forwarder文件锁定问题
解决Visual Studio 2022构建.NET项目时Inception Forwarder锁定DLL的间歇性问题
问题背景
用Visual Studio 2022构建.NET 8项目时,时不时会构建失败,提示删不掉obj\Debug\net8.0-windows10.0.19041.0\project_name.dll,说文件被Inception Forwarder进程(PID 8984)占着。等个几秒再重新构建就正常了,推测是公司设备上装的Stairwell Inception Forwarder(一款监控资产文件的轻量服务)在扫描DLL的时候锁了文件。
已打算尝试的方法
- 在MSBuild构建流程里加个延迟,给监控工具足够时间释放文件
实测可行的解决方案
1. 给MSBuild加延迟任务
直接在项目的.csproj文件里加自定义任务,让构建前先等几秒:
<Target Name="WaitBeforeClean" BeforeTargets="Clean"> <Exec Command="timeout /t 5 /nobreak" IgnoreExitCode="true" /> </Target> <Target Name="WaitBeforeBuild" BeforeTargets="Build"> <Exec Command="timeout /t 3 /nobreak" IgnoreExitCode="true" /> </Target>
注:timeout /t 5是等5秒,时长可以自己调;IgnoreExitCode="true"是防止超时命令的退出码搞砸构建流程。
2. 让IT把输出目录排除监控
找公司IT部门,把项目的obj和bin目录加到Inception Forwarder的监控排除列表里。这类监控工具一般都支持排除特定路径,避开构建时频繁生成删除的文件,从根儿上解决锁定问题。
3. 调整Visual Studio的构建设置
- 开启并行构建的同时,在项目属性的“生成”选项卡,勾选“生成前清理输出目录”的延迟处理(或者调整构建事件顺序);
- 试试增量构建模式,减少全量清理重建的次数,降低文件被锁的概率。
4. 应急手动解锁
碰到锁定的时候,要么通过任务管理器结束Inception Forwarder进程(先确认公司允许这么干),要么用Process Explorer工具释放文件句柄:
- 打开Process Explorer,按
Ctrl+F搜索被锁的DLL文件名; - 找到对应的Inception Forwarder进程,右键选择“Close Handle”。
内容的提问来源于stack exchange,提问作者Étienne Laneville
相关产品推荐
相关产品推荐

