2010-03-09 2 views
5

JavaScript 파일 세트를 가져 와서 축소하고 확장 한 .min.js 파일을 출력하는 사용자 지정 MSBuild 작업이 있습니다. Visual Studio를 통해 일반 빌드를 수행하면 완벽하게 작동하며 .min.js 파일은 원본 파일과 동일한 디렉터리에 출력됩니다. Visual Studio에서 게시 기능을 사용하여 배포하려고하면 원래 .js 파일 만 게시 디렉터리로 이동합니다 .... 끝내기 위해 "콘텐츠"로 계산되도록 작업 출력을 가져올 수 있습니까? 게시 된 폴더에서?msbuild 사용자 지정 작업

편집 : 내가 그 주위에 ItemGroup를 생성 한 후 내 작업의 내부 출력 태그를 추가하고하여 알아낼 수 있었다 :

<Target Name="AfterBuild">  
    <ItemGroup> 
     <JavaScriptFiles Include="Scripts\*.js" Exclude="Scripts\*.min.js" /> 
    </ItemGroup> 
    <JsCompress Files="@(JavaScriptFiles)" OutputPath="Scripts"> 
     <Output TaskParameter="CompressedFiles" ItemName="CompressedFiles" /> 
    </JsCompress> 
    <ItemGroup> 
     <Content Include="@(CompressedFiles)" /> 
    </ItemGroup> 
</Target> 

답변

0

변경 파일 속성. 해당 파일의 빌드 작업 및 출력 디렉토리로 복사 속성을 확인하십시오.

2

빌드 및 게시는 별도의 대상입니다. 프로젝트에 대상을 추가하고 축소 된 내용을 해당 대상으로 추상화 한 다음 AfterBuild 및 게시 대상을 축소 대상에 종속되게 만듭니다. 이런 식으로 뭔가가 :

<Target Name="AfterBuild" DependsOnTargets="Build;Minify"> 
    </Target> 
    <Target Name="Publish" DependsOnTargets="Build;Minify"> 
    </Target> 
    <Target Name="Minify" DependsOnTargets="Build"> 
    <ItemGroup> 
     <JavaScriptFiles Include="Scripts\*.js" Exclude="Scripts\*.min.js" /> 
    </ItemGroup> 
    <JsCompress Files="@(JavaScriptFiles)" OutputPath="Scripts"> 
     <Output TaskParameter="CompressedFiles" ItemName="CompressedFiles" /> 
    </JsCompress> 
    <ItemGroup> 
     <Content Include="@(CompressedFiles)" /> 
    </ItemGroup> 
    </Target> 

이 조각 물론, 당신이 또는 경우하지 않을 수 빌드 타겟을 가지고 의미합니다. 이러한 이유로 당신은 이것을 수정해야 할 수도 있습니다. 희망이 도움이!