2010-04-23 7 views
1

Est-il possible en C# de définir une condition telle que si la condition est vraie - compiler un fichier; Si la condition est fausse - compiler un autre fichier?# inclure en C# (compilation conditionnelle)

Un peu comme

#ifdef DEBUG 
#include Class1.cs 
#else 
#include Class2.cs 
#endif 

Ou peut-être mettre en place dans les propriétés du projet.

+0

Pourquoi avez-vous besoin de faire cela? – RCIX

Répondre

6

Non, ce n'est pas le cas.

Toutefois, vous pouvez envelopper les deux fichiers entiers dans des blocs #if.

Vous pouvez également regarder le [Conditional] attribute.

+2

N'oubliez pas non plus que les classes partielles et les méthodes partielles peuvent être extrêmement utiles dans de tels cas. –

0

Heureusement non, pas dans le préprocesseur comme ça. Vous pouvez cependant exclure l'implémentation d'un fichier entier dans le fichier lui-même. Ou vous pouvez configurer un processus de construction avec MSBuild ou nAnt pour changer nos fichiers.

2

Je ne le recommanderais pas. Je n'aime pas l'idée de Debug and Release ayant un code tellement différent que vous devez avoir deux fichiers totalement séparés pour comprendre les différences. #if DEBUGdu tout est une odeur de code assez grand OMI ...

Cependant, vous pourrait faire comme ceci:

// Class1.cs 
#if DEBUG 

... 

#endif 

.

// Class2.cs 
#if !DEBUG 

... 

#endif 
1

En C#, nous n'utilisons pas l'inclusion d'un fichier, mais vous pouvez utiliser des méthodes conditionnelles. Par exemple, si je développe un jeu, j'utilise une base de code partagée pour ma classe d'entrée, mais je veux avoir une méthode appelée si je suis sur une Xbox, et une méthode différente est appelée si Je suis sur un Zune. Ca va toujours retourner la même classe de données d'entrée, mais ça va prendre un chemin très différent pour l'obtenir.

Vous en apprendrez plus sur les méthodes conditionnelles ici: http://msdn.microsoft.com/en-us/library/aa288458(v=VS.71).aspx

Questions connexes