Как мне избежать копирования сторонних библиотек C ++? - PullRequest
1 голос
/ 14 ноября 2011

У меня есть решение с проектом C ++ и проектом c #, которое вызывает методы из первого, используя Interop. Поскольку я хочу избежать любого жестко закодированного пути, я нашел способ установить путь к dll C ++ в app.config. Моя проблема заключается в том, что моя библиотека C ++ зависит от других библиотек, которые мне всегда приходится копировать в папки bin / Release и bin / Debug. Как я могу избежать этого? Было бы хорошо, если бы я мог установить путь к сторонним dll в app.config. Я нашел это

<probing privatePath="bin\DLLs" />

но, похоже, работает только для подкаталогов приложений.

Ответы [ 2 ]

2 голосов
/ 14 ноября 2011

Не указывайте местоположение кода для DLL. Поместите каталоги в переменную% PATH%. Предполагая, что Windows является средой, прочитайте Путь поиска для загрузки DLL .

EDIT: % PATH% - это переменная среды, поэтому вы можете установить ее с помощью Environment.SetEnvironmentVariables . Я бы прочитал privatePath из файла конфигурации и использовал данный метод, чтобы добавить его к% PATH%. Чтение из файла конфигурации можно выполнить с помощью класса ConfigurationManager .

1 голос
/ 15 ноября 2011

Я напишу следующую команду в вашем пост-билде (поэтому вам не нужно выполнять ручную работу)

xcopy /s c:\source\your_dll_folder c:\your_target_folder\bin\debug
xcopy /s c:\source\your_dll_folder c:\your_target_folder\bin\Release

Вот свойства размещения вашего проекта после сборки enter image description here

...