Isolieren, Mono-spezifischen code
Ich Spiele mit dem hinzufügen von Gtk# GUI für Windows.Forms-Anwendung. Ich brauche einen Weg zu isolieren, Mono-spezifischen code in Program.cs
da möchte ich vermeiden, die Schaffung einer separaten .sln/.csproj. In C/C++/Objective-C-Projekte, das ich tun würde, etwas ähnliches zu #ifdef __APPLE__
oder #ifdef _WIN32
.
C# zu haben scheint, die #if
Befehl.
Was ist die typische Art und Weise zu isolieren, Mono-spezifischen code oder Visual Studio-code?
- Verwenden Sie bitte nicht #wenn, überprüfen Sie diese stattdessen auf, wie man die tragbare Baugruppen: stackoverflow.com/questions/721161/...
- der OP will einen compile-Zeit die Entscheidung, kein run-time-Entscheidung.
#if
und[ custom attributes ]
sind der einzige Weg.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Definieren Sie ein symbol mit
#define
und check gegen ihn, mit#if
und#else
.Können Sie auch das symbol, um den compiler mit den
/define
compiler-option.Siehe die vollständige Liste der C# - Präprozessor-Direktiven hier.
Laut diese SO beantworten, ist der mono-compiler definiert ein
__MonoCS__
symbol, also Folgendes funktionieren würde:Ist die empfohlene Methode, dass die Mono - "Portierung auf Windows" - Leitfaden, der detailliert in diese Antwort von @Mystic, ist:
Diese, natürlich, ist ein Laufzeit-check im Vergleich die compile-Zeit Prüfungen vor, so kann nicht für Ihren konkreten Fall.
__MonoCS__
.Type.GetType()
route, erwähnt in dieser Antwort. Danke!#if __MonoCS__
es ist. Nochmals vielen Dank!