2009-05-21 6 views
15

자바 스크립트 파일 세트에서 jsmin.exe를 실행하는 ASP.NET 웹 컨트롤 (서버 컨트롤) 프로젝트에 대한 사전 빌드 작업을 추가했습니다. 이러한 출력 파일은 소스 제어 트리의 일부이며 어셈블리에 포함됩니다.사전 빌드 작업을위한 파일 아웃 (TFS) 확인

문제는 미리 빌드가 실행될 때 jsmin이 파일을 읽기 전용으로 쓸 수 없다는 것입니다. 파일을 손으로 체크 아웃 할 수 있습니까? 또는 명령 줄에 파일의 특성을 설정해야합니다.

문제에 대한 개선 된 해결책은 환영합니다.

업데이트 - 당신은 VS 디렉토리 씁니다 메 흐멧의 대답에 하나의 작은 문제 : 팀 파운데이션 서버를 사용하는 경우

"$(DevEnvDir)tf" checkout /lock:none "$(ProjectDir)myfile" 

답변

10

을, 당신은 확인 team foundation command line utility (tf.exe)를 사용할 수 있습니다 미리 빌드하는 동안 파일을 지우고 포스트 빌드 중에 다시 체크인하십시오. 소스 제어를 위해 다른 것을 사용하고 있다면 tf.exe와 같은 명령 줄 도구가 있는지 확인할 수 있습니다.

2

빌드의 일부로 파일을 검사하지 않으려면 (일반적으로 이런 종류의 파일은 아닙니다) jsmin을 실행하기 전에 .js 파일의 특성을 설정하기 만하면됩니다. 파일을 읽기/쓰기 가능으로 설정하는 가장 쉬운 방법은 MSBuild community extensions에서 제공하는 Attrib 태스크를 사용하는 것입니다. 동일한 커뮤니티 확장은 MSBuild에서 JSMin을 쉽게 호출 할 수 있도록 JSCompress 태스크를 제공합니다. 증분 빌드로 이동하려고하면 점점 후 파일을 수정하여 그들이 잘 문제가 발생할 수 있음을

<Import Project="$(MSBuildExtensionsPath)\MSBuildCommunityTasks\MSBuild.Community.Tasks.Targets" /> 

<!-- rest of TFSBuild.proj file --> 

<Target Name="AfterGet">  
    <Message Text="Compressing Javascript files under &quot;$(SolutionRoot)&quot;." /> 
    <CreateItem Include="$(SolutionRoot)\**\*.js"> 
    <Output TaskParameter="Include" ItemName="JsFiles"/> 
    </CreateItem> 
    <Attrib Files="@(JsFiles)" ReadOnly="false"/> 
    <JSCompress Files="@(JsFiles)" /> 
</Target> 

참고 :

따라서 당신은 (하지 테스트)는 다음과 같이이있을 것이다.

+0

보류중인 변경 사항으로 표시되지 않는 수정 된 파일을 오도하지 마시겠습니까? 체크인시이를 놓칠 수 있습니다. –