2011-01-25 3 views
6

Tôi hava một giải pháp khá phức tạp, có chứa 10 dự án ngoài dự án thử nghiệm. Đây là mạng lưới các ứng dụng được phân phối & các dịch vụ liên lạc bằng cách sử dụng chức năng truy cập từ xa; do đó có các hội đồng tham chiếu thích hợp (& phiên bản) là rất quan trọng. Đó là lý do tại sao tôi muốn toàn bộ điều được biên soạn và schrink-gói trong ONE xây dựng.Xây dựng toàn bộ giải pháp nhưng thêm Biểu tượng biên soạn có điều kiện toàn cầu cho chỉ một dự án

Một trong các ứng dụng là một công cụ demo/phân tích chạy một tiến trình con của một ứng dụng khác - lớn hơn nhiều - ứng dụng dựa trên đầu vào của người dùng và hiển thị kết quả; Bằng cách đó, các kỹ sư có một công cụ để giúp tinh chỉnh cài đặt của họ cho "tính toán lớn". Rõ ràng tiến trình con được chứa trong lắp ráp khác, và một phần lớn trong kết quả te trình bày cho các kỹ sư được tạo ra bởi

#if ENABLE_TRACE_MATCHING 
Trace.WriteLine("Some engineering output"); 
#endif 

Vấn đề của tôi là biểu tượng Compilation có điều kiện trong các thiết lập dự án được giới hạn để lắp ráp của dự án đó, và làm không tuyên truyền trên các hội đồng được tham chiếu. Làm thế nào tôi có thể cấu hình build của tôi trong một cách mà tất cả các dự án sẽ được xây dựng mà không ENABLE_TRACE_MATCHING được xác định, ngoại trừ một debug/dự án phân tích ứng dụng nơi mà tất cả các dự án tham chiếu/cụm phải được biên soạn với ENABLE_TRACE_MATCHING được định nghĩa

Tôi cũng không thể thay thế #if ENABLE_TRACE_MATCHING bằng #if DEBUG, vì điều đó sẽ cho phép nhiều đầu ra khác nhau mà các kỹ sư của chúng tôi không biết cách xử lý.

Xin cảm ơn trước.

PS: Nếu bạn cho rằng mã của tôi có mùi thì tôi đồng ý. Ngoài ra: Phần lớn không phải mã của tôi;)

+0

tôi quên đề cập đến: Đó là tất cả C# và .NET 3.5 – user588939

Trả lời

1

Bạn cần tìm hiểu thêm về Microsoft Build, một công cụ Microsoft .NET hiện có trong bất kỳ cài đặt khung nào.

Sử dụng MSBuild bạn có thể xác định các "ký hiệu" (thuộc tính) và một loạt lệnh (mục tiêu).

Đó là bạn có thể tạo tập lệnh MSBuild nhập mục tiêu Visual Studio mặc định từ tất cả các dự án trong giải pháp của bạn và khai báo trong tập lệnh các thuộc tính này ("biểu tượng").

Thực tế, thuộc tính để đặt các biểu tượng như vậy đã tồn tại: "DefineConstants". Vì vậy, kể từ khi bạn có nó, bạn có thể có kịch bản MSBuild đó cung cấp giá trị tài sản đó, tái tuyên bố nó ở đó, vì vậy, tất cả các mục tiêu MSBuild sẽ biết về những biểu tượng này.

EDIT: Kiểm tra câu hỏi này khác quá: msbuild, defining Conditional Compilation Symbols