COM / COM + - это неуправляемая технология. Он ничего не знает об управляемом коде .NET, поэтому регистрация вашей сборки .NET непосредственно в реестре COM может не сработать. mscoree.dll - это хост-библиотека .NET, которая загружает управляемую среду выполнения и представляет неуправляемые интерфейсы для COM, необходимые для реестра COM. Когда активируется экземпляр COM-класса COM, который реализует ваша сборка, COM + сначала загружает mscoree, затем mscoree должен загрузить вашу сборку, чтобы подключить вашу реализацию к оболочке, вызываемой COM, которую mscoree представляет для COM +.
Где mscoree ищет вашу сборку для загрузки, зависит от того, как вы ее зарегистрировали. Он следует нормальным правилам проверки пути загрузчика .NET Fusion, что означает, что он обычно будет искать в GAC, если вы не указали кодовую базу во время регистрации (например, используя аргумент командной строки regasm /codebase
).
Параметры конфигурации для управляемого кода ограничены AppDomain, и по умолчанию имя файла конфигурации для AppDomain получается путем добавления суффикса .config
к пути исполняемого файла процесса, в котором размещен AppDomain. Ваш компонент размещен в COM +, поэтому будет выполняться в процессе, который является экземпляром DllHost.exe. Таким образом, по умолчанию файл конфигурации для домена приложения вашего компонента будет DllHost.exe.config. Однако, если вы укажете корневой каталог приложения для приложения COM +, это изменит местоположение, в котором AppDomain ищет свою конфигурацию, на [COM+ Application Root Directory]\[COM+ Application Name].config
.