Макросы/Переменная среды в .sln и .vcproj файлах для Visual Studio

Вы должны использовать положительный прогноз и взгляд сзади:

(?<=\[)([^\]]+)(?=\])
  • (? < = [) Совпадает все, после чего следуют [
  • ([^]] +). любая строка, не содержащая]
  • (? =]) Соответствует всему предшествующему]
31
задан 8 May 2009 в 15:39
поделиться

4 ответа

Лучший способ достичь того, что вы описываете в б), - использовать листы свойств. Также ознакомьтесь с этим очень похожим вопросом .

Я нашел многообещающую информацию о листы свойств, но Visual Studio не раскрывает макросы, когда я использую их в теге File в .vcproj.

Я не уверен, какую версию VS вы используете. VS2008 позволяет вам определить, например, каталог включаемых файлов следующим образом: «$ (OpenCVInclude) \ cxcore \ include». Я использую это все время. OpenCVInclude - это макрос, определенный на странице свойств.

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

  • Включить все проекты в решение.
  • Назовите проект по-разному, например, на основе OEM.
  • Для каждого проекта определите конфигурации выпуска и отладки в решении
  • В «Сборка-> Диспетчер конфигураций» Вы можете установить или снять отметку в столбце «Сборка». для каждой конфигурации. Отметьте «build» для соответствующего проекта.
2
ответ дан 27 November 2019 в 22:31
поделиться

Я думаю, что у меня та же цель, что и у вас: я хочу использовать переменные среды для поиска некоторых проектов в файле решения (.sln) и использовать некоторые переменные среды для поиска некоторых файлов в моих проектах. - отредактируйте файл .sln с помощью текстового редактора и используйте переменные среды со следующим синтаксисом% MyEnvironmentVariable% - отредактируйте файлы .vcproj и замените путь к нужным файлам некоторыми переменными со следующим синтаксисом $ (MyEnvironmentVariable).

Надеюсь, это поможет ... Сирил

20
ответ дан 27 November 2019 в 22:31
поделиться

(а) Кирилл дает достойное решение того, о чем вы просили. Другой способ - хранить изменяемые настройки в одном месте. Обратите внимание, что это не будет работать для файлов, отличных от msbuild, таких как * .sln и * .vcproj (до VS 2010).

Файлы проекта: ... $ (ChangeableDir) \ foo.cs

Common.targets: ChangeThis ...

Однако я не думаю, что это лучший способ делать что-то. Если различия между тем, что вы создаете, представляют собой большие функциональные возможности, вам следует подумать о создании ветки в вашей системе управления версиями. OTOH, если различия незначительны - например, жестко запрограммированные строки - тогда это приводит к вашему второму вопросу ...

(b) Тип управления ресурсами, который вы описываете, по сути, представляет собой ту же проблему, с которой сталкиваются люди, локализующие свой проект на разные языки. К счастью, с 2005 года в Visual Studio встроена прямая поддержка. Ознакомьтесь с предыдущими вопросами, например: Локализация в Visual Studio 2008

0
ответ дан 27 November 2019 в 22:31
поделиться

Просто используйте переменную среды в соответствующем поле:

OutputDirectory="$(MyEnvVariableName)\Bin"

Уловка заключается в том, что вам нужно перезапускать среду разработки Visual Studio каждый раз, когда вы меняете переменную.

Есть статья MSDN именно об этом: Как: использовать переменные среды в сборке

21
ответ дан 27 November 2019 в 22:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: