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
这听起来也是一个很好的解决方案。