NuGet 包安装失败“包还原失败。回滚 <xamarin.android> 的包更改”
Posted
技术标签:
【中文标题】NuGet 包安装失败“包还原失败。回滚 <xamarin.android> 的包更改”【英文标题】:NuGet package install fails "Package restore failed. Rolling back package changes for <xamarin.android>" 【发布时间】:2018-09-04 20:12:27 【问题描述】:安装任何软件包都会失败并出现此错误,更新软件包也会产生此错误。尝试安装“Xamarin.GooglePlayServices.Ads”时,清除 NuGet 缓存文件会导致此错误更改为“拒绝访问 mono.cecil.dll 路径”。重新启动 Visual Studio 会导致包还原错误再次出现。
版本:
操作系统:赢 10Visual Studio Information:
https://pastebin.com/vnuyZMWk
Xamarin.Forms 项目:
目标框架:.NET 2.0Xamarin.android 项目:
最低 Android 版本:5.0(API 级别 21) 目标 Android 版本:使用编译 SDK 版本 (8.0)【问题讨论】:
你能检查一下你是不是mono.android包,如果你做了同样的路径是什么 xamarin.Forms 包已安装,它具有 MonoAndroid 的依赖项。我相信它已安装,但我在 Visual Studio 的 NuGet 包管理器中找不到安装路径。 好吧,我问你mono android包的路径也是出于同样的原因,因为你安装的包有8.1依赖,其次,路径有dll的版本 【参考方案1】:经过反复试验,我找到了解决方案。
Visual Studio:
Update visual studio
https://pastebin.com/GkEeRqg3
更新 Xamarin.Forms 和 NuGet
从“Visual Studio 安装程序”修复 Visual Studio
这修复了拒绝访问 *.dll 错误
Xamarin.Android 项目:
设置目标 Android 版本:8.1 API 27 这使得需要 monoandroid81 的包很满意。打扫房间
删除文件夹 C:\Users\修复 NuGet
右键Update-Package -Reinstall
为什么会这样?
Xamarin.Android 中使用的一些 NuGet 包以某种方式使用了 monoandroid81。尽管我的解决方案设置为使用 80,但安装的一些 NuGet 包仅与 81 兼容。 这已在 NuGet 控制台中显示。
Package Xamarin.Android.Support.v7.MediaRouter 27.0.2 is not compatible with monoandroid80 (MonoAndroid,Version=v8.0). Package Xamarin.Android.Support.v7.MediaRouter 27.0.2 supports:
monoandroid81 (MonoAndroid,Version=v8.1)
【讨论】:
【参考方案2】:我在尝试一个一个更新库时遇到了同样的错误。然后我尝试选择所有需要的库并单击搜索框下方的 Update 按钮,它就可以工作了。我不得不说这些库彼此之间存在依赖关系。 这是一个例子:
【讨论】:
以上是关于NuGet 包安装失败“包还原失败。回滚 <xamarin.android> 的包更改”的主要内容,如果未能解决你的问题,请参考以下文章
针对使用nuget命令,因下载超时安装失败的程序包,可以离线方式安装
带有 NuGet 上游源的 Azure DevOps Artifacts 源的安装包失败
[Visual Studio] 记一次排错:打不开 Nuget 包管理器里的安装package页面,无法 安装 / 恢复 包