Сбой в приложении UWP на устройстве ARM64 при выполнении API AcquireTokenInteractive для входа в MS Feed.
На ARM64 приложение аварийно завершает работу с исключением вSharedLibrary.dll
при выполнении APIAcquireTokenInteractive
для входа в MS Feed.
Он корректно работает на устройствах x64.
Нашел похожую проблему в этом посте.
Единственное упоминание об обходном решении — это добавление следующего кода в группу свойств конфигурации проекта.
Образец кода:
using Microsoft.Identity.Client;
using System;
using System.Diagnostics;
using System.Threading.Tasks;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
namespace MSFeedSignInSampleApp
{
public sealed partial class MainPage : Page
{
private AuthenticationResult authResult = null;
private IPublicClientApplication publicClientApp;
private string[] scopes = new string[] { "User.Read", "Notes.ReadWrite" };
private const string clientId = "YOUR_CLIENT_ID";
public MainPage()
{
this.InitializeComponent();
}
private void SignIn_ButtonClick(object sender, RoutedEventArgs e)
{
Debug.WriteLine("SignIn_ButtonClick starts");
SignInAsync();
Debug.WriteLine("SignIn_ButtonClick ends");
}
private async Task SignInAsync()
{
try
{
if (publicClientApp == null)
{
publicClientApp = PublicClientApplicationBuilder.Create(clientId).Build();
}
authResult = await publicClientApp.AcquireTokenInteractive(scopes)
.ExecuteAsync()
.ConfigureAwait(false);
Debug.WriteLine("Username:" + authResult.Account.Username + ", AccessToken: " + authResult.AccessToken);
}
catch (Exception ex)
{
Debug.WriteLine("Exception message: " + ex.Message);
}
}
}
}
У меня есть следующие вопросы относительно этой проблемы:
- Почему проблема возникает только в устройстве ARM64?
- Что "
UseDotNetNativeSharedAssemblyFrameworkPackage
" делает? Как ложное решение проблемы? - Какие могут быть побочные эффекты после добавления
<UseDotNetNativeSharedAssemblyFrameworkPackage>false</UseDotNetNativeSharedAssemblyFrameworkPackage>
- Есть ли альтернативное решение?