2015-02-11 17 views
6

Với cài đặt gỡ lỗi đi trong web.config, cài đặt nào bật và tắt gỡ lỗi và tương đương (nếu có) cho mục sau trong .Net 5 (dự án MVC 6) là gì?Thiết lập gỡ lỗi trong .Net 5

#define DEBUG 
// ... 
#if DEBUG 
    Console.WriteLine("Debug version"); 
#endif 
+0

Web.config không chứa #DEBUG. #DEBUG là một chỉ thị trình biên dịch, không phải là cài đặt web.config. Bạn có thể thuật lại câu hỏi của mình không? – Igor

+0

@Igor - Không có cấu hình web trong các dự án vNext –

+0

Tôi đã sửa chữa, có thể xác định trong phiên bản 4.5 của .NET trong web.config trong thuộc tính trình biên dịch thuộc tính compilerOptions. – Igor

Trả lời

4

CẬP NHẬT

Kể từ khi viết câu trả lời này tôi đã học được rằng cách mới trong Net Core là sử dụng Environment Variables. Bạn có thể tìm thấy một bài viết here và biết thêm thông tin here.

Bạn có thể đặt biến môi trường trong thuộc tính dự án của mình trong quá trình gỡ lỗi. Mã này sẽ như thế nào sau khi sử dụng DI để tiêm IHostingEnvironment

if (env.IsDevelopment()) 
{ 
    //... 
} 

END CẬP NHẬT

Câu trả lời bởi @user2095880 là hợp lệ và làm việc. Tuy nhiên, bạn có thể muốn một giải pháp mà bạn không cần phải thay đổi project.json để đi đến sản xuất.

#if DEBUG 
      app.Run(async (context) => 
      { 
       await context.Response.WriteAsync("Hello DEBUG CODE!"); 
      }); 
#else 
      app.Run(async (context) => 
      { 
       await context.Response.WriteAsync("Hello LIVE CODE!"); 
      }); 
#endif 

Điều này sẽ kiểm tra cấu hình giải pháp của bạn (vẫn hoạt động trong .Net 5) nếu bạn ở trong Debug hoặc một mục khác. Nếu cấu hình giải pháp của bạn được đặt thành Gỡ lỗi, tập hợp mã đầu tiên sẽ chạy. Nếu bạn chọn Release (hoặc bất kỳ thứ gì khác), phần mã thứ hai sẽ chạy. Xem hình ảnh bên dưới để trình đơn thả xuống thay đổi từ Gỡ lỗi thành Phát hành.

enter image description here

+0

Sự khác biệt ở đây là các chỉ thị tiền xử lý đang xác định môi trường đích tại biên dịch- thời gian. Giải pháp liên quan đến 'IHostingEnvironment' xác định môi trường trong thời gian chạy. Cả hai đều là phương pháp hợp lệ, nhưng đối với các vấn đề khác nhau. – Matt

7

Trong tệp json dự án của bạn, bạn cần phải thêm:

"frameworks": { 
    "aspnet50": { 
     "compilationOptions": { 
      "define": [ "WHATEVER_YOU_WANT_TO_CALL_IT" ] 
     } 
    }, 
    "aspnetcore50": { 
     "compilationOptions": { 
      "define": [ "WHATEVER_YOU_WANT_TO_CALL_IT" ] 
     } 
    } 

sau đó trong mã của bạn, bạn sử dụng nó như sau:

#if WHATEVER_YOU_WANT_TO_CALL_IT 
    .. your code.. 
#endif 

nơi WHATEVER_YOU_WANT_TO_CALL_IT thể = DEBUG hoặc bất cứ điều gì khác .

+0

Có thể có một khung công tác hai cấu hình khác nhau không? – dotnetstep

+0

Nếu tôi hiểu chính xác, tôi không hiểu tại sao không, nhưng tôi chưa thử nghiệm nó. –

+0

không hoạt động trong lõi asp.net 1.0 – Mostafa

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