Разбор файла VSB0 MSBuild vcxproj - PullRequest
       15

Разбор файла VSB0 MSBuild vcxproj

0 голосов
/ 04 ноября 2010

В настоящее время я работаю над консольным приложением, которое передаст файл vcxproj и скомпилирует его с помощью GCC.К сожалению, я столкнулся с целым рядом проблем практически мгновенно.

Я заметил несколько ярлыков каталогов, таких как:

VCTargetsPath
VCInstallDir
SolutionDir
ProjectDir
UserRootDir

и т. Д.

Откуда MSBuild получает эти значения?Я предположил, что они были переменными окружения, настроенными для процесса MSBuild (после всех известных переменных окружения обращаются одинаково, то есть "$ (...)").Это было плохое предположение, так что мне интересно, как я к ним отношусь.Кто-нибудь есть идеи по этому поводу?

Любая информация будет высоко ценится:)

Ответы [ 3 ]

3 голосов
/ 04 ноября 2010

Исполняемый файл MSBuild (и зависимые библиотеки DLL) обрабатывает эти свойства так же, как обрабатывает любое другое свойство в файле сборки.В этом случае это просто предопределенные свойства, которые он ищет явно.

Если вы действительно хотите копаться в этом, откройте Microsoft.Build.dll в Reflector и найдите метод Microsoft.Build.Construction.SolutionProjectGenerator.AddGlobalProperties(...), чтобы получитьидея о том, как он обрабатывает некоторые из известных свойств.

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

2 голосов
/ 04 ноября 2010

Некоторые из них определяются местоположением ваших файлов

  • SolutionDir - каталог, содержащий файл решения (.sln), включающий этот проект
  • ProjectDir - каталог, содержащий файл проекта (.vcproj, .vcxproj)

Другие определяются местом установки MSVC

  • VCInstallDir - где установлена ​​часть Visual C Visual Studio. то есть. C:\Program Files\Microsoft Visual Studio 8\VC

и так далее, и будет внутренним для msbuild в зависимости от того, что вы загрузили.

2 голосов
/ 04 ноября 2010

Я считаю, что они связаны с макросами Visual Studio: MSDN

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...