我正在尝试创建一个新的 Xamarin Forms 应用程序,该应用程序使用 AAD B2C 租户进行身份验证。我的应用程序代码基于 GitHub ( https://github.com/Azure-Samples/active-directory-b2c-xamarin-native ) 上的官方示例,当我克隆它时,它会构建、运行并与我的租户进行良好的身份验证。
当我尝试使用 PCL 进行代码共享从头开始将此示例重新创建为新的 Xamarin Forms 应用程序时,我无法使其正常工作。首先,我必须将 PCL 配置文件从默认的 259 更改为 Profile7,以便能够安装 MSAL 1.1.0 版预览版。当我从 github 示例代码复制并粘贴代码到 Droid 版本的 Forms 应用程序时,我在 MainActivity.cs 中遇到两个问题
- “UIParent' 不包含接受 1 个参数的构造函数”
- “名称‘AuthenticationContinuationHelper’在当前上下文中不存在”
我尝试在 Mac 和 PC 上从头开始创建新项目。我还尝试复制每个项目的 packages.config,但没有运气让它在一个全新的新项目中工作。 Xamarin Forms IOS 项目可以使用带 1 个参数的构造函数并找到所需的 AuthenticationContinuationHelper 类。
有人知道我做错了什么吗?
最佳答案
MSAL NuGet 安装程序中某处存在错误。
当您在 Visual Studio 2017 (win) 或 Visual Studio for Mac 中创建新的 Xamarin Forms 应用程序解决方案时,Droid 项目会引用错误的 dll。
nuget 安装程序将“/packages/Microsoft.Identity.Client.1.1.0-preview/lib/netstandard1.3/Microsoft.Identity.Client.dll”中的 dll 安装到 Android 项目中。 PCL 和 iOS 项目获得正确的 dll
如果您手动删除引用的 netstandard1.3 dll 并从 monoandroid70 目录添加 dll,代码将再次运行。
我已在 MSAL 库项目中为此提交了一个问题:https://github.com/AzureAD/microsoft-authentication-library-for-dotnet/issues/441
关于c# - 在 Xamarin.Forms Droid 的 MSAL 中找不到 AuthenticationContinuationHelper 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44780699/