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 + по умолчанию).