Mam interfejs, nazwijmy go ILocateLogFile
, ze standardową implementacją dla serwerów dev/beta/production i taką, która działa tylko w lokalnym środowisku programistycznym. Wydaje mi się, że nie myślę o ładnym, czystym sposobie decydowania (najlepiej w czasie kompilacji, ale środowisko uruchomieniowe byłoby w porządku), jeśli pracuję lokalnie lub na serwerze. To jest aplikacja WCF hostowana na IIS, jeśli to ma znaczenie.Jak sprawdzić, czy kod jest uruchamiany lokalnie z Visual Studio/Cassini
Najlepszym Mam wymyślić jest użycie symbolu kompilatora, coś jak:
ILocateLogFile locateLogFile;
#if DEBUG
locateLogFile = new DevSandboxLogFileLocator();
#else
locateLogFile = new LogFileLocator();
#endif
Problem jest, kompilowania symbole gotowi przez kompilacji, która nie kontrolować, a ja chcę być pewny. Czy nie istnieje jakiś automatyczny sposób sprawdzania obecności Visual Studio? Lub przynajmniej sprawdzić dla Cassini zamiast IIS?
Widziałem to rozwiązać przed sprawdzając zmiennej nazwa serwera w razie else. – RandomUs1r
Jakikolwiek powód, aby nie używać plików .config do konfigurowania rejestrowania? (prawdopodobnie masz już inny plik .config dla każdego środowiska, więc dodanie logowania może być banalne). –
@ RandomUs1r to dobra sugestia, ale nie mogę użyć 'System.Web.HttpContext', ponieważ moja usługa WCF nie korzysta z kompatybilności ASP.Net ... – McGarnagle