26.06.2017, 10:58 | #1 |
Участник
|
Не удалось загрузить файл или сборку "Microsoft.Xrm.Sdk, Version=7.0.0.0
Добрый день. Есть реализованный проект синхронизации AX2012 - CRM в виде dll. Все замечательно работало до обновления CRM. Начало бить ошибку при конекте. Выяснил причину. Раньше юзалась Microsoft.Xrm.Sdk.dll 7.0.0.0 После обновления CRM нужно подключить Microsoft.Xrm.Sdk.dll 8.0.0.0 Со студии конект к CRM идет. Скомпилировал библиотеку и подключил ее к AX. Но соединение не пошло. Выбивает ошибку: System.Reflection.TargetInvocationException: Адресат вызова создал исключение. ---> System.IO.FileNotFoundException: Не удалось загрузить файл или сборку "Microsoft.Xrm.Sdk, Version=7.0.0.0, ....
Библиотеки подключаю при помощи GACUTIL.EXE: "C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\GACUTIL.EXE" -u "Microsoft.Xrm.Sdk" "C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\GACUTIL.EXE" -u "CRMIntegration" "C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\GACUTIL.EXE" -i "C:\Program Files (x86)\Microsoft Dynamics AX\CRMIntegration\CRMIntegration.dll" "C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\GACUTIL.EXE" -i "C:\Program Files (x86)\Microsoft Dynamics AX\CRMIntegration\Microsoft.Xrm.Sdk.dll" Оно пытается найти старую версию "Microsoft.Xrm.Sdk, Version=7.0.0.0 а не новую "Microsoft.Xrm.Sdk, Version=8.0.0.0. Пробовал удалять папку XpplL с полной компиляцией и CIL компиляцией. Не помогло. Что еще можно сделать и как решить данную проблему? |
|
26.06.2017, 11:16 | #2 |
Участник
|
Добрый день!
Код выполняется на клиенте или сервере? То что пишите, это только клиент, соответственно, при выполнении кода на сервере будет ругаться на отсутствие dll-ки. |
|
26.06.2017, 11:52 | #3 |
Участник
|
Вам ее наверно надо в AOT в ветке
\References перерегистрировать. Она пропишет новую версию и будет правильную сборку искать. а сейчас она старую сборку ищет. |
|
26.06.2017, 13:11 | #4 |
Участник
|
Выполняется на сервере.
|
|
26.06.2017, 13:12 | #5 |
Участник
|
Перерегистрировал много раз. Не помогло.
|
|
26.06.2017, 13:56 | #6 |
Участник
|
Куда копать -
Активируйте Fusion log. how-to-enable-assembly-bind-failure-logging-fusion-in-net Запустите, проанализируйте логи, получите много доп информации. AX загружает dll на запуске. Тоесть чтобы подхватить новую dll из GAC, либо клиент либо AOS надо перезагрузить.
__________________
AxAssist 2012 - Productivity Tool for Dynamics AX 2012/2009/4.0/3.0 |
|
|
За это сообщение автора поблагодарили: Logger (3), gl00mie (2). |
26.06.2017, 16:54 | #7 |
Участник
|
Спасибо. Буду копать)
|
|
27.06.2017, 15:40 | #8 |
Участник
|
Разбор привел к следующему. После обновления нужно использовать другой тип подключения к CRM. Может кому пригодится, бросаю упрощенный код Из визуалки работает.
Код: using Microsoft.Xrm.Tooling.Connector; using Microsoft.Xrm.Sdk; using Microsoft.Xrm.Sdk.Messages; using Microsoft.Xrm.Sdk.Query; using System; using System.Data; using System.Linq; using System.Text; namespace CRMIntegration { public class CRMIntegration { private IOrganizationService _orgService; private string connStr ="AuthType=Office365; Url=url; Username=username; Password=pass;" public bool Connect() { _orgService = connectToCrm(); if (_orgService == null) return false; else return true; } private IOrganizationService connectToCrm() { try { CrmServiceClient conn = new CrmServiceClient(connStr); _orgService = (IOrganizationService)conn.OrganizationWebProxyClient != null ? (IOrganizationService)conn.OrganizationWebProxyClient : (IOrganizationService)conn.OrganizationServiceProxy; Error = _orgService == null ? conn.LastCrmError : ""; return _orgService; } catch (Exception e) { Error = e.Message; return null; } } } вот код класса в АХ X++: class Class1 { } public static void main() { Class1::run(); } public static void run() { CRMIntegration.CRMIntegration conn; CRMIntegartionSettings set; str s; System.Exception ex; ; select firstOnly set; if(set) { conn = new CRMIntegration.CRMIntegration(set.URL, set.Username, set.Password); try { if(conn.Connect()) info("ok"); else { error(""); s = conn.getLastError(); info(strFmt("%1", s)); } } catch (Exception::CLRError) { ex = CLRInterop::getLastException(); info(ex.ToString()); } } else error(""); } Гугл мне не сильно помог. Что может быть? Попробовал на нескольких системах, везде такая же беда. Ну или как подключиться из АХ к CRM 365 напрямую? Это моя первая интеграция AX - CRM может чего не знаю. |
|
|
За это сообщение автора поблагодарили: mazzy (2). |
Теги |
.net, assembly, fusion log, сборка |
|
|