2010-03-09 23 views
5

Belirli bir MSBuild görevim var, bir dizi JavaScript dosyası alır, bunları küçültür ve .min.js uzantısı ile çıkarır. Visual Studio ile normal bir yapı yaptığımda, mükemmel çalışır ve .min.js dosyaları özgün dosyalar ile aynı dizine verilir. Visual Studio'da Yayınla özelliğini kullanarak dağıtmaya çalıştığımda, yalnızca orijinal .js dosyaları onu yayımlama dizinine dönüştürür .... Görevimin çıktısını nasıl sonuçlandırılır, böylece "içerik" olarak sayılır. yayınlanan klasörde mi?msbuild özel görev

DÜZENLEME: Bunun etrafında bir ItemGroup oluşturarak sonra benim görev içinde Çıktı etiketi ekleyerek ve bunu anlamaya başardı:

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

cevap

0

Değişim dosya özellikleri. Bu dosyalar için Oluştur eylemi ve Çıkış Dizini özelliklerine bakın.

2

Yapı ve Yayınlama ayrı hedeflerdir. Projenize bir hedef ekleyin, kendi hedefiniz için minification'nizi soyutlayın, sonra AfterBuild ve Publish hedefinin minification hedefine bağlı olmasını sağlayın. Böyle bir şey:

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

Bu parçacık, elbette, sizin veya durum olmayabilir bir yapı hedefi, olması anlamına gelir. Bu nedenle, bunu değiştirmeniz gerekebilir. Bu yardımcı olur umarım!