2009-05-06 23 views

Trả lời

15

Bạn không thể, không thực sự. Những gì bạn có thể làm là xác định một số "Biểu tượng biên dịch có điều kiện", nếu bạn nhìn vào trang "Xây dựng" của các thiết lập dự án, bạn có thể đặt chúng ở đó, để bạn có thể viết #if câu lệnh để kiểm tra chúng.

Biểu tượng DEBUG được tự động tiêm (theo mặc định, điều này có thể được tắt) để gỡ lỗi xây dựng.

Vì vậy, bạn có thể viết mã như thế này

#if DEBUG 
     RunMyDEBUGRoutine(); 
#else 
     RunMyRELEASERoutine(); 
#endif 

Tuy nhiên, đừng làm điều này trừ khi bạn đã lý do chính đáng. Một ứng dụng hoạt động với hành vi khác nhau giữa các bản dựng gỡ lỗi và bản phát hành không tốt cho bất kỳ ai.

+1

Nó có thể giúp khi phát triển Windows Services (không cần phải cài đặt/gỡ lỗi dễ dàng hơn) – Scoregraphic

+0

@Scoregraphic: Tuy nhiên với hành vi hoàn toàn khác (dịch vụ so với ứng dụng dòng lệnh) !!! –

+0

Tại sao biểu thức điều kiện không tìm thấy cấu hình tùy chỉnh của tôi? Tôi có mã như thế này: #if WCFDebug/* mã của tôi */#endif - nhưng nó chỉ đơn giản là không tìm thấy nó. Tôi đã thêm cấu hình bên trong cài đặt. – FrenkyB

0

Tôi không tin rằng bạn có thể tiêm vào thời gian biên dịch vào hội đồng nhưng một cách bạn có thể đạt được là sử dụng MSBuild và thêm nó vào tệp cấu hình của ứng dụng.

Xem bài viết trên blog này về làm thế nào để tạo file cấu hình đa môi trường sử dụng MSBuild - http://adeneys.wordpress.com/2009/04/17/multi-environment-config/

Hoặc bạn có thể viết một nhiệm vụ MSBuild đó sẽ chỉnh sửa một tập tin biên soạn nhất định (C# hoặc tập tin VB) và có chạy mà trong nhiệm vụ BeforeBuild. Nó sẽ khá khó khăn vì bạn cần phải làm việc ra nơi để tiêm nó vào tập tin, nhưng miễn là bạn đã có một số loại tokenization thiết lập bạn sẽ có thể làm điều đó. Tôi cũng nghi ngờ nó sẽ là đẹp!

13

Nếu bạn dỡ tải dự án của mình (trong trình đơn nhấp chuột phải) và thêm dự án này ngay trước thẻ </Project>, thẻ này sẽ lưu tệp có cấu hình của bạn vào đó. Sau đó bạn có thể đọc lại để sử dụng trong mã của bạn.

<Target Name="BeforeBuild"> 
    <WriteLinesToFile File="$(OutputPath)\env.config" 
         Lines="$(Configuration)" Overwrite="true"> 
    </WriteLinesToFile> 
</Target> 
+0

Tôi đã sử dụng giải pháp của Vaccano. Tôi phải tự động thay đổi một số cấu hình dựa trên mỗi cấu hình xây dựng, không chỉ gỡ lỗi hoặc phát hành và giải pháp này hoạt động tốt cho tôi. Cảm ơn. – MsBugKiller

5

Có thể sử dụng các biểu tượng có điều kiện để đạt được điều này. Bạn có thể định nghĩa các biểu tượng tùy chỉnh các Thuộc tính> Xây dựng các cửa sổ thiết lập cho từng dự án và sử dụng các chỉ thị #if để kiểm tra chúng trong mã.

Ví dụ cho biết cách xác định biểu tượng UNOEURO và cách sử dụng mã đó trong mã.

UNOEURO symbol defined here

bool isUnoeuro = false; 
#if UNOEURO 
    isUnoeuro = true; 
#endif 
Các vấn đề liên quan