2011-12-14 25 views
5

Tôi cần thêm một số đăng nhập vào ứng dụng của mình và cần phải ở chế độ phát hành và tôi cần đảm bảo rằng mã đăng nhập không chạy trong sản xuất. Do đó, tôi muốn sử dụng #define và #if để đảm bảo các câu lệnh log được loại bỏ khi tôi chuyển sang sản xuất.Tôi có thể đặt chỉ thị tiền xử lý C# từ tệp trung tâm không?

Sự cố là tôi cần đăng nhập nhiều tệp và thật khó để đặt #define ở đầu mỗi tệp. Có cách nào để có một #define tập trung? Bằng cách đó tôi có thể xóa #define đơn lẻ thay vì #define từ tất cả các tệp (có nghĩa là tôi gần như chắc chắn sẽ quên một tệp).

+0

Bạn có thể tốt hơn bằng cách sử dụng tính năng tiêm phụ thuộc để sử dụng lớp trình ghi nhật ký trống trong sản xuất trong quá trình biên dịch có điều kiện. Có các phiên bản nhị phân khác nhau giữa thử nghiệm và sản xuất cuối cùng không phải là điều tốt nhất ... –

Trả lời

9

Trên dòng lệnh, sử dụng công tắc /define. Trong Visual Studio, chọn tab "Xây dựng" từ trang thuộc tính cho dự án và điền vào phần "Biểu tượng biên dịch có điều kiện".

Cân nhắc thay vì sử dụng trình biên dịch có điều kiện, thay vào đó, hãy thực hiện phương pháp ghi nhật ký của bạn các phương pháp có điều kiện. Đó là một cách thay thế dễ chịu hơn. Đó là cách Debug.Assert hoạt động; nó là một phương thức có điều kiện, vì vậy nếu biểu tượng tiền xử lý gỡ lỗi không được định nghĩa, trình biên dịch sẽ loại bỏ tất cả các cuộc gọi đến phương thức trước khi tạo mã.

Xem thêm bài viết của tôi về đề tài này:

http://ericlippert.com/2009/09/10/whats-the-difference-between-conditional-compilation-and-the-conditional-attribute/

+0

Tôi biết về Debug.Khẳng định, nhưng tôi đã không nhận ra rằng bạn có thể tự mình tạo ra những phương pháp có điều kiện. Đó là một giải pháp tốt hơn nhiều, cảm ơn! –

1

Có, điều này thường được thực hiện trong tệp xây dựng của bạn hoặc tập lệnh bạn sử dụng để tạo bản dựng của bạn. Bạn chỉ định nó làm đối số dòng lệnh cho MSBuild.

1

Để thêm vào câu trả lời của Dave, biểu tượng biên soạn có điều kiện toàn cầu cũng có thể được quy định trong Visual.

  1. Nhấp chuột phải vào dự án của bạn và vào Properties
  2. Đến tab Build

Bạn có thể chỉ định những biểu tượng mà bạn thích (DEBUG đã được bật theo mặc định cho các cấu hình Debug, do đó, điều này thực sự có thể cung cấp cho bạn những gì bạn muốn) cho cấu hình đã cho hoặc chọn "Tất cả cấu hình" ở trên cùng để chỉ định các ký hiệu nhất định cho tất cả các cấu hình.

1

Bạn đang sử dụng Visual Studio? Trong trang thuộc tính của dự án, trên tab "Xây dựng", có một hộp văn bản "Ký hiệu biên dịch có điều kiện".

1

Gọi nhật ký ở mọi nơi bạn muốn.

Xác định các phương pháp nhập khai thác gỗ api với

[Conditional ("DEBUG")] 
public void WriteDebugMessage(...) 

Xây dựng chương trình của bạn trong chế độ gỡ lỗi (trong đó, theo mặc định, định nghĩa 'DEBUG' trong VS). Những cuộc gọi này sẽ là một phần của hội đồng của bạn.

Tạo chương trình của bạn ở chế độ phát hành (hoặc - xóa biểu tượng DEBUG khỏi định nghĩa bản dựng). Các cuộc gọi này giờ đây là vô nghĩa và không hoạt động.

Có vẻ như bạn muốn gì?

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