RegSvcs.exe регистрирует одну и ту же DLL дважды

Допустим, у меня есть одна и та же.net управляемая dll (та же версия, тот же код) в двух разных папках bin двух разных exe-приложений. Если я зарегистрирую эти две библиотеки в COM+, используя RegSvcs.exe /appname:app1 pathtodll1/example.dll и RegSvcs.exe /appname:app2 pathtodll2/example.dll. Могу ли я предположить, что один exe всегда будет запускать app1 com+, а другой exe будет запускать app2 com+?

Я имею в виду, я не вижу, как клиентское приложение exe, кстати, управляемое приложение, решает, какое приложение COM+ должно запускаться при запросе DLL, если я могу изменить имя приложения во время регистрации...

Используют ли они свойство CodeBase реестра, чтобы выяснить имя приложения?

Изменить: Кажется, я не могу зарегистрироваться во второй раз. Тогда у меня есть еще один вопрос... Когда приложение app2 запускается и спрашивает службы example.dll, какая dll действительно загружена одна рядом с app1.exe или одна из app2.exe? Мне действительно нужно скопировать example.dll в папку app2 bin?

Если я добавлю третий non com+ dll (second.dll) в микс, на который ссылаются два exe-файла и example.dll, какой second.dll будет загружен в домене приложения app2.exe?

1 ответ

Кажется, что dll, выбранный загрузчиком, не имеет ничего общего с компонентными сервисами. COM + с точки зрения.net - это просто хранилище настроек. Таким образом, когда данная библиотека DLL загружается как обычно в домене приложения, она спрашивает хранилище COM +, если там существует сама библиотека (т.е. библиотека DLL с той же версией и интерфейсом). Если он существует, он считывает свои настройки COM +. Если это не так, я думаю, что он пытается автоматически зарегистрироваться в COM+ (используя настройки COM + по умолчанию).

Другие вопросы по тегам