2

背景: VS 2008 を使用しており、TFS 2005 から 2008 にアップグレード中です。

いくつかのプロジェクトを含むソリューションがあり、全体で数百のコード ファイルがあります。これらすべてのファイルに同じテキストをコメントとして追加します (著作権メッセージ)。これを行うための迅速/簡単/効率的な方法を知っている人はいますか? また、すべてのファイルをチェックアウトおよびチェックインする必要がないように、TFS 経由でこれを行う方法はありますか?

これを行うマクロの作成に関する CodeProject のコードをいくつか見つけましたが、各ファイルを個別に開いてから、各ファイルでマクロを実行する必要があり、これは回避したいと考えていました。

ありがとう。

4

4 に答える 4

1

あなたが達成しようとしていることを正確に実行するコードを 20 行で公開しました。

そのコードのリファレンスを以下に示します。

static void Main(string[] args)
{
    string path = "C:\\...TopLevelFolder";
    string copyright = "//Copyright © 2011 Rex Cardan, Ph.D";
    string[] files = Directory.GetFiles(path, "*.cs", SearchOption.AllDirectories);
    foreach (string file in files)
    {
        if (file.Split('\\')[file.Split('\\').Length-1]!= "AssemblyInfo.cs")
        {
            using (StreamWriter sw = File.AppendText(file))
            {
                sw.WriteLine("\r\n");
                sw.WriteLine(copyright);
                //Normalize Line Endings
                sw.WriteLine("\r\n");
            }
        }
    }
}
于 2011-09-08T18:05:15.243 に答える
1

Cygwinがインストールされている場合は、次の Bash スクリプトを使用できます。

# Process all .cpp and .h files under the directory tree at $PROJECTROOT
# To add other file types, add more "-o -name \*.ext" clauses.
# $COPYRIGHTFILE is the file containing your copyright message
COPYRIGHTLENGTH=$(wc -l $COPYRIGHTFILE)
for file in $(find $PROJECTROOT -name \*.cpp -o -name \*.h); do
    if diff <(head -n $COPYRIGHTLENGTH $file) $COPYRIGHTFILE; then
        (cat $COPYRIGHTFILE; cat $file) > /tmp/file
        mv /tmp/file $file
    fi
done

これにより、ディレクトリ ツリー $PROJECTROOT の下にあるすべての .cpp または .h ファイルが検索され、先頭と著作権メッセージが比較され、異なる場合は、一時ファイルを介してファイルの先頭に著作権が追加されます。

免責事項:テストされていないため、最初にテストし、自己責任で使用してください。

于 2008-12-23T21:30:18.030 に答える
1

すべてのディレクトリとすべてのコード ファイル (*.cs などを想定) を反復処理し、先頭にテキストを追加する単純なプログラムを作成するのは簡単なことです。

ビルド、テスト、実行には 20 分もかかりません。

TFS に関する限り、ツリーの一番上からチェックアウト コマンドを実行するだけです。ソース管理のすべてのファイルをチェックアウトします。完了したら、トップからもチェックインできます。

C# だと仮定すると、System.IO.Directory.GetDirectories() を見てください...

于 2008-12-23T21:28:15.773 に答える
0

すべてのファイルをチェックアウトおよびチェックインする必要がないように、TFS 経由でこれを行う方法はありますか?

この変更をファイルの変更履歴の一部にすることをお勧めします。したがって、すべてのファイルをチェックアウトしてチェックインする必要があります

Kevin Pilch-Bisson のブログ記事「Formatting all C# files in a solution」は、優れたリソースです。そのアルゴリズムを変更して編集を行うことができます。

于 2008-12-29T06:49:59.253 に答える