Каков наилучший способ настроить проект VS, который использует несколько внешних проектов с открытым исходным кодом? - PullRequest
2 голосов
/ 14 января 2010

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

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

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

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

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

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

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

Спасибо

1 Ответ

4 голосов
/ 14 января 2010

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-файл.

...