C# 目标sdk更改后出现Xamarin.Android生成错误

C# 目标sdk更改后出现Xamarin.Android生成错误,c#,android,azure,xamarin.android,azure-mobile-services,C#,Android,Azure,Xamarin.android,Azure Mobile Services,在Xamarin.Forms解决方案的Android项目中的my MainActivity.cs中获取以下错误: CurrentPlatform由于其保护级别而无法访问 从OnCreate()内的以下代码行中,仅对CurrentPlaftorm部分加下划线: Microsoft.WindowsAzure.MobileServices.CurrentPlatform.Init() 直到我将MonoAndroid从v6.0升级到v7.0,并进行了所有必要的更新(如JDK1.8),我才收到这个错误。

在Xamarin.Forms解决方案的Android项目中的my MainActivity.cs中获取以下错误:
CurrentPlatform由于其保护级别而无法访问

从OnCreate()内的以下代码行中,仅对CurrentPlaftorm部分加下划线:
Microsoft.WindowsAzure.MobileServices.CurrentPlatform.Init()

直到我将MonoAndroid从v6.0升级到v7.0,并进行了所有必要的更新(如JDK1.8),我才收到这个错误。 想知道是否有人可以解释这个错误的含义以及为什么它是专门为CurrentPlatform调用的

我试图在新项目中重新创建此错误,但有一次我键入了Microsoft.WindowsAzure.MobileServices。
它的CurrentPlatform选项可用,没有问题

现在还有一行使用
MobileServiceClient
类型从WindowsAzure组件调用LoginAsync(),在参数上抛出两个错误,以前是:

wait client.LoginAsync(上下文,“facebook”)

但我现在收到以下两个错误:
参数1:无法从“Android.Content.Context”转换为“Microsoft.WindowsAzure.MobileServices.MobileServiceAuthenticationProvider”
参数2:无法从“字符串”转换为“Newtonsoft.Json.Linq.JObject”

我不知道为什么在我更改Android Target SDK时这两个代码区域会中断,因为它们只是Microsoft.WindowsAzure组件的一部分

我不知道为什么在我更改Android Target SDK时这两个代码区域会中断,因为它们只是Microsoft.WindowsAzure组件的一部分

根据你的描述,我认为这是因为你引用的版本

  • 对于,客户端将从以下路径引用库:

    Microsoft.Azure.Mobile.Client.3.1.0\lib\monoadroid\Microsoft.WindowsAzure.Mobile.Ext.dll

    您可以利用以下方法检查
    LoginAsync
    的扩展方法:

而对于,如果MonoAndroid>=4.4,则lib将在以下位置引用:

Microsoft.Azure.Mobile.Client.4.0.0-alpha-001\lib\monoandroid44\Microsoft.Azure.Mobile.Client.dll

  • 例如,如果您的MonoAndroid>=7.1,那么lib将在以下位置引用:

    Microsoft.Azure.Mobile.Client\4.0.0\lib\monoandroid71\Microsoft.Azure.Mobile.Client.dll

    我以前的项目目标是安卓6.0,那么lib将只引用
    Microsoft.Azure.Mobile.Client.4.0\lib\netstandard1.4\Microsoft.Azure.Mobile.Client.dll
    ,并且没有通过服务器流身份验证来扩展
    LoginAsync

总之,从你的代码
wait client.LoginAsync(context,“facebook”),您正在使用,我建议您可以使用Azure Mobile Client SDK 3.1.0而不升级Android SDK版本,或者使用最新的Azure Mobile Client SDK 4.0.0并将Android SDK版本升级到7.1或更高版本


此外,代码
client.LoginAsync(MobileServiceAuthenticationProvider.Facebo‌​好的,{JObject token})
正在使用,此时,您的应用程序可以独立联系身份提供商,然后在使用azure mobile后端登录时提供返回的令牌

LoginAsync方法已更改,我猜类似于
客户端。LoginAsync(MobileServiceAuthenticationProvider.Facebook,token)
其中
token
是可选的JObject令牌。我能够将Azure移动客户端SDK恢复到3.1.0,现在它又开始工作了。谢谢你给我指明了正确的方向。