Targeting mehrerer .NET Frameworks mit bedingter Kompilierung
Die bedingte Kompilierung bietet einen leistungsstarken Mechanismus zum Anpassen Ihres C#-Codes an bestimmte .NET Framework-Versionen, um Kompatibilität sicherzustellen und versionspezifische Fehler zu vermeiden. Dies wird durch Präprozessoranweisungen erreicht.
Präprozessoranweisungen nutzen
Präprozessoranweisungen ermöglichen es Ihnen, Codeblöcke basierend auf definierten Symbolen bedingt einzuschließen oder auszuschließen. Zum Beispiel:
<code class="language-csharp">#if NET40 using FooXX = Foo40; #elif NET35 using FooXX = Foo35; #else using FooXX = Foo20; // Default if NET40 and NET35 aren't defined #endif</code>
Beachten Sie, dass NET40
, NET35
und NET20
nicht automatisch definiert werden; Sie müssen sie explizit festlegen.
Symbole über MSBuild definieren
Sie können diese Symbole mithilfe der /p:DefineConstants
MSBuild-Eigenschaft einfügen:
<code>/p:DefineConstants="NET40"</code>
Dadurch wird das Symbol NET40
zur Build-Konfiguration des Projekts hinzugefügt.
Build-Konfigurationen verwalten
Alternativ können Sie in Ihrer Projektdatei unterschiedliche Build-Konfigurationen erstellen. Jede Konfiguration kann ihren eigenen DefineConstants
-Wert definieren:
<code class="language-xml"><PropertyGroup Condition="'$(Framework)' == 'NET20'"> <DefineConstants>NET20</DefineConstants> </PropertyGroup> <PropertyGroup Condition="'$(Framework)' == 'NET35'"> <DefineConstants>NET35</DefineConstants> </PropertyGroup></code>
Legen Sie in einer Ihrer Konfigurationen eine Standard-Framework-Version fest, zum Beispiel:
<code class="language-xml"><PropertyGroup> <Framework>NET35</Framework> </PropertyGroup></code>
Automatisierte Neukompilierung für verschiedene Versionen
Nachdem Sie Ihre Build-Konfigurationen definiert haben, verwenden Sie ein AfterBuild
-Ziel, um für andere Framework-Versionen automatisch neu zu kompilieren:
<code class="language-xml"><Target Name="AfterBuild"> <MSBuild Projects="$(MSBuildProjectFile)" Properties="Framework=NET20" RunEachTargetSeparately="true" Condition="'$(Framework)' != 'NET20'" /> </Target></code>
Dadurch wird Ihr Projekt nach dem ersten Build für .NET 2.0 neu kompiliert (vorausgesetzt, .NET 3.5 ist die Standardeinstellung). Bei jeder Kompilierung werden die entsprechenden bedingten Definitionen verwendet.
Fortgeschrittene Techniken
Bedingte Kompilierung geht über einfache using
-Anweisungen hinaus. Sie können auch ganze Dateien oder Referenzen basierend auf dem Ziel-Framework bedingt einschließen oder ausschließen und so eine differenzierte Kontrolle über Ihren Build-Prozess ermöglichen.
Das obige ist der detaillierte Inhalt vonWie kann ich die bedingte Kompilierung verwenden, um auf verschiedene .NET Framework-Versionen abzuzielen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!