установить местоположение библиотеки классов dll, на которую ссылается другой проект в решении - PullRequest
1 голос
/ 13 января 2012

Я делаю решение, которое имеет 3 проекта (c #).

  1. Основной исполняемый проект
  2. Dll
  3. Dll

Основной проект имеет ссылки на другие.Я хочу иметь следующую структуру файлов в моем основном проекте:

main.exe 
Libraries - folder
  + 2.dll
  + 3.dll

Но, к сожалению, VS помещает эти файлы DLL в расположение EXE.

Есть ли какое-нибудь простое решение, чтобы сделать это?*

Ответы [ 2 ]

2 голосов
/ 13 января 2012

Вы можете изменить выходной путь в дочерних DLL, чтобы он указывал на библиотеки.

Однако это не стандартный путь, который .Net проверяет во время выполнения для разрешения DLL, поэтому у вас, скорее всего, возникнут проблемы при попытке развернуть его, если вы не загрузите его из этих мест вручную.

Если у вас есть ссылка на проект, помеченная как «Копировать локально», то я не верю, что вы можете изменить каталог, в который Visual Studio копирует файлы через конфигурацию.

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

Обновление

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

Этот элемент конфигурации допускает .Netискать в папке libraries библиотеки DLL для загрузки, чтобы вам не приходилось выполнять дополнительную работу после их установки (вам все равно нужно будет переместить их в этот каталог с помощью команды postbuild).

Вот пример записи конфигурации для поддержки вашей конфигурации:

<configuration>
   <runtime>
      <assemblyBinding>
         <probing privatePath="bin\libraries"/>
      </assemblyBinding>
   </runtime>
</configuration>
1 голос
/ 30 мая 2013

У меня та же проблема, но предыдущие примеры не работали.Только после того, как я указал схему, все работало нормально:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <probing privatePath="Libraries"/>
    </assemblyBinding>
  </runtime>
</configuration>
...