2010-03-09 6 views
5

J'ai une tâche MSBuild personnalisée qui prend en charge un ensemble de fichiers JavaScript, les minimise et les génère avec l'extension .min.js. Lorsque je fais une construction normale via Visual Studio, cela fonctionne parfaitement et les fichiers .min.js sont affichés dans le même répertoire que les fichiers d'origine. Lorsque j'essaie de déployer à l'aide de la fonctionnalité Publier dans Visual Studio, seuls les fichiers .js d'origine le font dans le répertoire de publication .... Comment puis-je obtenir la sortie de ma tâche comme "contenu" pour qu'elle se termine dans le dossier publié?msbuild tâche personnalisée

EDIT: j'ai pu le comprendre en ajoutant la balise de sortie dans ma tâche, puis la création d'un ItemGroup autour 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> 

Répondre

0

Modifiez les propriétés du fichier. Vérifiez les propriétés Build Action et Copy to Output Directory pour ces fichiers.

2

Construire et publier sont des cibles distinctes. Ajoutez une cible à votre projet, analysez votre minification à sa propre cible, puis faites en sorte que la cible AfterBuild et Publish dépende de la cible de minimisation. Quelque chose comme ceci:

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

Cet extrait, bien sûr, signifie que vous devez avoir une cible de construction, ce qui peut ou ne pas être le cas. Pour cette raison, vous devrez peut-être modifier cela. J'espère que cela t'aides!

Questions connexes