Я не эксперт COM Interop, поэтому мне не удалось выяснить последний шаг развертывания моего приложения. Несколько кусков информацииНевозможно зарегистрировать dll на новом пути в dev-машине
Использование: VS 2010 C# и MS Access 2010 VBA Разработка на: Windows 7 64 бит Target Env: Windows XP 32 бит
Я написал DLL, который вызывается с помощью VB в Access для выполнения некоторой работы Web API. В построенной DLL установлен флажок Make COM Visible. Затем я запускаю команду
Regasm /register /codebase /tlb
для регистрации dll. После этого я открыл Access и добавил ссылку на DLL. В этот момент dll все еще находилась в каталоге bin/debug после его создания. Еще одна работа над разработкой и regasm/unregister, за которой следует regasm/регистрация новой DLL, и все работает отлично. Теперь я закончил работу по разработке и работаю над установщиком для DLL. Я создал установщик, который устанавливает DLL в файлы C: \ Program ... и затем регистрирует DLL в этом месте, используя ту же команду. но когда я открываю доступ для изменения ссылки, старый все еще там. Он указывает на bin/debug. Снимите флажок (удалите ссылку) и сохраните доступ. Открыл проект, и все еще была старая ссылка. Я использовал кнопку «Обзор», чтобы перейти к файлу tlb в новом месте, и я получаю ошибку. Пользовательский тип не определен. Я пошел в каталог и снова запустил команду regasm. но все равно ничего. Я был бы очень признателен за любую помощь в отношении того, какие шаги мне нужно предпринять, чтобы добиться этого.
Update 1 после продолжая играть с ним, я думаю, что проблема с тем, что Visual Studio делает для того чтобы сделать DLL COM Visible. Мой следующий план - посмотреть, что делает DLL COM Visible на самом деле, как его отменить, и если мне нужно воспроизвести это на установочной машине.
Update 2 При дальнейшем осмотре я обнаружил, как старые записи и новые записи для библиотеки DLL COM Interop в реестре. Я думаю, проблема в том, что мне нужно удалить старые записи. Будет продолжать изучать его.
Update 3 с помощью OLE просмотра объекта, когда я вижу, что есть две записи один является для win32, а другой для Win64. win32 указывает на C: \ Program Files и Win64 указывает на Bin \ Debug. Я думаю, проблема в том, что мне нужно установить 64-битную версию (я думаю, у меня есть 64-разрядный Office). Но мне понадобится 32 бит для целевого Env.
Эти проблемы могут быть разочаровывающими, я сам стал жертвой этого чтения на [DLL hell] (http://en.wikipedia.org/wiki/DLL_Hell) – meda