3

多くのファイルで動作するカスタム ビルド ツールが、それらのファイルの 1 つが変更されたときに常に実行されるようにする必要があります。

カスタム ビルド ツールに「追加の依存関係」を指定できることは知っていますが、1 行に 1 つのファイルを指定するよりも良い方法はありますか?

4

4 に答える 4

7

ビルドツールを1つのファイルに依存させただけです。その前に実行され、実際の依存関係のいずれかが変更された場合にこのファイルに触れる別のカスタム ビルド ツールを作成しました。利点は、非常に多くの柔軟性が得られ、依存関係が変更された場合にプロジェクト設定を変更する必要がないことです。これは、新しいカスタム ビルド ツールがアクセスするデータベースを介して処理されます。

于 2011-03-25T00:14:55.860 に答える
1

「追加の依存関係」は、正しい唯一の文書化された方法です。外部ツールを使用して、プロジェクト ファイル内のビルド ツールのこのフィールドの内容を調整して、コピー & ペースト & タイプミス調整を行う手間を省くことができます。

于 2011-03-23T22:50:36.813 に答える
0

少しハック:

(1)依存ファイルを別のフォルダーにグループ化します

(2) 次のように jscript ファイルを作成しdetect.jsます。

var output = WScript.arguments(0);
var folder = WScript.arguments(1);
var fso = new ActiveXObject("Scripting.FileSystemObject");
var objOutput = fso.GetFile(output);
var objFolder = fso.GetFolder(folder);
// if the output file is older than input folder,
// delete output file to force regenerate
if (objOutput.DateLastModified < objFolder.DateLastModified) {
    fso.DeleteFile(objOutput);
} else {
    // if the output file is older than one of files in the input folder,
    // delete output file to force regenerate
    var e = new Enumerator(objFolder.Files);
    for (; !e.atEnd(); e.moveNext()) {
        if (objOutput.DateLastModified < e.item().DateLastModified)
            fso.DeleteFile(objOutput);
            break;
        }
    }
}

(2) 次のようにコマンド ラインをビルド前イベントに追加します。

cscript.exe /nologo detect.js $(Output) $(InputFolder)

(3) カスタムビルドステップをセットアップして、ビルド前イベントを強制的に発生させます。

Command Line: echo --------------
Outputs: echo.fake
Execute After: PreBuildEvent
于 2013-10-25T06:12:47.387 に答える
0

それほど信頼できるものではありませんが、すべてのファイルをサブフォルダーに入れて、そのフォルダーを依存関係にすることができます。

于 2011-03-23T22:44:36.787 に答える