安装Xamarin.GooglePlayServices.Maps时Mono.Cecil.dll访问被拒错误求助
遇到这种文件访问被拒的情况,大概率是文件被占用、缓存损坏或权限出了问题,给你几个实用的排查思路:
先关掉所有可能占用文件的进程
Visual Studio、MSBuild甚至NuGet的后台进程经常会攥住Mono.Cecil.dll不放。先把所有VS窗口、Xamarin相关工具都关掉,然后打开任务管理器,找到devenv.exe(VS主进程)、msbuild.exe、nuget.exe这类进程,全部结束掉,再重新尝试安装包。清理NuGet本地缓存试试
缓存损坏也会导致各种奇怪的安装错误。打开PowerShell或者CMD,运行这条命令清空所有NuGet缓存:nuget locals all -clear清理完之后再重新安装
Xamarin.GooglePlayServices.Maps,很多时候这类文件占用问题就能解决。手动处理冲突的Mono.Cecil.dll文件
先找到这个DLL的位置:要么在你项目的packages文件夹里,要么在NuGet全局缓存目录(C:\Users\[你的用户名]\.nuget\packages)里。找到后尝试把它重命名(比如改成Mono.Cecil_old.dll)或者直接删除。如果删的时候还是提示被占用,就回到第一步把相关进程都杀干净再操作,之后再重新安装包。用管理员权限启动VS
有时候不是文件只读,而是当前用户没有足够权限修改目标目录的文件。右键点VS图标,选“以管理员身份运行”,再打开项目安装NuGet包,说不定就能绕过权限限制。检查杀毒软件的拦截
不少杀毒软件会把NuGet的文件操作误判成恶意行为,从而锁定Mono.Cecil.dll。可以临时关掉杀毒软件的实时防护,安装完成后再打开,看看是不是这个原因导致的。最后一招:修复Visual Studio
如果以上方法都没用,可能是VS本身的组件出了问题。打开Visual Studio Installer,找到你的VS安装实例,点“修改”然后选“修复”,修复完重启电脑再试。另外也可以把VS更到最新版本,兼容性问题也可能引发这类错误。
内容的提问来源于stack exchange,提问作者bunkkin

