2010-03-09 30 views
5

Tôi có một nhiệm vụ MSBuild tùy chỉnh trong một tập hợp các tệp JavaScript, thu nhỏ chúng và xuất chúng ra, với phần mở rộng .min.js. Khi tôi thực hiện một xây dựng thông thường thông qua Visual Studio, nó hoạt động hoàn hảo và các tệp .min.js được xuất ra cùng thư mục với các tệp gốc. Khi tôi cố gắng triển khai sử dụng tính năng Xuất bản trong Visual Studio, chỉ các tệp .js ban đầu mới đưa nó vào thư mục xuất bản .... Làm cách nào để có được kết quả của nhiệm vụ được tính là "nội dung" để nó kết thúc trong thư mục đã xuất bản?Tác vụ tùy chỉnh msbuild

EDIT: tôi đã có thể hình dung nó ra bằng cách thêm thẻ Output bên trong nhiệm vụ của tôi và sau đó tạo ra một ItemGroup xung quanh rằng:

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

Trả lời

0

Thay đổi các thuộc tính tập tin. Kiểm tra các thuộc tính Build Action và Copy to Output Directory cho các tệp đó.

2

Tạo và xuất bản là các mục tiêu riêng biệt. Thêm mục tiêu vào dự án của bạn, trừu tượng hóa việc rút gọn của bạn thành mục tiêu riêng của nó, sau đó làm cho mục tiêu Sau khi Xây dựng và Xuất bản phụ thuộc vào mục tiêu rút gọn. Một cái gì đó như thế này:

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

Đoạn mã này, có nghĩa là bạn phải có mục tiêu xây dựng, điều này có thể xảy ra. Vì lý do đó bạn có thể cần phải sửa đổi điều này. Hi vọng điêu nay co ich!

Các vấn đề liên quan