AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 26.06.2017, 10:58   #1  
Skolos is offline
Skolos
Участник
 
56 / 13 (1) ++
Регистрация: 06.01.2016
Post Не удалось загрузить файл или сборку "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  
Товарищ ♂uatr is offline
Товарищ ♂uatr
Участник
Аватар для Товарищ ♂uatr
MCBMSS
 
265 / 808 (27) +++++++
Регистрация: 23.10.2012
Добрый день!
Код выполняется на клиенте или сервере? То что пишите, это только клиент, соответственно, при выполнении кода на сервере будет ругаться на отсутствие dll-ки.
Старый 26.06.2017, 11:52   #3  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,867 / 3123 (112) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Вам ее наверно надо в AOT в ветке
\References
перерегистрировать. Она пропишет новую версию и будет правильную сборку искать. а сейчас она старую сборку ищет.
Старый 26.06.2017, 13:11   #4  
Skolos is offline
Skolos
Участник
 
56 / 13 (1) ++
Регистрация: 06.01.2016
Выполняется на сервере.
Старый 26.06.2017, 13:12   #5  
Skolos is offline
Skolos
Участник
 
56 / 13 (1) ++
Регистрация: 06.01.2016
Перерегистрировал много раз. Не помогло.
Старый 26.06.2017, 13:56   #6  
Alex_KD is offline
Alex_KD
Участник
AxAssist
MCBMSS
Соотечественники
 
522 / 362 (14) ++++++
Регистрация: 06.07.2006
Адрес: Melbourne, Down Under
Куда копать -
Активируйте 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  
Skolos is offline
Skolos
Участник
 
56 / 13 (1) ++
Регистрация: 06.01.2016
Спасибо. Буду копать)
Старый 27.06.2017, 15:40   #8  
Skolos is offline
Skolos
Участник
 
56 / 13 (1) ++
Регистрация: 06.01.2016
Post
Разбор привел к следующему. После обновления нужно использовать другой тип подключения к 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;
            }
        }
    }
Возник следующий вопрос. После сборки проекта, пытаюсь присоединить новую dll а АХ. подсоединяю ее в GAC. Компиляция проекта проходить норм. AOS перезагрузил, референсы переподключил. Получил следующую ошибку: Не удалось загрузить файл или сборку "Microsoft.IdentityModel.Clients.ActiveDirectory, Version=2.22.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" либо одну из их зависимостей. Не удается найти указанный файл.

вот код класса в АХ
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("");
}
Суть в том, что Microsoft.IdentityModel.Clients.ActiveDirectory, Version=2.22.0.0, нет в NuGet Package Manager. Попробовал подключать версии и выше и ниже, все равно просит Version=2.22.0.0,
Гугл мне не сильно помог. Что может быть? Попробовал на нескольких системах, везде такая же беда. Ну или как подключиться из АХ к CRM 365 напрямую?
Это моя первая интеграция AX - CRM может чего не знаю.
За это сообщение автора поблагодарили: mazzy (2).
Теги
.net, assembly, fusion log, сборка

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
emeadaxsupport: Translated User Help on TechNet and downloadable New Features lists available! Blog bot DAX Blogs 0 31.01.2013 05:11
emeadaxsupport: New Content for Microsoft Dynamics AX 2012 : October 2011 Blog bot DAX Blogs 0 27.10.2011 17:11
axinthefield: Dynamics AX Event IDs Blog bot DAX Blogs 0 01.03.2011 22:11
axStart: Microsoft Dynamics AX 2009 Hot Topics Web Seminar Series Blog bot DAX Blogs 0 06.08.2008 12:05
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 17:02.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.