Как обрабатывать несколько версий TLB на пользовательском компьютере - PullRequest
0 голосов
/ 12 декабря 2011

У меня есть библиотека классов C # .NET, которую я открыл в COM, генерируя tlb.Это будет использоваться в Excel VBA пользователями для создания своих собственных функций.Я называю это «MyLib.dll» и «MyLib.tlb».

Сейчас мы находимся в режиме UAT и развернуты на компьютере пользователя в C: \ UAT [мои двоичные файлы приложения] ,Итак, я регистрирую свою DLL из этого пути как regasm C: \ UAT \ MyLib.dll /codebase.

Но когда мы перейдем к производству, мы развернем на C:\ PROD \ [исполняемые файлы моего приложения] .Итак, я бы зарегистрировал его как regasm C: \ PROD \ MyLib.dll /codebase.

Это не будет работать, так как версия prod сломает старую версию UAT для tlb.Следовательно, пользователи, распространяющие листы, которые используют UAT-версию моего tlb, не будут работать.Кроме того, в будущем я не могу выпускать с разными именами библиотек для UAT и PROD, потому что база кода одна и та же, и я не могу продолжать изменять имя проекта или tlb для каждой из версий.

Как решатьэта ситуация или есть какой-либо способ заставить его работать, когда имя и функции tlb одинаковы и могут работать в зависимости от пути, в котором он развернут, или какова общая рекомендация - иметь много версий tlb на одном компьютере.

Большое спасибо.

1 Ответ

0 голосов
/ 06 марта 2012

Что я обнаружил после всех исследований и попыток, так это то, что невозможно зарегистрировать два tlbs с именем в машине, даже если они находятся на другом пути. Записи реестра, которые создаются при регистрации типов tlb, используют имена типов, содержащихся в них. Следовательно, мы не можем иметь два tlbs с одинаковыми именами и версиями, даже если они работают по другому пути. Надеюсь, это поможет!

...