вызов управляемого компонента С# из неуправляемого кода С++, как определить конфигурацию

StackOverflow https://stackoverflow.com/questions/1020964

  •  06-07-2019
  •  | 
  •  

Вопрос

Я хочу вызвать компонент C# из неуправляемой службы C++.Мне нужно установить элементы конфигурации, ожидаемые компонентом C#.Какое имя должно быть у конфигурации и где оно должно находиться.

например.родительская папка\cplusplusservice.exe

другая папка\csharp.dll

мне нужен csharp.dll.config или его эквивалент.

Спасибо,

Это было полезно?

Решение

Файл .config должен называться так же, как имя приложения.Когда неуправляемый код впервые вызывает управляемый код, создается домен приложения, который контролирует, какой файл конфигурации загружается и откуда.

Вам нужно будет вручную скопировать файл .config в выходной каталог и назвать его по имени приложения или создать для этого пост-сборку.

По сути, те же правила, которые применяются к файлам .config для чисто управляемых приложений, применяются и к неуправляемым приложениям, загружающим управляемый код.

Другие советы

В этой статье показано, как использовать файлы конфигурации с C#:

http://www.devasp.net/net/articles/display/679.html

В этой статье представлен обзор вызова управляемого компонента C# из неуправляемого C++ и наоборот, а также некоторых вспомогательных классов:

http://www.codeproject.com/KB/mcpp/unmanaged_to_managed.aspx

Это зависит от того, как создается AppDomain, на котором размещен ваш управляемый код.

Например, если вы предоставляете управляемый код как COM, он будет загружен в домен приложения по умолчанию, а файл конфигурации будет находиться в том же каталоге, что и исполняемый файл (в вашем случае — родительская папка\cplusplusservice.exe.config).

Если вы создаете AppDomain самостоятельно, вы можете контролировать, где находится файл конфигурации.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top