0

PSake を使用してすべてのビルドを自動化しており、TeamCity ビルドをより強力にするのに非常に役立つことがわかりました。

紹介したいことの 1 つは、ソリューション内のすべてのプロジェクトでエラーとして警告が true に設定されていることを確認する手順です。これがないプロジェクトを見つけることはそれほど頻繁ではありませんが、私は現在、それほど普及していないレガシーコードベースにも取り組んでいます.

設定がオンになっていることを簡単に確認できるようにしたいと思っていました。正しいテキストをチェックする方法があると思います(

<TreatWarningsAsErrors>true</TreatWarningsAsErrors>

) .*proj ファイルに含まれていますが、よりクリーンで効果的な方法があることを願っていました。

何か案は?

4

1 に答える 1

1

.*proj ファイルを調査することの何が問題なのかわかりません。そのため、文字列リテラル全体を検索したくないだけだと思います。

プロジェクト ファイルは XML ベースなので、探しているものを見つけるための Linq to XML コード スニペットを次に示します。

void VerifyTreatWarningsAsErrorsIsOn( string projFilename )
{
    XNamespace xmlns = "http://schemas.microsoft.com/developer/msbuild/2003";
    var twaeList = XDocument.Load( projFilename ).Descendants( xmlns + "TreatWarningsAsErrors" ).ToList();

    if ( twaeList.Count() > 0 )
    {
        var falseValues = twaeList.Where( x => x.Value == "true" );
        if ( falseValues.Count() > 0 )
        {
                // Not good..
        }
    }
    else
    {
        // None exist.. not good either..
    }
}

問題のドメインで少しずれていることの 1 つは、1 つの構成 (デバッグなど) でフラグがオンになっているプロジェクト ファイルがあるかもしれないが、それが他の構成に存在するかどうかさえわからないことです。

したがって、実際には、上記のコードを拡張してすべての構成を走査し、構成ごとにフラグを探すことができます。さらに、構成が存在しない場合、または「false」に設定されている場合は、XML ドキュメントを操作して、これらすべての問題をその場で挿入/修正できます。

HTH。

于 2012-03-08T23:01:45.420 に答える