Tôi có giao diện hay không, hãy gọi nó là ILocateLogFile
, với triển khai chuẩn cho máy chủ dev/beta/production và một máy chỉ hoạt động trong môi trường phát triển địa phương. Tôi dường như không thể nghĩ ra một cách tốt đẹp để quyết định (tốt nhất là lúc biên dịch, nhưng thời gian chạy sẽ ổn) nếu tôi đang chạy cục bộ hoặc trên một máy chủ. Đây là một ứng dụng WCF được lưu trữ trên IIS, nếu có vấn đề.Làm cách nào để biết mã có chạy cục bộ từ Visual Studio/Cassini
Điều tốt nhất tôi đã đi lên với là sử dụng một biểu tượng trình biên dịch, một cái gì đó như:
ILocateLogFile locateLogFile;
#if DEBUG
locateLogFile = new DevSandboxLogFileLocator();
#else
locateLogFile = new LogFileLocator();
#endif
Vấn đề là, biên dịch những biểu tượng được thiết lập bằng cách xây dựng, mà tôi không kiểm soát, và tôi muốn chắc chắn. Không phải là có một số cách tự động để kiểm tra sự hiện diện của Visual Studio? Hoặc ít nhất là để kiểm tra cho Cassini chứ không phải là IIS?
Tôi đã thấy điều này được giải quyết trước bằng cách kiểm tra các biến tên máy chủ trong một tuyên bố else if. – RandomUs1r
Bất kỳ lý do nào không sử dụng tệp .config để định cấu hình ghi nhật ký? (có thể bạn đã có .config khác nhau cho mỗi môi trường, vì vậy có thể là tầm thường để thêm đăng nhập quá). –
@ RandomUs1r đó là một gợi ý tốt, nhưng tôi không thể sử dụng 'System.Web.HttpContext' vì dịch vụ WCF của tôi không sử dụng tính tương thích ASP.Net ... – McGarnagle