6
votes

Comment dire si le code fonctionne localement à partir de Visual Studio / Cassini

J'ai une interface, appelons-le iLocatelogfile , avec une implémentation standard pour les serveurs Dev / Beta / Professeur, et celui qui ne fonctionne que dans l'environnement de développement local. Je n'arrive pas à penser à un bon moyen propre de décider (de préférence au moment de la compilation, mais le temps d'exécution irait bien) si je cours localement ou sur un serveur. Il s'agit d'une application WCF hébergée sur IIS, si cela importe.

Le meilleur que j'ai proposé est d'utiliser un symbole compilateur, quelque chose comme: xxx

le Le problème est que Compiler les symboles sont définis par la construction, que je ne contrôle pas et que je veux être certain. N'y a-t-il pas une manière automagifique de vérifier la présence de Visual Studio? Ou au moins pour vérifier Cassini plutôt que IIS?


4 commentaires

J'ai vu cela résolu avant de vérifier la variable de nom de serveur dans une déclaration si d'autre.


Toute raison de ne pas utiliser de fichiers .config pour configurer la journalisation? (probablement que vous avez déjà différent .config pour chaque environnement, il peut donc être trivial pour ajouter une journalisation aussi).


@ Randomus1R C'est une bonne suggestion, mais je ne peux pas utiliser system.web.httpcontext car mon service WCF n'utilise pas la compatibilité ASP.NET ...


@Alexeilevenkov J'ai une raison, mais peut-être pas un cogent - nous courons localement à partir du même .config comme sur le serveur de dev.


3 Réponses :


9
votes

Deux façons que j'ai fait ceci 1 Vous pouvez vérifier le nom du processus xxx

ou mettre à jour votre fichier de configuration avec un paramètre personnalisé xxx

Que vous mettez à jour spécifiquement pour chaque environnement et avez-vous une requête d'application pour

Je ne suis pas sûr de savoir s'il existe un moyen de le déterminer au moment de la compilation, en plus de disposer d'une configuration de construction spéciale pour chaque environnement et Mettre un pragma pour chacune de ces constructions. Personnellement, je pense que ce n'est pas aussi élégant, mais cela pourrait également fonctionner.


2 commentaires

Merci, je pense que la première option est exactement ce que je recherche - bien que mon nom de processus semble être "webdev.webebserver40" plutôt que "iisiexpress".


Cela a du sens si vous utilisez la construction du serveur de développement. Vous voudrez peut-être penser à passer à IIS Express. J'ai trouvé que c'était bien plus robuste et construit à VS 2012/2010 SP1.



-2
votes

Voici le code que j'ai utilisé

If Debugger.IsAttached Then
 ' Since there is a debugger attached,
 ' assume we are running from the IDE
Else
 ' Assume we aren't running from the IDE
End If


0 commentaires

0
votes

J'ai trouvé cela ici et ça a fonctionné pour moi- Déterminer si ASP.NET Application fonctionne localement < Pré> xxx


0 commentaires