Показать сообщение отдельно
Старый 01.03.2023, 02:49   #12  
alicedr is offline
alicedr
Участник
 
173 / 43 (2) +++
Регистрация: 06.07.2012
Адрес: Канада
У меня аналогичная ситуация с AX2012CU13. Есть:
а) своя библиотека "MyDll" написанная для .Net 4.5.2, которая использует библиотеки:
б) Newtonsoft 6.0.8 под .Net 4.5
в) и еще одну, SDK под .Net 4.5.2, назовем ее SDKDll

Все три библиотеки:
1) скопированы в папку C:\Program Files (x86)\Microsoft Dynamics AX\60\Client\Bin
2) скопированы в папку C:\Program Files\Microsoft Dynamics AX\60\Server\MyDEV\bin
3) добавлены в GAC (практика показывает что этот шаг необязателен)
4) перегрузка АОСа с очисткой AUC файлов.
5) добавлены в АОТ как референс. Пробовали добавлять выбирая из списка, выполняя "Browse" и выбирая библиотеку в папке клиента/или в папке сервера
6) создаем новый джоб в АОТ, начинаем писать Newtonsoft, и видим что Аксапта видит библиотеку.
7) создаем новый джоб в АОТ, начинаем писать MyDll, и ничего.
8) при попытке скомпилировать переменную использующую референс на MyDll, получаем ошибку "Variable MyDll has not been declared."

На другом сервере с той же версией Аксапты с теми же шагами, библиотека опознается и код компилируется. На данный момент имеем несколько серверов где работает и еще несколько где не работает.

На сервере где библотека не опознается, пробовали следующее:
- обновить .net до версии 4,7,2
- обновить .net до версии 4,8
- установить VS redistributable package
- установить VS Studio 2013 Update 4
- установить MS Dynamics VS Tools
- перегрузка сервера
- очистка папки XPPIL и последующий full CIL
- полная компиляция через axcompile и из АХ клиента
- полный СИЛ
- синхронизация базы данных
- перенос проекта с библиотекой в Визуал Студию 2013 из более поздней версии и создание библиотеки из VS2013.
- VS2010 не поддерживает .net 4.5.2 и мы просто не сможем использовать имеющийся SDK
- использование подписанной и неподписанной библиотеки (strong name)
- использование фукции hot-swap для библиотек в настройках АХ сервера

Воз и ныне там.

Наблюдения:
1) На одном из старых серверов в папке клиента и сервера не было библиотеки Newtonsoft. Достаточно было ее скопировать в вышеуказанные папки, добавить референс в АОТ и она моментально стала доступной в коде.
2) Также мы нашли версию "MyDll.dll" написанную несколько лет назад. Исходный код затерялся. Так вот эта библиотека становится видимой так же как и Newtonsoft. Сравнение этой старой версии и новой версии в VS Object browser не показало никаких видимых различий. Target .Net framework для обоих библиотек = 4.5.2

Вопросы:
1) ?????
2) что нужно сделать чтобы библиотека стала видимой для компиляции?
3) что не хватает библиотеке (или что лишнее) чтобы она мгновенно опознавалась Аксаптой, как Newtonsoft?