Интероперабельность C# и NAV 2016

Я пытаюсь создать интероперабельную dll, написанную на C #, для использования в Microsoft NAV 2016, для разработки драйвера фискального принтера. В моем проекте на C# я вызывал другие функции dll (поставляемые компанией Bematech, в 32-разрядной и неуправляемой версии).

Вызовы функций неуправляемой dll (и проверенной из .EXE) я делаю следующим образом:

[DllImport ( "BemaFi32.dll")]
public static extern int Bematech_FI_ProgramaAlicuota (Aliquot string, int ICMS_ISS);

Когда я пытаюсь запустить его из NAV2016, я получаю следующую ошибку: .Вызов "MyAssembly" не удался с этим сообщением: Вы пытаетесь загрузить программу с неправильным форматом. Ожидание от HRESULT: 0x8007000B

Я предполагаю, что ошибка, потому что dll не управляется или 32-битная версия (если это проблема становится более сложной, потому что, видимо, нет 64-битной версии). Не как решить проблему.


person Ivanrlg    schedule 09.09.2016    source источник


Ответы (2)


NAV не может работать с неуправляемым кодом. Единственный способ - написать dll-оболочку, которую можно будет вызывать из NAV. Например, Microsoft делает то же самое с Office SDK...

Ваше здоровье!

person azatoth    schedule 09.09.2016

Проблема заключалась не во встроенной неуправляемой dll, а в том, что новая 32-битная dll несовместима с клиентским NAV, решение заключалось в изменении 32-битного клиента следующим образом:

Переименуйте файл в Microsoft.Dynamics.Nav.Client.X64.exe. . исполняемый файл.

а изменение C/AL в объявленной переменной вызов dll Property Value Yes RunOnClient

person Ivanrlg    schedule 13.09.2016