Не удалось загрузить файл или сборку «Microsoft.IdentityModel.Clients.ActiveDirectory» в плагине CRM - PullRequest
0 голосов
/ 03 января 2019

Я разрабатываю плагин, который использует пакет ADAL nuget.Моя сборка плагина выдает исключение при выполнении из-за отсутствия библиотеки Microsoft.IdentityModel.Clients.ActiveDirectory.Сборка ссылается и объединяется правильно в объединенной DLL, и это то, что я вижу в инструменте ILSpy:

enter image description here

Вот список ссылок в моемсборка плагина: enter image description here

Любые идеи, как решить эту проблему?

После того, как я попробовал несколько инструментов для объединения моих библиотек, используя ILMerge и ILRepack, ясталкивается с той же проблемой.Как я могу узнать зависимости Clients.ActiveDirectory, которые, по моему мнению, являются основной причиной ошибки?

Этот плагин развернут в онлайн-экземпляре CRM, поэтому я не могу добавить dll в GAC какмы делаем на месте.

Вот точное сообщение об ошибке, которое я вижу из инструмента регистрации плагинов, когда я запускаю свой плагин, который использует пакет ADAL nuget:

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>

Ответы [ 3 ]

0 голосов
/ 04 января 2019

Вы должны объединить все необходимые dll в один dll плагина и затем зарегистрировать его.Вы можете использовать ILMERGE, чтобы сделать это.

Подробнее

Даже у вас может быть сценарий команд Powershell после сборки, который сделает это автоматически.

0 голосов
/ 04 января 2019

Согласно этой статье использование ILMerge в плагинах не поддерживается.

Вы пытаетесь использовать ADAL для доступа к CRM или другой системе Azure?Если вы получаете доступ к CRM, вы можете использовать собственный сервис IOrganizationService.

Если вы нацеливаетесь на другую систему, вы можете использовать Azure-осведомленный плагин , чтобы выйти из песочницы и запустить свою логику вне CRM.

0 голосов
/ 04 января 2019
  1. вы можете проверить, добавили ли вы эту ссылку из GAC.
    Если да, то вы можете установить jt для копирования в каталог вывода.Вы можете проверить, существует ли файл в каталоге выполнения.

  2. Другая причина может заключаться в том, что у вас есть несколько проектов, ссылающихся на этот адал.Каждый ссылается на разные версии.Оба они настроены на копирование в выходной каталог.Но окончательный результат сборки не имеет версию, ожидаемую плагином.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...