TKCustomMap 版本冲突

TKCustomMap Version Conflict

此问题已在 GitHub 此处报告 -

https://github.com/TorbenK/TK.CustomMap/issues/325

还有其他人遇到过这个问题吗?我很高兴找到这个 nuget 包,因为它完全符合我的要求,但它需要安装 Places 和其他一些 GooglePlayServices,但由于这个冲突我无法安装它们。

我也不确定卸载 TK.CustomMap 然后安装 Play 服务是否有帮助,因为在 GitHub 上报告问题的人说-


我将我的应用程序转换为 .net 2.0 并且必须使用最新的 Google 播放服务 60.1142.1 让 AdMob 正常工作。在我卸载 TK.CustomMap 之前它不会安装,现在 TK.CustomMap 不会重新安装,因为它只想使用 GooglePlayServices 42.1021.1

严重性代码说明项目文件行抑制状态 错误 NU1107 检测到 Xamarin.GooglePlayServices.Tasks 的版本冲突。直接从项目中引用包来解决这个问题。 HunterTracker.Android -> Xamarin.GooglePlayServices.Base 60.1142.1 -> Xamarin.GooglePlayServices.Tasks (= 60.1142.1) HunterTracker.Android -> HunterTracker -> TK.CustomMap 2.0.1 -> Xamarin.GooglePlayServices.Location 42.1021.1 -> Xamarin.GooglePlayServices.Tasks (= 42.1021.1).


这几乎就是我在尝试安装其他软件包时遇到的错误。 github.

没有解决方案

有人找到解决办法了吗?或者有谁知道如何 "Reference the package directly from the project"?

感谢 SushiHangover 上面的评论为我指明了正确的方向,我才能够在这里找到我需要做的事情。一开始我在更新 TK.CustomMap 的 nuget 包时遇到错误,因为 v26 Xamarin.Android.Support.Vector.Drawable 的目标是 MonoAndroid8.0,而 v27 的更新必须以 MonoAndroid8.1 为目标,所以仅仅为了能够更新 nuget 包以获得更高版本的程序集,这样我就可以在我的解决方案中使用 TK.CustomMap。但我最终能够到达那里。这是我遵循的步骤(据我所知)。我现在无法编译 ios,因为我没有 MAC,因此必须稍后进行修复。此修复仅适用于共享项目和 Android 项目

  1. 从 github
  2. 下载 TK.CustomMap-master
  3. 解压并完全删除示例项目(我也删除了 UWP 项目,因为此时我对此并不感兴趣)
  4. 打开并构建然后关闭。从 Android 和共享项目中删除了 packages 文件夹、vs 文件夹、bin 和 obj(这一步可能不是必需的,但我这样做了...)
  5. 在 Android 中的 packages.config 中将所有目标从 monoandroid80 更改为 monoandroid81 保存文件
  6. 在 TK.CustomMap.Android.csproj 中,任何 Xamarin.Android.Support 或其他 Xamarin.Android 实用程序包的每个 v26.0.1 已将 26.0.1\lib\MonoAndroid80 更改为 27.0.2.1\lib\MonoAndroid81 - 保存文件
  7. 在TK.CustomMap中的nuget文件夹中.nuspec更改了这部分的目标框架

          <group targetFramework="lib\MonoAndroid7.0">
            <dependency id="Xamarin.GooglePlayServices.Location" version="42.1021.1" />
            <dependency id="Xamarin.GooglePlayServices.Places" version="42.1021.1" />
            <dependency id="Xamarin.Android.Maps.Utils" version="0.5.0" />
            <dependency id="Xamarin.Forms" version="2.5.0.91635" />
            <dependency id="Newtonsoft.Json" version="10.0.3" />
          </group>
    

          <group targetFramework="lib\MonoAndroid">

因此它可以针对任何版本

  1. 使用包管理器(不是控制台)打开并更新了所有 nuget 包。构建调试和发布版本

此时打开了我之前尝试实施 TK.CustomMap 的解决方案以尝试修复。请记住,最初的问题是无法使用最新的框架,并且 42.1021.1 框架无法找到 com.google.gms.locationcom.google.gms.places.ui 文件,因此必须更新它们或没有 TK.CustomMap

  1. 在问题解决方案中卸载了所有项目TK.CustomMap
  2. 在问题解决方案中 Android 项目添加了对 TK.CustomMap 项目的 Android bin 文件的发布文件夹中所有 dll 的引用。
  3. 已通过包管理器(而非控制台)为问题解决方案中的所有 Xamarin.Android 框架安装了更新
  4. 使用包管理器(不是控制台)为所有项目安装了所有其他 nuget 包的更新
  5. 已使用包管理器(而非控制台)安装 TK.CustomMap 到共享项目
  6. 第二次添加了对 android 项目的引用。可能有用也可能没用。
  7. 使用包管理器(不是控制台)安装了 TK.CustomMap Nuget 包
  8. 在 Live Player 上构建并 运行 成功!!

感谢 Sushi Hangover 的建议。我还没有在任何地方看到任何关于如何完成此操作的综合教程,所以我想我会 post 我自己的答案,以防其他人在看。当然,如果您是 VS 新手,那么一开始所有这些东西都不是在公园散步。

感谢@Travis Fleenor。这是我的解决方案。我稍微改变了你的顺序,以便在我的上工作。 1. 确保来自 github (https://github.com/TorbenK/TK.CustomMap) 的原始项目有效并且你可以 运行 它。 2.更新发生冲突的nugets。就我而言,我在 googleplay 库版本中遇到了冲突。我在原来的项目中更新了它,然后保证它可以 运行 它。
3. 在发布模式下编译整个解决方案。然后,从 bin/release 复制生成的 dll 并将它们粘贴到我桌面的文件夹中。 4. 我将那些 dll 引用到 shared proyect 和 android proyect。我只使用 nuget 包管理器来安装 tk.custom 所需的一些缺失包。请注意,您只会引用项目接受的一些 dll。对于 mayority Visual 会提示 'dll already referenced' 的东西。 5. 首先引用您的共享项目,然后再引用您的 android 项目。就这样。确保你 ca 重新编译解决方案。 希望这有帮助