Directives du préprocesseur VB.NET
Pourquoi ne pas #IF Not DEBUG
travailler à la manière dont je m'attends à VB.NET?
#If DEBUG Then
Console.WriteLine("Debug")
#End If
#If Not DEBUG Then
Console.WriteLine("Not Debug")
#End If
#If DEBUG = False Then
Console.WriteLine("Not Debug")
#End If
' Outputs: Debug, Not Debug
Mais, à la main, jeu de const:
#Const D = True
#If D Then
Console.WriteLine("D")
#End If
#If Not D Then
Console.WriteLine("Not D")
#End If
' Outputs: D
Et, bien sûr, C# est le comportement attendu:
#if DEBUG
Console.WriteLine("Debug");
#endif
#if !DEBUG
Console.WriteLine("Not Debug");
#endif
// Outputs: Debug
source d'informationauteur Mark Brackett
Vous devez vous connecter pour publier un commentaire.
S'avère, ce n'est pas tous de VB.NET c'est cassé, juste le CodeDomProvider (qui à la fois ASP.NET et l'Extrait du Compilateur utiliser).
Donné un simple fichier source:
De la compilation avec vbc.exe version 9.0.30729.1 (.NET FX 3.5):
Qui a du sens...je n'ai pas définir de DÉBOGAGE, de sorte qu'il affiche "Pas de Débogage!".
Et, à l'aide de CodeDomProvider:
Bon, encore une fois - qui fait sens. Je n'ai pas définir de DÉBOGAGE, de sorte qu'il affiche "Pas de Débogage". Mais, si je inclure les symboles de débogage?
Hmm...je n'ai pas définir de DÉBOGAGE, mais peut-être qu'il a défini pour moi? Mais si il l'a fait, il doit avoir la définit comme "1" - parce que je ne peux pas obtenir ce comportement avec toute autre valeur. ASP.NET en utilisant le CodeDomProvider, devez le définir de la même façon.
Ressemble à la CodeDomProvider est de trébucher sur VB.NET s'stupide pseudo-opérateurs logiques.
Morale de l'histoire?
#If Not
n'est pas une bonne idée pour VB.NET.Et maintenant que la source est disponible, je peux vérifier qu'il ne fait jeu égal à 1 comme je m'y attendais: