Я имею полный контроль над этими базами кода, за исключением эти начальные условия (например, невозможно выполнить рефакторинг управляемой библиотеки как COM-объекта и невозможно добавить /clr к исходному собственному приложению)
Я хочу, чтобы эти две базы кода взаимодействовали друг с другом. Кроме того, некоторые функции между ними работают с ограничениями по времени, если это имеет значение (передача данных видеокадра от одного к другому в режиме реального времени).
Для достижения этой цели мы пока что Готово — реализовать третий проект C++/CLI в качестве посредника (включен /clr:netcore 6), который работает очень хорошо. Нам это очень нравится, потому что для нашего варианта использования это работает достаточно быстро, а взаимодействие легко реализовать с помощью импорта/экспорта, полностью внутри среды разработки, с полным соблюдением типов во всем.
Проблема, в которой мы находимся запуск C# NET изнутри C++ приводит к тому, что приложение ищет все зависимости NET и не может их найти. И единственный способ решить эту проблему, который мы нашли до сих пор, — это развернуть всю локальную сеть NET в рабочем каталоге приложения, и, очевидно, это не идеально
Примечание: мы сделали это, запустив публикационную сборку управляемой
библиотеки, чтобы собрать вместе все ее библиотеки DLL. Итак, с одной стороны, мы
признаем, что не полностью подтвердили каждую отдельную DLL, как это необходимо, но
мы подтвердили - поэтапно добавив хотя бы несколько DLL по одному -
что ошибки ссылаются на различные библиотеки .NET, Accessability,
System.Windows.Forms и т. д. Я включаю это только для ясности того, что
мы делаем и чего не знаем на данный момент, но мы полагаем, что это не должно
на самом деле иметь значение, потому что управляемое приложение, когда оно запускается как точка входа программы,
находит все свои зависимости, как и ожидалось, и мы полагаем, что нам
не хватает какой-то настройка или перехват, необходимые для информирования собственных/CLI
компонентов о том, как ссылаться на все ссылки управляемых библиотек,
позаботясь обо всем за один раз
Также обратите внимание, что проекты видят друг друга внутри IDE просто хорошо
Учитывая эти начальные условия проекта, какой самый простой и прямой способ заставить собственное приложение видеть зависимости управляемого приложения, так же, как управляемое приложение видит их само по себе при изолированном запуске?
Идеальные возможные решения должны:
- Будьте максимально простыми. Мы ожидаем что-то вроде
ссылки на проект, параметра сборки или переменной среды выполнения. - Введите как можно меньше уровней косвенности. Уже существует
один уровень через C++/CLI, который является очень прозрачным уровнем с полным
контролем типов и встроенной интеграцией IDE. - Происходит в среде разработки. Возня с переменными пути операционной системы
на самом деле не решает фундаментальную проблему видимости проекта
Подробнее здесь: https://stackoverflow.com/questions/780 ... -via-c-cli
Мобильная версия