Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Menggunakan Kompilasi Bersyarat untuk Menyasarkan Versi Rangka Kerja .NET yang Berbeza?
Menyasarkan Berbilang Rangka Kerja .NET dengan Kompilasi Bersyarat
Kompilasi bersyarat menawarkan mekanisme yang berkuasa untuk menyesuaikan kod C# anda kepada versi .NET Framework tertentu, memastikan keserasian dan mengelakkan ralat versi khusus. Ini dicapai melalui arahan prapemproses.
Memanfaatkan Arahan Prapemproses
Arahan prapemproses membolehkan anda memasukkan atau mengecualikan blok kod secara bersyarat berdasarkan simbol yang ditentukan. Contohnya:
<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>
Perhatikan bahawa NET40
, NET35
dan NET20
tidak ditakrifkan secara automatik; anda mesti menetapkannya dengan jelas.
Mentakrifkan Simbol melalui MSBuild
Anda boleh menyuntik simbol ini menggunakan /p:DefineConstants
sifat MSBuild:
<code>/p:DefineConstants="NET40"</code>
Ini menambahkan simbol NET40
pada konfigurasi binaan projek.
Mengurus Konfigurasi Binaan
Sebagai alternatif, buat konfigurasi binaan yang berbeza dalam fail projek anda. Setiap konfigurasi boleh menentukan nilai DefineConstants
nya sendiri:
<code class="language-xml"><PropertyGroup Condition="'$(Framework)' == 'NET20'"> <DefineConstants>NET20</DefineConstants> </PropertyGroup> <PropertyGroup Condition="'$(Framework)' == 'NET35'"> <DefineConstants>NET35</DefineConstants> </PropertyGroup></code>
Tetapkan versi rangka kerja lalai dalam salah satu konfigurasi anda, contohnya:
<code class="language-xml"><PropertyGroup> <Framework>NET35</Framework> </PropertyGroup></code>
Penyusunan Semula Automatik untuk Versi Berbeza
Selepas menentukan konfigurasi binaan anda, gunakan sasaran AfterBuild
untuk menyusun semula secara automatik untuk versi rangka kerja lain:
<code class="language-xml"><Target Name="AfterBuild"> <MSBuild Projects="$(MSBuildProjectFile)" Properties="Framework=NET20" RunEachTargetSeparately="true" Condition="'$(Framework)' != 'NET20'" /> </Target></code>
Ini akan menyusun semula projek anda untuk .NET 2.0 selepas binaan awal (dengan mengandaikan .NET 3.5 ialah lalai). Setiap kompilasi akan menggunakan takrifan bersyarat yang sesuai.
Teknik Lanjutan
Kompilasi bersyarat melangkaui pernyataan using
mudah. Anda juga boleh menyertakan atau mengecualikan keseluruhan fail atau rujukan secara bersyarat berdasarkan rangka kerja sasaran, memberikan kawalan terperinci ke atas proses binaan anda.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggunakan Kompilasi Bersyarat untuk Menyasarkan Versi Rangka Kerja .NET yang Berbeza?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!