Проблема заключается в том, что, наряду с верностью Версии и Открытого ключа, Архитектура процессора взаимодействия должна соответствовать вашей вызывающей DLL. И, конечно же, Target Framework должен иметь ту же версию.
Моя dll была скомпилирована с процессором MSIL (Agnostic, AnyCPU), но по какой-то странной причине Visual Studio настояла на том, чтобы скомпилировать Interop для x386.
(Возможно, это обычно не вызывает проблемы, но мой сервер SharePoint работает на 64-разрядной системе, что могло вызвать появление симптомов).
Решение состоит в том, чтобы собрать Interop самостоятельно:
1 - Отмените регистрацию своей dll и взаимодействия в GAC.
2 - Запустите командную строку Visual Studio версии Visual Studio, которая относится к платформе .NET, на которую ориентирована ваша dll (т.е. я разрабатывал свою dll в Visual Studio 2010, нацеленную на .NET 3.5. Для этого мне нужно было запустить командную строку Visual Studio 2008)
3 - Генерация взаимодействия с использованием Tlbmp
tlbimp <full path and filename of COM .tlb> /out:c:\.\Interop.CoolThirdParty.dll /keyfile: <full path and filename of snk> /machine:Agnostic /Namespace:CoolThirdParty
/ machine: Agnostic вызывает построение Interop с ориентацией на архитектуру процессора MSIL, которая аналогична моей dll.
4 - Удалите старую ссылку на Interop в вашем проекте dll
5 - Удалите старый файл Interop и замените его на тот, который вы только что создали (например, c:. \ Interop.CoolThirdParty.dll)
6 - Добавить ссылку в вашем проекте на новый Interop.
7 - перестроить
8 - Зарегистрируйте свою новую сборку dll и новый Interop в GAC
Это должно начать работать.