0
votes

Impossible de charger le fichier ou l'assemblage 'Microsoft.identityModel.clients.ACCRÉDirectory' dans le plug-in CRM

Je développe un plugin qui utilise un package Nuget Adal. Mon assemblage de plug-in jette une exception lorsque j'exécute en raison de Microsoft.IdentityModel.Clients manquants.Clients. L'assemblage fait référence et fusionné correctement dans la DLL fusionné et c'est ce que je vois dans iLspy Tool:

 Entrez la description de l'image ici p>

Voici la liste des références dans Mon ensemble plugin:  Entrez la description de l'image ici p>

econae comment résoudre ce problème? p>

Après avoir essayé plusieurs outils pour fusionner mes dlls En utilisant Ilmerge et IlRepack, je suis confronté au même problème. Comment puis-je trouver des clients.CépaupendancesArectoryIrectory Dépendances que je pense que c'est la cause première de l'erreur? Strong> p>

Ce plugin est déployé dans une instance CRM en ligne, donc je ne peux donc pas ajouter de DLL GAC comme nous le faisons sur site. P>

Voici le message d'erreur exact que je vois à partir de l'outil d'enregistrement du plug-in lorsque j'exécute mon plugin utilisant un package Adal Nuget: P>

Unhandled Exception: System.ServiceModel.FaultException`1[[Microsoft.Xrm.Sdk.OrganizationServiceFault, Microsoft.Xrm.Sdk, Version=9.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]: **Could not load file or assembly 'Microsoft.IdentityModel.Clients.ActiveDirectory, Version=4.4.2.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencie**s. The system cannot find the file specified.
Detail: <OrganizationServiceFault xmlns="http://schemas.microsoft.com/xrm/2011/Contracts" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
  <ActivityId>00000000-0000-0000-0000-000000000000</ActivityId>
  <ErrorCode>-2147220970</ErrorCode>
  <ErrorDetails xmlns:a="http://schemas.datacontract.org/2004/07/System.Collections.Generic">
    <KeyValuePairOfstringanyType>
      <a:key>CallStack</a:key>
      <a:value i:type="b:string" xmlns:b="http://www.w3.org/2001/XMLSchema">   at Microsoft.Dynamics.PerceptionAnalytics.Plugins.ProvisionFloorPlan.&lt;Execute&gt;d__0.MoveNext()
   at System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Start[TStateMachine](TStateMachine&amp; stateMachine)
   at Microsoft.Dynamics.PerceptionAnalytics.Plugins.ProvisionFloorPlan.Execute(IServiceProvider serviceProvider)
   at PluginProfiler.Library.PluginAppDomainProxy.ExecuteCore(Stopwatch watch, ProfilerExecutionReport report, Object instance, Object executionParameter)
   at PluginProfiler.Library.AppDomainProxy.Execute(ProfilerExecutionConfiguration configuration, ProfilerExecutionReport report)</a:value>
    </KeyValuePairOfstringanyType>
  </ErrorDetails>
  <Message>Could not load file or assembly 'Microsoft.IdentityModel.Clients.ActiveDirectory, Version=4.4.2.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified.</Message>
  <Timestamp>2019-01-03T18:30:29.4049324Z</Timestamp>
  <ExceptionRetriable>false</ExceptionRetriable>
  <ExceptionSource i:nil="true" />
  <InnerFault i:nil="true" />
  <OriginalException i:nil="true" />
  <TraceText i:nil="true" />
</OrganizationServiceFault>


2 commentaires

Post exactement excepte de sorte que la cause première correcte puisse être fournie


J'ai posté l'erreur exacte. J'ai vérifié la version est la même version du dossier de sortie cible et dans la DLL fusionnée.


3 Réponses :


0
votes
  1. Vous pouvez vérifier si vous avez ajouté cette référence de GAC.
    Si oui, vous voudrez peut-être définir JT pour copier dans le répertoire de l'ivot. Vous pouvez vérifier si le fichier existe dans le répertoire d'exécution.

  2. Une autre raison peut être que vous avez plusieurs projets faisant référence à cette adal. Chacun se référant à une version différente. Les deux définis pour copier dans le répertoire de sortie. Mais la version de construction finale n'a pas la version attendue par le plug-in.


1 commentaires

Vous ne pouvez pas ajouter de DLL pour CRM en ligne dans GAC.



0
votes

Vous devez fusionner toutes les DLL nécessaires dans une DLL à plug-in un seul plugin, puis l'enregistrer. Vous pouvez utiliser Ilmmerge pour le faire.

En savoir plus

Même vous pouvez avoir un script de commandes PowerShell PowerShell pour le faire automatiquement.


3 commentaires

Désolé, j'ai négligé mon mal. Vous avez mentionné que c'est déjà bien fusionné. Pouvez-vous ne pas enregistrer et l'enregistrer à nouveau?


@ Mrostafa Parfois, cela pourrait être idiot, votre mode de construction VS peut être en débogage, mais vous enregistrez le contenu du dossier de publication ou le VISTERSA ..


J'utilise des DLL compilées de débogage.



1
votes

Selon Cet article , en utilisant Ilmmerge in plugins est non pris en charge. .

essayez-vous d'utiliser Adal pour accéder à CRM, ou un autre système d'azur? Si vous accédez à CRM, vous pouvez utiliser l'iorganizationervice natif.

Si vous ciblez un autre système, vous voudrez peut-être envisager d'utiliser un Plugin Azure ajout pour échapper au bac à sable et exécuter votre logique en dehors de la CRM.


2 commentaires

Il n'y a aucun point de fonctionnement de la logique en dehors de la CRM si elle est liée aux données CRM que vous avez déjà accès lorsque le plugin exécute. Je ne cible pas un autre système tel que proposé ci-dessus.


Ok, si vous accédez à CRM, vous pouvez faire tout ce dont vous avez besoin via Iorganizationervice de plugin , sans adal.