Каков наилучший способ настроить проект VS, который использует несколько внешних проектов с открытым исходным кодом?

У меня есть большой проект, в котором я заменяю 2 части лучшими альтернативами с открытым исходным кодом. Библиотеки с открытым исходным кодом довольно большие, но они стабильны и неизменны, поэтому включение исходного кода в мой проект VS кажется мне бессмысленным - его больше загружать, больше компилировать и т. Д. Я бы предпочел просто собрать 2 проекта с открытым исходным кодом в одиночку, в фиксированной версии, а затем ссылаться на них из основного проекта.

Но это дает мне пару проблем.

  1. Я буду хотеть версии библиотек DEBUG и RELEASE - VS не может переключаться между ссылками на основе этих определений.

  2. Отладка сложнее, если я хочу перейти к коду в других проектах - это не так просто, как просто пройтись по коду - или это так?

  3. Что-то еще я еще не думал о...

Поэтому, пока я играю с идеями, я подумал, что я спрошу, как вы, ребята, настроите это.

Основной проект и 2 проекта с открытым исходным кодом находятся в разных репозиториях SVN. Проекты с открытым исходным кодом. Я не буду получать новый ствол каждый день, но остановлюсь на выпуске.

Спасибо

1 ответ

Решение

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

Файл csproj представляет собой скрипт MSBuild, который представляет собой XML. Если вы просматриваете его, вы должны найти элемент , который содержит набор элементов . Вы можете добавить условие к одному из этих ссылочных элементов, например так:

<Reference Condition=" '$(Configuration)' == 'Debug' " Include="System.Drawing" />

Атрибут Include может содержать полное строгое имя сборки, которое может не обязательно отличаться для сборок отладки и выпуска вашего двоичного файла. В этом случае вы можете добавить элемент , чтобы включить путь к.dll.

<Reference Include="assembly strong name">
  <HintPath>c:\LibraryStuff\Debug\Library.dll</HintPath>
</Reference>

Ваш путь подсказки также может быть относительным:

<HintPath>..\..\LibraryStuff\Debug\Library.dll</HintPath>

[Отказ от ответственности: я никогда не делал этого со ссылками, хотя, я не могу гарантировать, что не будет проблем. Я быстро проверил его, и он, кажется, работает нормально, хотя Visual Studio отображает обе ссылки независимо от того, какую конфигурацию сборки вы выбрали (хотя она создает только конфигурацию для соответствующего типа конфигурации). Он также помещает значок предупреждения на второй, если у них совпадающие имена, но компиляция, кажется, работает нормально.]

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


2) При условии, что у вас есть.pdbs и исходный код, все в правильных местах и ​​в доступном месте, вы должны просто иметь возможность отладки прямо в библиотеку, просто войдя в код, даже если вы только ссылаетесь на файл.dll.

Другие вопросы по тегам