.NET Core 3.1项目编译报CS2012错误:无法写入DLL求助
.NET Core 3.1 DLL项目编译报错CS2012的排查与解决
我最近碰到一个特别棘手的本地.NET Core 3.1 DLL项目编译问题,折腾了好几天才找到根源,这里把整个过程分享出来,给遇到类似问题的朋友参考:
问题场景
我有一个未纳入版本控制、部署在本地机器上的.NET Core 3.1 DLL项目,突然无法编译,弹出错误:
CSC : error CS2012: Cannot open 'some.dll' for writing -- 'Access to the path 'some.dll' is denied.'
一开始以为是Visual Studio的问题,特意用dotnet命令行编译,结果还是报同样的错。
试过的无效解决方法
为了排查问题,我几乎试遍了常规手段,但都没效果:
- 关闭Visual Studio,手动删除项目的
obj和bin文件夹,重新编译依然报错 - 删除整个项目,创建同名新项目,问题依旧存在
- 移除项目对其他项目的引用,没有任何改善
- 参考了网上相关问题的各种建议,都没能解决
中间有两次临时成功的情况:把目标框架改为3.0、修改项目名称后,第一次编译成功了,但二次编译时问题立刻复现;后来我把整个解决方案迁移到新文件夹,创建全新项目,正常运行了几天,但问题再次出现,而且只发生在这个单元测试项目上。
最终根因与解决
最后经过排查才发现:我的单元测试项目名称TheGenesysProject.Engine.Test被公司的安全软件当成可疑对象隔离了!改名后能暂时恢复,但添加新测试代码后又会被隔离。
彻底解决的方法是:将该项目的源代码文件夹添加到公司恶意软件扫描的排除列表中,之后编译就完全正常了,再也没出现过权限拒绝的问题。
内容的提问来源于stack exchange,提问作者Danny van der Kraan
相关产品推荐
相关产品推荐

