|
|
#1 |
|
Участник
|
Добрый день. Есть реализованный проект синхронизации 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 компиляцией. Не помогло. Что еще можно сделать и как решить данную проблему? |
|
|
|
|
#2 |
|
Участник
|
Добрый день!
Код выполняется на клиенте или сервере? То что пишите, это только клиент, соответственно, при выполнении кода на сервере будет ругаться на отсутствие dll-ки. |
|
|
|
|
#3 |
|
Участник
|
Вам ее наверно надо в AOT в ветке
\References перерегистрировать. Она пропишет новую версию и будет правильную сборку искать. а сейчас она старую сборку ищет. |
|
|
|
|
#4 |
|
Участник
|
Выполняется на сервере.
|
|
|
|
|
#5 |
|
Участник
|
Перерегистрировал много раз. Не помогло.
|
|
|
|
|
#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). | |
|
|
#7 |
|
Участник
|
Спасибо. Буду копать)
|
|
|
|
|
#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, сборка |
|
|
|