【问题标题】:NuGet package install fails "Package restore failed. Rolling back package changes for <xamarin.android>"NuGet 包安装失败“包还原失败。回滚 <xamarin.android> 的包更改”
【发布时间】:2018-09-04 20:12:27
【问题描述】:

安装任何软件包都会失败并出现此错误,更新软件包也会产生此错误。尝试安装“Xamarin.GooglePlayServices.Ads”时,清除 NuGet 缓存文件会导致此错误更改为“拒绝访问 mono.cecil.dll 路径”。重新启动 Visual Studio 会导致包还原错误再次出现。

  1. 版本:

  2. Xamarin.Forms 项目:

    • 目标框架:.NET 2.0
  3. Xamarin.Android 项目:

    • 最低 Android 版本:5.0(API 级别 21)
    • 目标 Android 版本:使用编译 SDK 版本 (8.0)

【问题讨论】:

  • 你能检查一下你是不是mono.android包,如果你做了同样的路径是什么
  • xamarin.Forms 包已安装,它具有 MonoAndroid 的依赖项。我相信它已安装,但我在 Visual Studio 的 NuGet 包管理器中找不到安装路径。
  • 好吧,我问你mono android包的路径也是出于同样的原因,因为你安装的包有8.1依赖,其次,路径有dll的版本

标签: c# xamarin xamarin.android nuget


【解决方案1】:

经过反复试验,我找到了解决方案。

  1. Visual Studio:

    • Update visual studiohttps://pastebin.com/GkEeRqg3
      • 更新 Xamarin.Forms 和 NuGet
    • 从“Visual Studio 安装程序”修复 Visual Studio
      • 这修复了拒绝访问 *.dll 错误
  2. Xamarin.Android 项目:

    • 设置目标 Android 版本:8.1 API 27
      • 这使得需要 monoandroid81 的包很满意。
  3. 打扫房间

    • 删除文件夹 C:\Users\\AppData\Local\Xamarin`
      • 不确定这是否有必要,但我正在记录我所做的任何事情,以便其他人可以复制解决方案。
  4. 修复 NuGet

    • 右键.android -->设置为启动项目。
    • 工具 --> NuGet 包管理器 --> 包管理器控制台
    • 在控制台 CLI 中运行 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 按钮,它就可以工作了。我不得不说这些库彼此之间存在依赖关系。
    这是一个例子:

    【讨论】:

      猜你喜欢
      • 2017-06-22
      • 2018-02-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-07
      • 1970-01-01
      相关资源
      最近更新 更多