无法加载文件或程序集 'Microsoft.IdentityModel.Clients.ActiveDirectory.Platform'
Could not load file or assembly 'Microsoft.IdentityModel.Clients.ActiveDirectory.Platform'
我有一个 Xamarin.iOS 项目,我想使用 Azure 进行身份验证。最终目标是不让用户登录,并在后台进行身份验证。当我实例化 AuththenticationContext 时,我得到了这个错误。 "Could not load file or assembly 'Microsoft.IdentityModel.Clients.ActiveDirectory.Platform'"。我从 Nuget 安装了 Microsoft.IndentityModel.Clients.ActiveDirectory v3.13.9,using 语句位于代码的顶部。 DLL 设置为复制本地。我不知道为什么这不起作用。我什至卸载了 Nuget 包并将 DLL 添加到项目中并直接引用它们并得到了同样的错误。下面是我正在努力工作的代码。当 AuthenticationContext 被实例化时,它再次中断,所以我什至无法测试它的其余部分。我使用了以下两个网站作为指导,https://blog.xamarin.com/authenticate-xamarin-mobile-apps-using-azure-active-directory/
我在这里 "bug" 找到了这个,但是修复不起作用,对我来说也没有意义。我不确定将代码放在哪里,我也遇到了访问错误。
https://forums.xamarin.com/discussion/45425/azure-authentication-microsoft-identitymodel-clients-activedirectory-platform-no-working
var authContext = new AuthenticationContext(aadInstance);
ClientCredential clientCredential = new ClientCredential(clientId, appKey);
// ADAL includes an in memory cache, so this call will only send a message to the server if the cached token is expired.
AuthenticationResult result = authContext.AcquireTokenAsync(AMServiceResourceId, clientCredential).Result;
WebRequest Request =
WebRequest.Create(
new Uri(@<API call to test connection>));
Request.ContentType = "application/json";
Request.Method = "Get";
Request.Proxy = null;
Request.Timeout = 5000;
Request.Headers.Add("Authorization", "Bearer" + result.AccessToken);
从 Nuget 安装 ADAL 库时,Nuget 应将两个单独的 DLL 安装到 Xamarin 解决方案的每个项目中。一种具有命名空间 Microsoft.IdentityModel.Clients.ActiveDirectory
,另一种具有 Microsoft.IdentityModel.Clients.ActiveDirectory.Platform
。前者是库的大部分逻辑,而后者是每个目标平台(iOS、Android 等)的特定于平台的逻辑。确保在安装 Nuget 之后,两个包都存在于每个项目的依赖项中。为确保 Nuget 安装正确的包,请确保每个项目都针对项目中的适当平台 properties/settings.
如果您说 DLL 已正确安装但在运行时未被提取,恐怕我无法为您提供答案。
在 appdelegate 中,我必须实例化一个静态方法来注册 ADAL dll。这解决了这个问题。
PlatformParameters pp = new PlatformParameters(Window.RootViewController);
低于堆栈 url 会有帮助
The located assembly's manifest definition does not match the assembly reference
在我的例子中,我有 Microsoft.IdentityModel.Clients.ActiveDirectory 版本 3.16.1 我卸载了这个版本并再次安装了 3.16.0。我的问题已经解决了。
您也可以查看 bindingRedirect。
我有一个 Xamarin.iOS 项目,我想使用 Azure 进行身份验证。最终目标是不让用户登录,并在后台进行身份验证。当我实例化 AuththenticationContext 时,我得到了这个错误。 "Could not load file or assembly 'Microsoft.IdentityModel.Clients.ActiveDirectory.Platform'"。我从 Nuget 安装了 Microsoft.IndentityModel.Clients.ActiveDirectory v3.13.9,using 语句位于代码的顶部。 DLL 设置为复制本地。我不知道为什么这不起作用。我什至卸载了 Nuget 包并将 DLL 添加到项目中并直接引用它们并得到了同样的错误。下面是我正在努力工作的代码。当 AuthenticationContext 被实例化时,它再次中断,所以我什至无法测试它的其余部分。我使用了以下两个网站作为指导,https://blog.xamarin.com/authenticate-xamarin-mobile-apps-using-azure-active-directory/
我在这里 "bug" 找到了这个,但是修复不起作用,对我来说也没有意义。我不确定将代码放在哪里,我也遇到了访问错误。 https://forums.xamarin.com/discussion/45425/azure-authentication-microsoft-identitymodel-clients-activedirectory-platform-no-working
var authContext = new AuthenticationContext(aadInstance);
ClientCredential clientCredential = new ClientCredential(clientId, appKey);
// ADAL includes an in memory cache, so this call will only send a message to the server if the cached token is expired.
AuthenticationResult result = authContext.AcquireTokenAsync(AMServiceResourceId, clientCredential).Result;
WebRequest Request =
WebRequest.Create(
new Uri(@<API call to test connection>));
Request.ContentType = "application/json";
Request.Method = "Get";
Request.Proxy = null;
Request.Timeout = 5000;
Request.Headers.Add("Authorization", "Bearer" + result.AccessToken);
从 Nuget 安装 ADAL 库时,Nuget 应将两个单独的 DLL 安装到 Xamarin 解决方案的每个项目中。一种具有命名空间 Microsoft.IdentityModel.Clients.ActiveDirectory
,另一种具有 Microsoft.IdentityModel.Clients.ActiveDirectory.Platform
。前者是库的大部分逻辑,而后者是每个目标平台(iOS、Android 等)的特定于平台的逻辑。确保在安装 Nuget 之后,两个包都存在于每个项目的依赖项中。为确保 Nuget 安装正确的包,请确保每个项目都针对项目中的适当平台 properties/settings.
如果您说 DLL 已正确安装但在运行时未被提取,恐怕我无法为您提供答案。
在 appdelegate 中,我必须实例化一个静态方法来注册 ADAL dll。这解决了这个问题。
PlatformParameters pp = new PlatformParameters(Window.RootViewController);
低于堆栈 url 会有帮助 The located assembly's manifest definition does not match the assembly reference
在我的例子中,我有 Microsoft.IdentityModel.Clients.ActiveDirectory 版本 3.16.1 我卸载了这个版本并再次安装了 3.16.0。我的问题已经解决了。
您也可以查看 bindingRedirect。