2009-11-23 6 views
46

Tôi có một dự án bổ sung thêm khả năng mở rộng cho một ứng dụng khác thông qua API của họ. Tuy nhiên, tôi muốn có thể sử dụng cùng một dự án cho nhiều phiên bản ứng dụng của họ, bởi vì hầu hết mã đều giống nhau.Có cách nào để chỉ định các tham chiếu lắp ráp dựa trên cấu hình xây dựng trong Visual Studio không?

Tuy nhiên, mỗi phiên bản của ứng dụng yêu cầu tham chiếu đến phiên bản phù hợp cho phiên bản phần mềm đó. Họ tải hội đồng của họ vào GAC, vì vậy ngay cả khi tôi có thể chỉ định phiên bản của hội đồng để sử dụng dựa trên cấu hình xây dựng tôi sẽ ổn. Có cách nào để làm điều này từ bên trong của VS hoặc tôi cần một công cụ xây dựng bên ngoài?

Trả lời

54

Có cách để thực hiện việc này, nhưng bạn sẽ phải chỉnh sửa thủ công các tệp dự án của mình. Các tệp dự án có thể có thuộc tính Condition được áp dụng cho chúng trong nhiều phần tử, bao gồm cả thuộc tính để tham chiếu.

Bạn có thể thêm các tài liệu tham khảo của bạn để xác định khi tham khảo nên được sử dụng:

<Reference Include="Product, Version=1.0.0.0" Condition="'$(Configuration)'=='V1'"> 
</Reference> 
<Reference Include="Product, Version=2.0.0.0" Condition="'$(Configuration)'=='V2'"> 
</Reference> 
<Reference Include="Product, Version=3.0.0.0" Condition="'$(Configuration)'=='V3'"> 
</Reference> 

Bạn sau đó xác định một vài xây dựng cấu hình (V1, V2, V3) và mỗi tài liệu tham khảo sẽ chỉ được đưa vào có liên quan đã chọn cấu hình xây dựng.

Kết hợp điều này với các biểu tượng biên dịch có điều kiện và các câu lệnh #if trong mã của bạn và bạn sẽ có thể thực hiện những gì bạn muốn.

Một điều cần cẩn thận nếu bạn làm điều này là dễ dàng để Visual Studio loại bỏ các thuộc tính có điều kiện khỏi tệp dự án.

+0

Điều này làm việc hoàn hảo, rất nhiều kudo. Ngay cả Visual Studio cũng phát song song miễn là tôi không chơi với các tham chiếu đó, kể cả Intellisense chức năng! – snicker

+7

Tôi đã sử dụng phương pháp tương tự để tạo tham chiếu cụ thể về cấu hình cho các phiên bản Gỡ lỗi/Phát hành của tham chiếu. Tôi chỉ vào phiên bản phát hành khi tôi thêm tham chiếu, và sau đó trong Notepad, thay thế 'Release' trong đường dẫn Gợi ý bằng' $ (Configuration) ', và thì đấy - tham chiếu cập nhật tự động đến đúng cấu hình đích! – awe

+3

@awe: Việc đặt thuộc tính 'Điều kiện' trên hầu hết các phần tử trong tệp MSBuild là hợp lệ. – adrianbanks

9
<Reference Include="log4net, Version=1.2.11.0, Culture=neutral, processorArchitecture=MSIL"> 
    <SpecificVersion>False</SpecificVersion> 
    <HintPath>..\SharedLibs\log4net\$(Platform)\$(Configuration)\log4net.dll</HintPath> 
</Reference> 

Bạn có thể thay thế con đường gợi ý với các thuộc tính:

$ (Cấu hình) tương đương với Thả/Debug hoặc bất cứ điều gì khác cấu hình mà bạn có. $ (Platform) là tương đương với x86/x64/Bất kỳ CPU

Nếu cấu hình của bạn bao gồm Bất kỳ CPU sau đó bạn sẽ cần phải đặt dấu nháy đơn khoảng $ (Configuration)

Cũng đề cập đến các tùy chọn điều kiện tham chiếu bởi adrianbanks

+0

Cảm ơn điều này đã làm việc cho tôi, trong khi giải pháp @adrianbanks 'sẽ không giải quyết các gói khi cố gắng xây dựng – HostMyBus