2010-03-09 11 views
5

Tengo una tarea personalizada de MSBuild que toma un conjunto de archivos JavaScript, los minimiza y los emite con la extensión .min.js. Cuando hago una compilación normal a través de Visual Studio, funciona perfectamente y los archivos .min.js se envían al mismo directorio que los archivos originales. Cuando trato de implementar usando la función Publicar en Visual Studio, solo los archivos .js originales llegan al directorio de publicación ... ¿Cómo puedo hacer que el resultado de mi tarea se contabilice como "contenido" para que termine? arriba en la carpeta publicada?tarea personalizada msbuild

EDIT: pude averiguarlo mediante la adición de la etiqueta de salida dentro de mi tarea y luego crear una ItemGroup en torno a que:

<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> 

Respuesta

0

Cambiar las propiedades del archivo. Compruebe las propiedades Build Build y Copy to Output Directory para esos archivos.

2

Compilar y publicar son objetivos separados. Agregue un objetivo a su proyecto, abstraiga su minificación a su propio objetivo, luego haga que el objetivo AfterBuild y Publish dependa del objetivo de minificación. Algo como esto:

<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> 

Este fragmento, por supuesto, significa que usted tiene que tener un tipo de generación, que puede o no ser el caso. Por esa razón, es posible que deba modificar esto. ¡Espero que esto ayude!

Cuestiones relacionadas