我想使用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“
“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的)
我将项目放在Github上,以便您可以重现异常:https://github.com/espritm/PrestaPOC
非常感谢您的帮助