У меня есть решение 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; шаг обходит проверку даты / времени и, таким образом, всегда выполняется
Что еще я могу сделать?