Включение файла проекта вне структуры проекта в Visual Studio (C ++) 2008 - PullRequest
0 голосов
/ 19 января 2012

У меня есть решение Visual Studio с более чем 20 проектами. Он также использует большой репозиторий различных инструментов и DLL-файлов (статические, неизмененные файлы), что является чрезвычайно большим SVN извлечением и присутствует только один раз на жестком диске (из-за статического природа и размер).

Однако у меня есть множество проверок Visual Studio с проектами, все в разных состояниях, версиях и т. Д., А также на разных дисках и разных путях.

У меня есть набор статических DLL-файлов, которые необходимо скопировать из расположения ресурса статической библиотеки на диске, расположение которого указано в переменной среды, которая используется во всех настройках проекта (а также во всех других программах). языки, которые также используются).

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

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

Примеры значений в файле моего проекта:

<File
...
        RelativePath="main.cpp"
...
        RelativePath="..\..\..\..\..\somelib-1.3\redistributables\somelib.dll"
...
        RelativePath="F:\somelib-1.3\redistributables\somelib.dll"

Я пытался изменить эти поля непосредственно в проекте XML до

RelativePath="%MYLIBPATH%\somelib-1.3\redistributables\somelib.dll"

или

RelativePath="${MYLIBPATH}\somelib-1.3\redistributables\somelib.dll"

Но, к сожалению, ни одна из них не работает.

Альтернативы:

  • Включить файлы DLL в реальный проект в SVN; это приведет к дублированию
  • Фиктивный файл в проекте, который содержит DLL-файлы в целевом местоположении в качестве выходных данных, и пользовательский шаг сборки, который использует что-то для их копирования и касания файлов (из-за сравнения даты и времени); довольно некрасиво
  • Пользовательский этап сборки на уровне проекта, который выполняет xcopy; шаг обходит проверку даты / времени и, таким образом, всегда выполняется

Что еще я могу сделать?

...