Добавка за Outlook, използваща обратно изкупуване в 32 и 64 битова версия на Outlook

Моята добавка за Outlook е компилирана с целева платформа като „Всеки процесор“ и сега работи добре в 32 и 64 битов Outlook.

Искам да използвам redemption.dll в моята добавка, за да разширя някои функции. Видях, че има две версии на DLL файлове в изтегления пакет за осребряване (redemption.dll и redemption64.dll) Искам да използвам подобен код по-долу, за да използвам dll в моята добавка

Type t = Type.GetTypeFromProgID("MyDll.MyMailItem");
SafeMailItem sItem = (SafeMailItem) Activator.CreateInstance(t);

В този случай кой dll отнасям към моя проект? redemption.dll ИЛИ redemption64.dll ?

Как моят проект зарежда правилна DLL в 32-битов Office и 64-битов Office?


person user1971706    schedule 28.08.2013    source източник


Отговори (1)


Правилният dll ще бъде зареден от COM системата, а не от вашия код.

Докато и двете версии са правилно инсталирани и регистрирани в системния регистър, вашият код ще работи без никакви модификации. Имайте предвид обаче, че няма да можете да инсталирате 64-битовата версия на dll на 32-битова машина.

Може да искате да разгледате използването на RedemptionLoader - ще пропуснете напълно COM регистрацията и RedemptionLoader ще зареди правилната dll за вас въз основа на битовостта на процеса.

person Dmitry Streblechenko    schedule 28.08.2013
comment
благодаря за актуализацията, това решава проблема ми. Имам още един въпрос. Ако преименувам redemption.dll на MyRedemption.dll, мога ли да използвам Redemption.SafeMailItem objSafeItem = new Redemption.SafeMailItem() или Type t = Type.GetTypeFromProgID(MyRedemption.SafeMailItem)? Има ли наличен примерен код на c#? - person user1971706; 29.08.2013
comment
И двата начина ще работят - в предишния случай компилаторът твърдо кодира CLSID на COM обекта и преименуването на dll не го променя. В последния случай вие динамично извличате CLSID от името на класа, но крайният резултат ще бъде същият. Отново RedemptionLoader е много по-добър вариант. - person Dmitry Streblechenko; 29.08.2013