C # DLL удаляет файлы Interop и AxInterop - PullRequest
0 голосов
/ 26 ноября 2010


Я разрабатываю DLL на C #, которая использует внешние COM-компоненты C ++ DLL в графическом интерфейсе, а также на стороне кода. Всего я использую 3 других компонента, и для каждого, на который я ссылаюсь, я получаю файл «Interop.ComponentName.dll», включенный в вывод.

Я попытался изменить настройку «Копировать локально» в окне «Свойства» на «ложь», но во время выполнения я получаю ошибки, что основная DLL не может найти файлы.

Я понимаю, что они необходимы для работы программы, но возможно ли использовать эти файлы в подкаталоге, таком как основная библиотека находится в "" ../extras/Test.dll ", и я хотел бы, чтобы файлы Interop в "../extras/TestResources/"?

Дополнительная информация: Я использую C # с Visual Studio 2008 в Windows XP SP3.

Спасибо, К.

Ответы [ 2 ]

0 голосов
/ 26 ноября 2010

Чтобы позволить CLR находить сборки, которых нет в папке bin или других местах, где он автоматически ищет, вы можете использовать элемент в файле app.config.

Подробнее о том, как это сделать, см. http://msdn.microsoft.com/en-us/library/efs781xb(vs.71).aspx.

2 строки для заметки из связанной статьи:

  • Если сборка является частной сборкой, параметр кодовой базы должен быть путем относительно каталога приложения.

  • Для сборок без строгого имени версия игнорируется, и загрузчик впервые использует внутри

0 голосов
/ 26 ноября 2010

На какие библиотеки взаимодействия вы ссылаетесь? Если они нестандартные (то есть не включены в ваш целевой дистрибутив .NET Framework), Visual Studio может включить их в выходные данные вашего проекта, поскольку они не зарегистрированы в глобальном кэше сборок.

Подумайте, как ваше распределенное приложение C # будет ссылаться на внешние библиотеки DLL. Если они являются частью дистрибутива .NET, то они должным образом зарегистрированы в GAC пользователя. В противном случае ваш проект установки / развертывания зарегистрирует их. Если это последнее, то, если вы перейдете к свойствам вашего исходного проекта, в разделе «Сборка» вы увидите поле выходного пути. Внутренняя утилита сборки Visual Studio позволит вам выводить файлы сборки вашего проекта только в один каталог.

Однако, есть способ достичь того, что вы просите. Это немного сложнее, чем позволить Visual Studio управлять вашим развертыванием. Загляните в MSBuild.exe и создайте сценарии.

...