TKCustomMap版本冲突

时间:2018-07-01 23:27:42

标签: google-maps xamarin xamarin.forms nuget-package

此问题已在GitHub上报告-

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

还有其他人为此苦苦挣扎吗?我很高兴找到这个nuget软件包,因为它完全可以满足我的要求,但是它需要安装Places和其他一些GooglePlayServices,由于这种冲突,我无法安装它们。

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


我将我的应用程序转换为.net 2.0,并且不得不使用最新的Google Play服务 60.1142.1,AdMob才能正常运行。在我卸载TK.CustomMap之前,它不会安装,现在,TK.CustomMap将不会重新安装,因为它只想使用GooglePlayServices 42.1021.1

严重性代码描述项目文件行抑制状态 错误X1marin.GooglePlayServices.Tasks的NU1107版本冲突。直接从项目中引用该软件包即可解决此问题。 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上没有解决方法。

有人找到解决方法吗?还是有人知道如何“直接从项目中引用程序包”

2 个答案:

答案 0 :(得分:0)

由于上面提到的SushiHangover的评论向我指明了正确的方向,所以我能够找到我需要在这里做的事情。我首先更新TK.CustomMap的nuget包时出错,因为v26 Xamarin.Android.Support.Vector.Drawable的目标是MonoAndroid8.0,而v27更新的目标是MonoAndroid8.1,所以花了很多时间才能够更新nuget软件包以获取具有更高版本的程序集,因此我可以在解决方案中使用TK.CustomMap。但是我最终能够到达那里。这是我遵循的步骤(据我所记得,这是最好的)。我现在无法编译ios,因为我没有MAC,因此稍后必须修复。此修复仅适用于共享项目和Android项目

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

          <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文件的release文件夹中所有dll的引用。
  3. 通过软件包管理器(而非控制台)为问题解决方案中的所有Xamarin.Android框架安装了更新
  4. 使用“程序包管理器”(不是控制台)为所有项目安装了所有其他nuget程序包的更新
  5. 使用程序包管理器(不是控制台)将TK.CustomMap安装到共享项目中
  6. 第二次将引用添加到android项目。可能有所帮助。
  7. 使用“程序包管理器”(不是控制台)安装TK.CustomMap Nuget程序包
  8. 成功构建并运行Live Player!

感谢寿司宿醉的建议。我在任何地方都没有看到任何有关如何完成此操作的综合教程,因此我想我会发布自己的答案,以防其他人在寻找。当然,如果您不熟悉VS,那么所有这些东西一开始都不是在公园里散步。

答案 1 :(得分:0)

感谢@Travis Fleenor。这是我的解决方案。为了您的工作,我改变了您的顺序。  1.确保来自github(https://github.com/TorbenK/TK.CustomMap)的原始proyect可以运行。  2.更新您在其中发生冲突的nuget。就我而言,我在googleplay库版本中遇到了冲突。我在原始proyect中对其进行了更新,然后确保它可以运行。
 3.以发布模式编译整个解决方案。然后,从bin / release复制生成的dll,并将其粘贴到我桌面的文件夹中。  4.我将这些dll引用为共享的proyect和android proyect。我仅使用nuget软件包管理器来安装tk.custom所需的一些缺少的软件包。请注意,您只会引用proyect接受的某些dll。对于市长,Visual会提示'dll已引用'某些内容。  5.首先引用您的共享proyect,然后引用您的android。就这样。确保您可以重新编译解决方案。  希望这会有所帮助