Создание vcxproj с помощью MSBuild, включая ведение журнала в файл журнала по умолчанию, указанный в проекте или унаследованный от файла реквизита.

Когда Visual C++ строит файл (vcxproj) из Visual Studio или вы строите его с помощью devenv (сборка sln), вы получаете журнал из сборки vcxproj в файле, указанном в элементе BuildLog.Path. Значение по умолчанию для этого элемента — $(IntDir)\$(MSBuildProjectName).log.

На самом деле я считаю эту функцию очень полезной для анализа после сборки каждого проекта.

Я хотел бы имитировать это поведение, собирая только из msbuild.exe.

Существуют серьезные причины автоматизации сборки, по которым я не могу сейчас использовать devenv (насколько мне известно, я не могу собрать vcxproj с помощью devenv без sln).

Я пытался решить эту проблему:

  1. создание пользовательской цели, которая определяет значение BuildLog.Path и возвращает его обратно
  2. а затем выполните задачу Exec с помощью командной строки msbuild, включая аргумент, который использует filelogger для создания файла журнала.

Проблема в том, что он не работает!

Есть интересная вещь, что по умолчанию указывается:

<ItemDefinitionGroup>
   <BuildLog>
      <Path>$(IntDir)\$(MSBuildProjectName).log</Path>
   </BuildLog>
</ItemDefinitionGroup>

Если я правильно понял, это указывает путь к метаданным для каждого элемента BuildLog.

По умолчанию нет элемента BuildLog (поскольку в vcxproj нет элемента Include для элемента BuildLog).

Кто-нибудь имеет решение этой проблемы или может объяснить, как ее решить?

  1. определить метаданные BuildLog.Path или
  2. построить файл vcxproj только с помощью msbuild с файлом журнала в файл журнала, указанный в vcxproj или унаследованный от файла реквизита

person Palo Misik    schedule 01.07.2013    source источник