不可能将PrestaSharp用于新的Xamarin.Forms项目

时间:2017-09-25 07:45:18

标签: xamarin xamarin.forms prestashop restsharp

我想使用PrestaSharp创建一个Xamarin.Forms Android和iOS移动应用。 不幸的是,我遇到了很多问题,我不可能通过PrestaSharp联系我的prestashop网站。你能帮帮我吗?

以下是从头开始重现的步骤:

  • 运行Visual Studio并创建一个新的“跨平台应用程序(Xamarin.Forms或Native)”项目。

  • 选择空白应用,Xamarin.Forms和可移植类库(PCL)

  • 打开解决方案的Nuget Package Manager,尝试在Android和iOS项目上安装Bukimedia.PrestaSharp。

  • 收到错误消息:

  

“无法安装软件包'RestSharp 105.0.1'。您正在尝试   将此包安装到目标项目中   'MonoAndroid,版本= v7.1',但包中不包含任何内容   程序集引用或与之兼容的内容文件   框架。有关更多信息,请与软件包作者联系。“

  • PrestaSharp依赖于RestSharp。所以Nuget Package Manager,搜索RestSharp,并在Android和iOS项目上安装最新版本(实际上是105.2.3)。

  • 编译和部署您的Android app =>好的,没问题

  • 现在在Android和iOS项目上安装PrestaSharp(实际上是版本1.157.0)

  • 编译和部署您的Android app =>它没有编译。您收到以下错误消息:

  

“加载程序集时出现异常:System.IO.FileNotFoundException:   无法加载程序集'System.Configuration,Version = 2.0.0.0,   Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'。也许它没有   存在于Mono for Android个人资料中? Nom de fichier:   'System.Configuration.dll'à   Java.Interop.Tools.Cecil.DirectoryAssemblyResolver.Resolve(AssemblyNameReference   参考,ReaderParameters参数)à   Xamarin.Android.Tasks.ResolveAssemblies.AddAssemblyReferences(DirectoryAssemblyResolver   解析器,ICollection`1程序集,AssemblyDefinition程序集,   Boolean topLevel)à   Xamarin.Android.Tasks.ResolveAssemblies.Execute(DirectoryAssemblyResolver   解析器)EpicuriaSucreSale.Android C:\ Program Files(x86)\ Microsoft   视觉   工作室\ 2017 \专业\的MSBuild \ Xamarin \的Android \ Xamarin.Android.Common.targets“

  • 在您的Android项目中,添加对
  • 的引用
  

“C:\的Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ System.Configuration.dll”。

这样做对于制作来说真的很糟糕,但它编译,足以用于概念验证,而我没有找到另一种解决方案。

  • 在页面上添加一个按钮,单击该按钮时,请调用以下代码:

    CartFactory cartFactory = new CartFactory(sYourPrestashopURL, sYourPrestashopAPIKey, sYourPrestashopAPIPassword);
    var tmp = cartFactory.Get(iID);
    
  • 执行此代码时,cartFactory.Get(iID);抛出以下异常:

  

System.TypeLoadException:无法使用令牌01000056解析类型   在Bukimedia.PrestaSharp.Factories.CartFactory.Get(System.Int64)   CartId)[0x00017] in:0 at   PrestaPOC.Droid.ButtonPresta.GetCartFromID(System.Int32 iID)   [0x00016] in   C:\工作区\ PrestaPOC \ PrestaPOC \ PrestaPOC.Android \ ButtonPresta.cs:15   在PrestaPOC.MainPage.BtnPresta_Clicked(System.Object sender,   System.EventArgs e)[0x00001] in   C:\ Workspace \ PrestaPOC \ PrestaPOC \ PrestaPOC \ MainPage.xaml.cs:21 at   Xamarin.Forms.Button.Xamarin.Forms.IButtonController.SendClicked()   [0x00020] in   C:\ BuildAgent3 \工作\ ca3766cfc22354a1 \ Xamarin.Forms.Core \ Button.cs:125   在   Xamarin.Forms.Platform.Android.AppCompat.ButtonRenderer + ButtonClickListener.OnClick   (Android.Views.View v)[0x0000b] in   C:\ BuildAgent3 \工作\ ca3766cfc22354a1 \ Xamarin.Forms.Platform.Android \程序兼容性\ ButtonRenderer.cs:291   在   Android.Views.View + IOnClickListenerInvoker.n_OnClick_Landroid_view_View_   (System.IntPtr jnienv,System.IntPtr native__this,System.IntPtr   native_v)[0x00011] in   /Users/builder/data/lanes/4009/9578cdcd/source/monodroid/src/Mono.Android/platforms/android-25/src/generated/Android.Views.View.cs:1857   at(包装器动态方法)   System.Object的:b3822dae-4195-4828-9258-0b3725f17771   (IntPtr的,IntPtr的,IntPtr的)

  • 我用谷歌搜索了这个异常似乎被抛出,因为有两个对dll但不同版本的引用。我很确定这是因为System.Configuration.dll https://stackoverflow.com/a/42511504/4965913 在这里,经过两天的POC工作,我无法从我的prestashop网站上购买推车。 我需要你的帮助:)我该怎么办才能让它发挥作用?我做错了什么?

我将项目放在Github上,以便您可以重现异常:https://github.com/espritm/PrestaPOC

非常感谢您的帮助

0 个答案:

没有答案