Ho un'interfaccia, chiamiamola ILocateLogFile
, con un'implementazione standard per i server di sviluppo/beta/produzione e una che funziona solo nell'ambiente di sviluppo locale. Non riesco a pensare ad un bel modo pulito per decidere (preferibilmente al momento della compilazione, ma il runtime andrebbe bene) se sto lavorando localmente o su un server. Questa è un'applicazione WCF ospitata su IIS, se questo è importante.Come sapere se il codice è in esecuzione localmente da Visual Studio/Cassini
Il migliore che è venuta in mente è quello di utilizzare un simbolo compilatore, qualcosa di simile:
ILocateLogFile locateLogFile;
#if DEBUG
locateLogFile = new DevSandboxLogFileLocator();
#else
locateLogFile = new LogFileLocator();
#endif
Il problema è, compilare i simboli vengono fissati dalla costruzione, che io non controllo, e io voglio essere sicuro. Non c'è un modo automatico per verificare la presenza di Visual Studio? O almeno per controllare Cassini piuttosto che IIS?
Ho visto questo risolto prima controllando per la variabile nome del server in un'istruzione if altro. – RandomUs1r
Qualsiasi motivo per non utilizzare i file .config per configurare la registrazione? (probabilmente hai già un .config diverso per ogni ambiente, quindi potrebbe essere banale aggiungere anche la registrazione). –
@ RandomUs1r è un buon suggerimento, ma non posso usare 'System.Web.HttpContext' perché il mio servizio WCF non sta usando la compatibilità ASP.Net ... – McGarnagle