Android项目编译报错:ResolveLibraryProjectImports任务意外失败及文件占用问题
我之前折腾Xamarin.Android项目时,完完全全碰到过和你一模一样的糟心问题!不管是VS2017还是升级到VS2019,编译时总弹出System.IO.IOException: 进程无法访问文件‘xxx.dll’,因为该文件正被另一个进程占用,还跟着The "ResolveLibraryProjectImports" task failed unexpectedly的错误,删bin/obj、清VS缓存、甚至重装VS都不管用,差点把我整崩溃。后来试了一堆方法,终于找到几个靠谱的解决方案,分享给你:
终止占用文件的进程
这是最直接的办法。打开Windows的「资源监视器」(可以通过任务管理器的“性能”标签页打开),在“关联的句柄”里搜索报错里提到的dll文件名,找到对应的进程——大概率是adb.exe、VS的devenv.exe或者Android模拟器的进程。选中这些进程直接结束,然后重新编译试试。另外也可以用命令行重启adb:adb kill-server adb start-server禁用VS并行项目构建
并行构建虽然快,但很容易导致文件占用冲突。打开VS的「工具 > 选项」,找到「项目和解决方案 > 生成并运行」,把“最大并行项目生成数”改成1,保存后再编译。清理Xamarin相关缓存
有时候Xamarin的SDK缓存会出问题,找到以下路径删除缓存文件:%LOCALAPPDATA%\Xamarin\zips%LOCALAPPDATA%\Xamarin\Android.Sdk
删完后重启VS,它会自动重新下载需要的组件,这时候再编译试试。
修改项目输出目录
默认的bin/obj目录有时候会被其他进程盯上,右键你的Android项目选择「属性 > 生成 > 输出」,把输出目录改成一个自定义的路径,比如..\CustomAndroidOutput\,避免路径冲突。排查第三方NuGet包
有些旧版本的Xamarin.Android NuGet包或者第三方包可能存在文件锁定的bug。尝试把所有Xamarin相关的NuGet包更新到最新稳定版,或者逐个卸载可疑的第三方包,排查是不是某个包导致的问题。
另外编译前记得关掉Android模拟器或者断开真机连接,有时候设备连接也会偷偷占用文件。我当时是靠重启adb+禁用并行构建解决的,你可以逐个试试这些方法,应该能搞定!
内容的提问来源于stack exchange,提问作者tim009

