2016-10-26 6 views
3

Я использую код ниже для компиляции моего проекта в сценарии торта, и я хочу получить журнал построения в текстовом файле.Как получить журнал сборки из msbuild?

if(IsRunningOnWindows()) 
{ 

    // Use MSBuild 
    foreach(string currenproject in projectslocation) 
    { 
    MSBuild(currenproject, new MSBuildSettings() 
    .SetConfiguration(configuration) 
    .SetVerbosity(Verbosity.Minimal)); 

    } 

} 

Возможно ли создать файл журнала сборки?

ответ

5

Далее в следующем выпуске Cake (0.17.0) (который, мы надеемся, мы выпустили в конце этой недели) мы реализовали эту feature request, что позволяет использование нового метода расширения, который позволяет передавать в MSBuildFileLogger. Этот метод расширения предотвратит необходимость перехода на маршрут ArgumentCustomization.

Это должно позволить вам что-то вроде:

MSBuild("./myproject.sln", new MSBuildSettings() 
    .AddFileLogger(new MSBuildFileLogger { 
     LogFile = "./errors.txt", 
     MSBuildFileLoggerOutput = MSBuildFileLoggerOutput.ErrorsOnly 
}); 

Вы можете получить предварительный релиз v0.17.0 версию торт сегодня с помощью торта MyGet feed.

Если вы используете nuget CLI для установки Cake, как это делается в , вы добавляете -Source https://www.myget.org/F/cake/api/v3/index.json в инструкцию nuget install.

Тогда:

  • Если вы используете package.config приколоть Cake версии укажите версию 0.17.0-alpha0092 или более поздней версии.

  • Если вы устанавливаете только с помощью Cake идентификатор пакета, то вы либо просто добавить -PreRelease, и он будет получать самую последнюю версию с кормом или указать -Version 0.17.0-alpha009 параметр.

+0

Это отличный момент! – devlead

2

Вы можете использовать метод расширения MSBuildSettings WithLogger(MSBuildSettings, ​string loggerAssembly, ​string loggerClass, ​string loggerParameters), который может использоваться для указания настраиваемого ведения журнала MSBuild.

В настоящее время нет доступных параметров для стандартного регистратора файлов MSBuild, но вы все равно можете использовать это, используя ArgumentCustomization.

if(IsRunningOnWindows()) 
{ 
    DirectoryPath logPath = MakeAbsolute(Directory("./logfiles")); 
    // Use MSBuild 
    foreach(string currenproject in projectslocation) 
    { 
     FilePath logFile = logPath.CombineWithFilePath(string.Format(
           "{0}.log", 
           currenproject)); 

     MSBuild(currenproject, new MSBuildSettings { 
      ArgumentCustomization = args=>args.Append(
       "/flp:\"logfile={0};verbosity={1}\"", 
       logFile.FullPath, 
       Verbosity.Diagnostic 
      ) 
     }.SetConfiguration(configuration) 
     .SetVerbosity(Verbosity.Minimal)); 
    } 
} 
+1

@vijay было этим, что вы искали? Хороший вопрос - прокомментировать, что-то неясно, и я попытаюсь разъяснить. – devlead

Смежные вопросы