2012-03-19 28 views
26

Tôi cần xây dựng giải pháp nhưng loại trừ một dự án. Tôi nên làm như thế nào? Tôi đã tìm kiếm rất nhiều về vấn đề này nhưng không có gì có thể hữu ích.Làm cách nào để loại trừ dự án khỏi xây dựng trong MSBUILD?

ItemGroup phần tăng ngoại lệ sau đây:

yếu tố không hợp lệ. Tác vụ hoặc kiểu dữ liệu không xác định.

PropertyGroup cũng tăng ngoại lệ.

Dưới đây là mẫu mã của tôi:

<project name="TI 8.1.6 build script"> 
    <ItemGroup> 
    <Solution Include="${ROOT}\Core\TI Core.sln" Exclude="${ROOT}\Utilities\DTS Indexing Service\Tdi.Origami.IndexUpdaterServiceSetup\Tdi.Origami.IndexUpdaterServiceSetup.wixproj"/> 
    </ItemGroup> 
... 
</project> 

Vì vậy, bất cứ ai có thể giúp tôi?

Trả lời

44

Bạn có thể loại trừ các dự án ở cấp giải pháp cho một cụ thể build configuration bằng Configuration Manager Dialog trong Visual Studio:

Configuration Manager Dialog

Sau đó, bạn chỉ có thể gọi msbuild vào file giải pháp xác định xây dựng cấu hình để sử dụng:

msbuild /property:Configuration=Release MySolution.sln 
+2

này không giúp :( –

+0

Điều gì đang cố gắng đạt được? –

+0

Tôi đặt thành chế độ "Gỡ lỗi" cho dự án sẽ bị loại trừ. Tất cả các dự án khác được đặt thành "Phát hành" .Trong thuộc tính ** msbuild ** tôi đã đặt Cấu hình thành Phát hành và dự án exlcuded là được xây dựng với những người khác và ngoại lệ được tăng lên. –

11

Giải pháp được đề xuất bởi Enrico là giải pháp linh hoạt nhất mà woul d làm việc luôn. Một giải pháp thay thế có thể là sử dụng tác vụ <MSBuild> trực tiếp. Điều này sẽ làm việc cho bạn nếu bạn có tất cả các bạn dự án tập tin theo thư mục cụ thể, hoặc có thể dễ dàng liệt kê tất cả các dự án bạn muốn xây dựng (tức là số dự án trong giải pháp của bạn không phải là rất lớn).

Ví dụ, tập tin msbuild này sẽ xây dựng mỗi dự án dưới thư mục hiện tại của bạn ngoại trừ cho một dự án cụ thể:

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 

    <ItemGroup> 
    <MyProjectReferences Include="**\*.*proj" /> 
    <MyProjectReferences Exclude="Utilities\DTS Indexing Service\Tdi.Origami.IndexUpdaterServiceSetup\Tdi.Origami.IndexUpdaterServiceSetup.wixproj" /> 
    </ItemGroup> 

    <Target Name="BuildAllExceptWixProject"> 
    <MSBuild Projects="@(MyProjectReferences)" Targets="Build" /> 
    </Target> 

</Project> 

Sau đó, bạn có thể xây dựng rằng việc sử dụng dòng lệnh msbuild <myproject> /t:BuildAllExceptWixProject

+3

Bạn đã đúng. Nhưng không ** ProjectReferences ** nhưng ** ProjectReference **. Và ** Bao gồm ** là thuộc tính cần thiết cho mục ** ProjectReference **, vì vậy tôi đặt ** Include/Exclude ** vào cùng một mục. Và nó hoạt động! Dự án đã được loại trừ thành công. Cảm ơn bạn!! –

+1

@LubochknAndrew, tên của nhóm có thể là bất kỳ tên phần tử XML hợp lệ nào. Nhóm 'ProjectReference' chỉ là một trong các nhóm đã được sử dụng trong các mục tiêu tiêu chuẩn của Microsoft, điều này không làm cho tên này tốt hơn bất kỳ tên nào khác mà bạn có thể nghĩ đến. Lưu ý, ví dụ trong câu trả lời của tôi không sử dụng các mục tiêu tiêu chuẩn của Microsoft. –

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