2010-01-03 8 views
19

Ich habe mehrere Klassen in einem Projekt, die nur in bestimmten Builds der Anwendung sein müssen, die derzeit nicht für die Freigabe oder das Debug bereit sind.Wie setze ich projektweit #define in C#

Um diese Klassen vor einer Nutzung zu verhindern, ich um sie herum festlegen möchten diese:

#if USE_MYCLASS 
// Code here... 
#endif 

, ich weiß nicht, wie die Einrichtung ein Projekt breit #define Leider.

Gibt es in Visual Studio eine Funktionalität, um projektweite Definitionen festzulegen.

Wenn es, obwohl ich es jetzt nicht benötige, gibt es eine Funktionalität, um lösungsweite Definitionen zu setzen?

Wenn es keine Funktionalität für solche gibt (da C# keine Include-Dateien enthält, nehme ich an, dass es möglich ist), gibt es eine Methode oder ein Plugin, um diese Funktionalität ohne den Befehlszeilencompiler und/D zu verwenden?

Antwort

31

Sie können das in den Projekteigenschaften tun, aber nicht im Quellcode.

Projekteigenschaften => Erstellen => Bedingter Kompilierung Symbole

Sie können festlegen, je nachdem, welche Symbole Sie brauchen (Raum begrenzt, aber IIRC ist recht nachsichtig). Beachten Sie, dass DEBUG und TRACE auch mit einem Kontrollkästchen aktiviert werden können.

Ich habe einige Projekte mit mehreren "Release" Konfigurationen erstellen, mit verschiedenen Symbolen in jeder (für den Aufbau 2.0 vs 3.0 vs 3.5 Versionen - <DefineConstants>here sehen)

+1

Direkt vor meinem Gesicht! Ich wusste nie, dass es das ist oder wie man es benutzt, danke! –

+0

Vielen Dank! Es war auch direkt vor meinem Gesicht! – Xonatron

+0

"Sie können das in den Projekteigenschaften tun, aber nicht im Quellcode." Das ist eigentlich ziemlich unangenehme Einschränkung. In der Lage zu sein, dies in Code zu tun, ist aus Gründen der Bequemlichkeit und Sichtbarkeit wichtig. –

Verwandte Themen