2016-05-08 3 views
0

Я создаю сборку .NET с интерфейсом COM. В идеале я хотел бы, чтобы разделы реестра были отделены от сборки, поэтому для выполнения выпуска требуется только отбросить .dll на общий диск (вместо этого нужно выталкивать MSI каждый раз)Предотвратить повторное использование .NET во время вызова COM

Я создал разные классы, унаследованные из основного класса, чтобы получить разные GUID для каждой среды.

Однако, когда я проверяю это, первая загруженная версия (например, разработка) заканчивает обслуживание вызовов для других сред (например, тест) позже. Обычно это не проблема, но при использовании этого компонента вызывается из всего исполняемого исполняемого файла GUI за весь день. Разумеется, люди могут работать в разных средах в течение дня.

Каждый интерфейс имеет независимую базу кода, установленную в реестре (без GAC), а монитор процесса показывает, что обе сборки загружены, но используется только первый. Я полагаю, это потому, что .NET видит одно и то же имя класса/сборки и повторное использование первого загруженного.

Как я могу изолировать сборки в этой ситуации?

ответ

-1

Вы можете прочно назвать сборки (вкладку «подпись» в свойствах проекта в Visual Studio, не путать с подписью Authenticode) и изменить либо номер версии, либо открытый ключ, либо оба варианта для разных версий/сред. Таким образом, загрузчик сборки CLR будет считать их разными и не будет привязан к тому, который уже загружен в данном контексте.