我需要確保運行在大量文件上的自定義構建工具始終在其中一個文件發生更改時運行。如何配置Visual Studio自定義構建工具以依賴大量文件?
我知道你可以爲自定義構建工具指定「附加依賴」,但是有沒有比每行指定一個文件更好的方法?
我需要確保運行在大量文件上的自定義構建工具始終在其中一個文件發生更改時運行。如何配置Visual Studio自定義構建工具以依賴大量文件?
我知道你可以爲自定義構建工具指定「附加依賴」,但是有沒有比每行指定一個文件更好的方法?
「附加依賴」是正確的,唯一記載的方式。你可以調整該字段的內容使用外部工具,以節省做一個拷貝的麻煩在項目文件構建工具&粘貼&錯字調整。
它不會很可靠,但你可以把所有的文件放在一個子文件夾中,並使文件夾成爲依賴。
剛纔提出的構建工具依賴於一個文件。創建另一個自定義構建工具,在其之前運行,如果任何真正的依賴關係發生了變化,則觸及此文件。好處是我現在具有相當多的靈活性,並且如果依賴關係發生變化,則不需要更改任何項目設置 - 這是通過新的自定義構建工具訪問的數據庫處理的。
這聽起來也是一個很好的解決方案。 – 2011-03-25 12:07:01
一點點劈:
(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)設置第e自定義Buld步驟強制發生預建立事件,即
Command Line: echo --------------
Outputs: echo.fake
Execute After: PreBuildEvent
確實有效嗎? – Boinst 2011-04-05 08:14:29
沒有。它沒有。 – Boinst 2011-04-05 08:28:13