با عرض سلام و وقت بخیر خدمت کاربران سایت پی وی لرن ، با یکی دیگر از جلسات دوره کامل آموزش asp.net core در خدمت شما دوستان هستیم در بخش قبل با مبحث اشتراک گذاری کدها را شروع کردیم و گفتیم که به صورت عادی نمی توان کد ها را در framework های مختلف اجراء کرد ، اما در ادامه روش هایی را معرفی کردیم که با کمک آنها بتوان کدها را در framework های مختلف اجراء کرد ، یکی از این روش ها استفاده از چهارچوب های چندگانه (Multiple Frameworks) بود که در این بخش آن را شرح خواهیم داد.
ما می توانیم برنامه NET Core. را ایجاد کنیم و چارچوب چند هدفه را برای آن پیکربندی کنیم تا بتواند با تمام چارچوب های هدف پیکربندی شده اجرا شود. برای مثال، برنامه کنسول NET Core 2.0 ایجاد می کنیم که می تواند در چهارچوب سنتی ( NET framework.) نیز اجرا شود.
اولین قدم این است که یک پروژه جدید در ویژوال استودیو ۲۰۱۷ با کلیک بر روی File-> New Project ایجاد کنید. پنجره جدید پروژه باز خواهد شد که در زیر نشان داده شده است.
در پنجره New Project ، گزینه Console Application (.NET Core) را انتخاب کنید، نام مناسب را ارائه کرده و روی OK کلیک کنید. پروژه کنسول جدید به صورت زیر نشان داده می شود.
اکنون می توانیم با ویرایش فایل csproj. چندین چارچوب (multiple frameworks) را پیکربندی کنیم. بنابراین، بر روی پروژه راست کلیک کرده در solution explorer و “Edit <project-name>.csproj” را انتخاب کنید که در زیر نشان داده شده است.
اکنون فایل csproj. را مشاهده می کنید که به شکل زیر است:
1 2 3 4 5 6 7 8 | <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>netcoreapp2.0</TargetFramework> </PropertyGroup> </Project> |
همانطور که می بینید ،< TargetFramework> روی netcoreapp2.0 تنظیم شده است . این بدان معنی است که در حال حاضر این برنامه می تواند بر روی چارچوب NET Core 2.0. اجرا شود. ما می توانیم چندین مورد دیگر را در این قسمت قرار داده تا بتوانیم چندین چارچوب را هدف قرار دهیم.
در اینجا، ما میخواهیم برنامه مان دو چهارچوب دیگر NET Framework 4.0. و ۴٫۶ را پشتیبانی کند ، بنابراین net40 و net46 را به ترتیب زیر اضافه می کنیم . برای framework های بیشتر اینجا را کلیک کنید.
البته بخاطر داشته باشید ابتدا <TargetFramework> را به <TargetFrameworks> تغییر دهید.
1 2 3 4 5 6 7 8 | <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFrameworks>netcoreapp2.0;net45;net46</TargetFrameworks> </PropertyGroup> </Project> |
به محض اینکه فایل csproj. بالا را ذخیره می کنید، ویژوال استودیو مراجع مربوط به NET 4.5. و NET 4.6. را به قسمت وابستگی ها (Dependencies) مانند زیر اضافه می کند.
حالا فایل program.cs را باز کنید و کدهای مخصوص framework را همانند زیر وارد کنید:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | using System; namespace MultiFrameworkConsole { public class Program { public static void Main(string[] args) { #if NET40 Console.WriteLine("Target framework: .NET Framework 4.0"); #elif NET45 Console.WriteLine("Target framework: .NET Framework 4.5"); #else Console.WriteLine("Target framework: .NET Core 2.0"); #endif Console.ReadKey(); } } } |
با اجرای کدهای بالا پنجره کنسل باز شده و نشان می دهد در حال حاضر با چه framework کار می کنید.
همین طور برای تغییر framework ، بر روی منوی کشویی Run (همانند زیر) کلیک کنید و یک framework را انتخاب کنید:
حالا اگر برنامه را اجرا کنید ، خروجی زیر را مشاهده خواهید کرد.
گاهی اوقات شما ممکن است نیاز به مراجع خاص برای یک framework خاص داشته باشید. به عنوان مثال، NET Core 2.0. در حال حاضر شامل مرجع System.Net است که در NET 4.0 و ۴٫۵ گنجانده نشده است. بنابراین، ما باید آن را در فایل csproj. همانند زیر وارد کنیم.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFrameworks>netcoreapp2.0;net45;net46</TargetFrameworks> </PropertyGroup> <ItemGroup Condition=" '$(TargetFramework)' == 'net40' "> <Reference Include="System.Net" /> </ItemGroup> <ItemGroup Condition=" '$(TargetFramework)' == 'net45' "> <Reference Include="System.Net" /> </ItemGroup> </Project> |
حالا مرجع System.Net به دات نت ۴٫۰ و ۴٫۵ افزوده شده و کدهای مربوط به System.Net برای همه framework ها اجراء خواهد شد.
فردین
به نظرم قسمت middleware و service ها نیاز به تکمیل و مثال های بیشتر دارد