Ramai pembangun menghadapi senario di mana mereka perlu menyokong berbilang versi rangka kerja .NET semasa menggunakan ciri yang diperkenalkan dalam versi kemudian. Satu contoh biasa ialah menggunakan kaedah sambungan, yang telah diperkenalkan dalam .NET 3.0. Walau bagaimanapun, jika anda ingin menggunakan kaedah sambungan dalam projek yang menyasarkan .NET 2.0, anda perlu mentakrifkan kelas ExtensionAttribute, yang boleh membawa kepada konflik apabila menyasarkan versi rangka kerja yang lebih tinggi.
Persoalannya timbul: adakah terdapat cara untuk memasukkan kelas ExtensionAttribute secara bersyarat hanya apabila menyusun untuk .NET 2.0? Jawapannya terletak pada penggunaan arahan kompilasi bersyarat.
Visual Studio menyediakan arahan kompilasi bersyarat yang membolehkan anda memasukkan atau mengecualikan blok kod berdasarkan simbol prapemproses. Sifat TargetFrameworkVersion ialah salah satu simbol prapemproses sedemikian yang menunjukkan versi rangka kerja sasaran.
Untuk menggunakan arahan kompilasi bersyarat, anda boleh menambah elemen DefineConstants pada fail .csproj projek anda selepas DefineConstants sedia ada elemen. Contohnya:
<DefineConstants> <DefineConstants Condition=" '$(TargetFrameworkVersion)' == 'v4.0' ">RUNNING_ON_4</DefineConstants> <DefineConstants Condition=" '$(TargetFrameworkVersion)' != 'v4.0' ">NOT_RUNNING_ON_4</DefineConstants> </DefineConstants>
Kod di atas mentakrifkan dua pemalar: RUNNING_ON_4 apabila menyasarkan .NET 4.0 dan NOT_RUNNING_ON_4 sebaliknya.
Setelah pemalar ditentukan, anda boleh menyertakan atau mengecualikan blok kod secara bersyarat menggunakan #if, #elseif dan #arahan lain. Contohnya:
class Program { static void Main(string[] args) { #if RUNNING_ON_4 Console.WriteLine("RUNNING_ON_4 was set"); #endif #if NOT_RUNNING_ON_4 Console.WriteLine("NOT_RUNNING_ON_4 was set"); #endif
Kod ini akan mencetak "RUNNING_ON_4 telah ditetapkan" apabila menyusun untuk .NET 4.0 dan "NOT_RUNNING_ON_4 telah ditetapkan" untuk mana-mana versi rangka kerja lain.
Dengan menggunakan arahan kompilasi bersyarat dan menentukan pemalar berdasarkan Simbol prapemproses TargetFrameworkVersion, anda boleh menyertakan blok kod secara selektif bergantung pada versi rangka kerja sasaran. Ini membolehkan anda menyokong berbilang versi rangka kerja .NET tanpa menghadapi ralat binaan atau amaran.
Atas ialah kandungan terperinci Bagaimana untuk Mengesan Versi Rangka Kerja .NET Sasaran pada Masa Kompilasi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!