J'ai du mal à faire en sorte que Visual Studio se comporte comme je l'attendais. J'ai créé 2 profils de configuration. L'un a le symbole FOO défini et l'autre a le symbole BAR défini. Et je ce code:Les symboles de compilation conditionnelle ne sont pas définis
static class MyClass{
#if FOO
public static string const MyData="foo defined";
#endif
#if BAR /*yes, I know #elif would work here too.. just trying to be simple*/
public static string const MyData="bar defined";
#endif
}
, puis plus tard dans un autre fichier je
if(MyClass.MyData=="foo defined").....
Eh bien, dans ma demande, je reçois une erreur qui MyClass.MyData n'est pas défini.
Aussi, si je l'ai sur le profil FOO et tapez quelque chose comme #error test
après le #if FOO
alors il y aura une erreur de construction, mais si je l'enlève, il se construira très bien et quand je vais l'exécuter I ' J'obtiendrai une erreur de compilation indiquant que MyClass ne contient pas de définition pour MyData. En outre, il s'agit d'une application Web ASP.Net. Est-ce que quelqu'un peut m'aider à comprendre comment utiliser la compilation conditionnelle? Il agit comme si Visual Studio le compilait correctement avec les symboles de compilation, mais chaque fois que le serveur web ASP.Net l'exécute, il le recompile sans aucun symbole ... Mais cela n'a aucun sens pourquoi il le ferait ..
Editer: Peu importe si j'utilise le profil FOO ou BAR, aucun d'eux ne semble définir le symbole MyData comme ils le devraient.
EDIT2:
Ok, ce qui est important pour la reproduction !!! Créez un nouveau dossier App_Code
dans votre solution, puis ajoutez-y un fichier .cs, puis ajoutez MyClass. Cela va reproduire le bug travaillant dans un projet vide. Je l'ai en fait simplifié vers le bas juste
#if !(FOO || BAR)
#error neither foo or bar defined
#endif
Il semble que Visual Studio ne symboles de compilation conditionnelle non communiqué pour les fichiers réguliers .cs intérieur de App_Code
J'ai complètement changé ma réponse ... Vérifiez-le. –