2012-12-07 22 views
8

Tôi muốn xây dựng cùng một dự án hai lần trong cùng một cấu hình giải pháp, thay đổi một số cờ #define để chuyển đổi các tính năng. Cả hai tệp nhị phân sẽ được triển khai với các tên khác nhau.Tôi có thể xây dựng nhiều cấu hình của một dự án trong một cấu hình giải pháp không?

Các giải pháp mà tôi biết có thể làm việc:

  1. Thêm cấu hình giải pháp - Nhưng sau đó tôi sẽ cần phải xây dựng các giải pháp hai lần, mà tôi muốn tránh. Cả hai cấu hình dự án sẽ luôn được xây dựng.

  2. Sao chép dự án - Nhưng sau đó tôi có chi phí duy trì một dự án mới khi tôi chỉ muốn duy trì một cấu hình khác.

  3. Tạo hàng loạt - Tôi tránh sử dụng tạo hàng loạt khi tôi sử dụng cả devenv để phát triển cục bộ và msbuild để tích hợp liên tục.

Bất kỳ ý tưởng hoặc đề xuất nào khác?

Trả lời

5

Chỉ cần tìm ra cách để làm những gì bạn yêu cầu. Tạo một tệp msbuild (tôi đặt tên là mine multiple.proj) và thêm tập lệnh bên dưới.

<?xml version="1.0" encoding="utf-8"?> 
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <Choose> 
    <When Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'"> 
     <ItemGroup> 
     <ProjectToBuild Include="$(MSBuildProjectName).csproj"> 
      <Properties>Configuration=Release</Properties> 
     </ProjectToBuild> 
     </ItemGroup> 
    </When> 
    </Choose> 
    <Target Name="BeforeBuild"> 
    <Message Text="Building configuration $(Configuration)..." /> 
    </Target> 
    <Target Name="AfterBuild"> 
    <MSBuild Projects="@(ProjectToBuild)"/> 
    </Target> 
</Project> 

</type> 
</this> 

nhập kịch bản về dự án của bạn (csproj hoặc vbproj):

<Import Project="..\multiple.proj" /> 

kịch bản này cho msbuild để xây dựng lại projec của bạn t với cấu hình khác dưới dạng sự kiện AfterBuild. Tôi đã sử dụng Debug/Release để tạo ví dụ, nhưng bạn có thể dễ dàng thay đổi tập lệnh để hỗ trợ các cấu hình khác hoặc đưa ra quyết định xây dựng lại dựa trên các biến khác.

Hãy cẩn thận vì bạn đang chạy hai bản dựng cùng một lúc, do đó, việc tạo lỗi có thể khó hiểu hơn.

Hy vọng điều này sẽ hữu ích.

+0

Điều này trông giống như một cách tiếp cận tốt đẹp - tôi sẽ phải cung cấp cho nó một spin. –