3

Cake スクリプトでプロジェクトをコンパイルするために次のコードを使用しています。ビルド ログをテキスト ファイルで取得したいと考えています。

if(IsRunningOnWindows())
{

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

  }

}

ビルドログファイルを作成することは可能ですか?

4

2 に答える 2

5

Cake の次のリリース (0.17.0) (できれば今週末にリリースされる予定です)では、 MSBuildFileLoggerを渡すことができる新しい拡張メソッドを使用できるようにするこの機能要求を実装しました。この拡張メソッドにより、ArgumentCustomization ルートに進む必要がなくなります。

これにより、次のようなことが可能になります。

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

今日、Cake のMyGet フィードを使用して、Cake のプレリリース v0.17.0 バージョンを入手できます。

デフォルトのブートストラップで行われるように、nuget CLI を使用して Cake をインストールする場合は-Source https://www.myget.org/F/cake/api/v3/index.jsonnuget installステートメントに追加します。

それで:

  • Cake のバージョンを固定するために を使用している場合は、package.configバージョン0.17.0-alpha0092以降を指定します。

  • パッケージ IDだけを使用してインストールする場合はCake、追加するだけ-PreReleaseでフィードから最新バージョンを取得するか、-Version 0.17.0-alpha009パラメータも指定します。

于 2016-10-26T11:08:51.553 に答える
2

WithLogger (MSBuildSettings, string loggerAssembly, string loggerClass, string loggerParameters) MSBuildSettings 拡張メソッドを使用して、カスタム 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));
    }
}
于 2016-10-26T10:59:07.840 に答える