Visual studio 如何将VisualStudio自定义生成工具配置为依赖于大量文件?

Visual studio 如何将VisualStudio自定义生成工具配置为依赖于大量文件?,visual-studio,dependencies,custom-build,Visual Studio,Dependencies,Custom Build,我需要确保当其中一个文件被更改时,对许多文件进行操作的自定义构建工具始终处于运行状态 我知道您可以为自定义构建工具指定“其他依赖项”,但是有没有比每行指定一个文件更好的方法呢 它不太可靠,但您可以将所有文件放在一个子文件夹中,只需将文件夹设置为依赖项即可。其他依赖项是正确且唯一有文档记录的方法。您可以使用外部工具调整项目文件中构建工具的此字段内容,以避免复制、粘贴和打字调整带来的麻烦。仅使构建工具依赖于一个文件。创建了另一个自定义生成工具,该工具在它之前运行,并且在任何实际依赖项发生更改时,都会

我需要确保当其中一个文件被更改时,对许多文件进行操作的自定义构建工具始终处于运行状态


我知道您可以为自定义构建工具指定“其他依赖项”,但是有没有比每行指定一个文件更好的方法呢

它不太可靠,但您可以将所有文件放在一个子文件夹中,只需将文件夹设置为依赖项即可。

其他依赖项是正确且唯一有文档记录的方法。您可以使用外部工具调整项目文件中构建工具的此字段内容,以避免复制、粘贴和打字调整带来的麻烦。

仅使构建工具依赖于一个文件。创建了另一个自定义生成工具,该工具在它之前运行,并且在任何实际依赖项发生更改时,都会触及此文件。优点是我现在有了很大的灵活性,如果依赖项发生了变化,我就不需要更改任何项目设置——这是通过新的自定义构建工具访问的数据库来解决的。

一点小技巧:

(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;
        }
    }
}
cscript.exe /nologo detect.js $(Output) $(InputFolder)
(3) 设置自定义Buld步骤以强制发生预构建事件,即

Command Line: echo --------------
Outputs: echo.fake
Execute After: PreBuildEvent

这听起来也是一个很好的解决方案。