많은 파일에서 작동하는 사용자 지정 빌드 도구가 해당 파일 중 하나가 변경 될 때 항상 실행되어야합니다.많은 파일을 사용하는 Visual Studio 사용자 지정 빌드 도구를 구성하려면 어떻게합니까?
사용자 지정 빌드 도구에 대해 "추가 종속성"을 지정할 수 있지만 한 줄에 하나의 파일을 지정하는 것보다 더 좋은 방법이 있습니까?
많은 파일에서 작동하는 사용자 지정 빌드 도구가 해당 파일 중 하나가 변경 될 때 항상 실행되어야합니다.많은 파일을 사용하는 Visual Studio 사용자 지정 빌드 도구를 구성하려면 어떻게합니까?
사용자 지정 빌드 도구에 대해 "추가 종속성"을 지정할 수 있지만 한 줄에 하나의 파일을 지정하는 것보다 더 좋은 방법이 있습니까?
"추가 종속성"은 정확하고 문서화 된 방식입니다. 외부 도구를 사용하여 프로젝트 파일의 빌드 도구에 대해이 필드의 내용을 조정하여 & 붙여 넣기 & 오타 조정 복사 문제를 방지 할 수 있습니다.
안정적이지는 않지만 모든 파일을 하위 폴더에 넣고 폴더를 종속성으로 만들 수 있습니다.
빌드 도구를 하나의 파일에만 의존하게 만들었습니다. 실제 종속성 중 하나가 변경되면이 파일을 실행하는 다른 사용자 정의 빌드 도구가 생성됩니다. 장점은 이제 내가 상당한 유연성을 가지며 종속성이 바뀌면 프로젝트 설정을 변경할 필요가 없다는 것입니다. 새로운 맞춤 빌드 도구가 액세스하는 데이터베이스를 통해 처리됩니다.
훌륭한 해결책 인 것처럼 들립니다. –
조금 해킹이 :
(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 사전 벌칙 이벤트가 강제 실행되도록하려면 (예 :
Command Line: echo --------------
Outputs: echo.fake
Execute After: PreBuildEvent
) 실제로 작동합니까? – Boinst
Nope. 그렇지 않습니다. – Boinst