مقدمه ای بر برنامه نویسی همزمان
What is concurrent programing? Simply described, it’s when you are doing more than one thing at the same time. Not to be confused with parallelism, concurrency is when multiple sequences of operations are run in overlapping periods of time. In the realm of programming, concurrency is a pretty complex subject. Dealing with constructs such as threads and locks and avoiding issues like race conditions and deadlocks can be quite cumbersome, making concurrent programs difficult to write. Through concurrency, programs can be designed as independent processes working together in a specific composition. Such a structure may or may not be made parallel; however, achieving such a structure in your program offers numerous advantages.
نگاهی به ویژگیهای احتمالی C# 9.0
dotnet 8 منتشر شد
We are happy to announce the availability of .NET 8, the latest LTS version of one of the world’s leading development platforms, starting today. .NET 8 delivers thousands of performance, stability, and security improvements, as well as platform and tooling enhancements that help increase developer productivity and speed of innovation
In this article, we'll walk you through updating an existing ASP.NET Core 1.x project to ASP.NET Core 2.0. Migrating your application to ASP.NET Core 2.0 enables you to take advantage of many new features and performance improvements.
- آخرین نگارش NET 5 SDK. را از اینجا دریافت و نصب کنید (حتما SDK باشد و نه runtime).
- اگر میخواهید با ویژوال استودیو کار کنید، نیاز است حداقل نگارش 16.7 یا بالاتر را نصب کرده باشید. به همین جهت پیش از ادامهی بحث، از منوی Help، گزینهی Check For Updates را انتخاب کرده و حتما آخرین به روز رسانیهای موجود را نصب کنید. بنابراین برای کار با C# 9.0 توسط VS، حتما باید آخرین نگارش 2019 آن، به همراه تمام به روز رسانیهای ممکن بر روی سیستم شما نصب باشند؛ در غیراینصورت امکان کار با آنرا حداقل توسط VS نخواهید داشت.
- در زمان نگارش این مطلب چون هنوز نگارش نهایی NET 5 SDK. ارائه نشدهاست، نیاز است به منوی Tools در ویژوال استودیو مراجعه کرده و با انتخاب «Preview Features» آن، گزینهی «Use previews of the .NET Core SDK» را فعال کنید. پس از آن، یکبار هم نیاز است VS را بسته و راه اندازی مجدد نمائید.
پس از نصب پیشنیازهای لازم، اکنون فایل csproj را به صورت زیر ویرایش کنید:
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>net5.0</TargetFramework> <LangVersion>9.0</LangVersion> </PropertyGroup> </Project>
تنظیمات مورد نیاز C# 9.0 در پروژههای کتابخانهای
در این نوع پروژهها، علاوه بر نصب پیشنیازهای یاد شده، نیاز است TargetFramework را به حداقل netstandard2.1 تنظیم کرد (و یا حتی net5.0 هم در اینجا کار میکند):
<TargetFramework>netstandard2.1</TargetFramework> <LangVersion>9</LangVersion>
تنظیمات مورد نیاز C# 9.0 در VSCode
برای کار با VSCode، تنها کافی است آخرین نگارش SDK و آخرین نگارش افزونهی #C آنرا نصب کنید و TargetFramework و LangVersion را همانطور که عنوان شد، تنظیم نمائید. این روش سادهترین و کم حجمترین روش کار با C# 9.0 است.
تنظیمات مورد نیاز C# 9.0 در Rider
اگر میخواهید برای کار با C# 9.0 از محصولات Jetbrains استفاده کنید، نیاز است حداقل نگارش 2020.3 آنها را نصب کنید که در این زمان هنوز در مرحلهی پیشنمایش (ReSharper 2020.3 EAP or Rider 2020.3 EAP) به سر میبرند.
من از چه روشی استفاده میکنم؟!
VS کامل بر روی سیستم من نصب نیست؛ هیچ نگارشی از آن! عمدهی کارهای من توسط VS Code و افزونهی #C آن انجام میشوند و هر از چندگاهی، یکبار هم توسط Rider چون به همراه ReSharper توکار است، کنترل کیفیت میشوند (در حد بررسی گزارشهای ReSharper آن). البته افزونهی Roslynator برای VS Code هم موجود است و بسیاری از قابلیتهای ReSharper را در VSCode نیز مهیا میکند.
NET 7 Preview 6. منتشر شد
معرفی AnalysisLevel در کامپایلر C# 9.0 و .NET 5.0 SDK
سالها است که تیم کامپایلر #C قصد داشتهاست تا اخطارهای بیشتری را به توسعه دهندگان نمایش دهد؛ اما چون ممکن بود در حالت تنظیم پروژه جهت تبدیل اخطارها به خطا، اینکار به عملی ناخوشایند تبدیل شود، آنرا انجام نداده بودند. با ارائهی NET 5.، گزینهی جدیدی به نام AnalysisLevel، به تنظیمات کامپایلر C# 9.0 اضافه شدهاست که توسط آن میتوان سطوح نمایش خطاها و اخطارهای ارائه شده را تنظیم کرد. حالت پیشفرض آن برای پروژههای مبتنی بر net5.0، به عدد 5 تنظیم شدهاست و حتی این مورد را برای سایر SDKها نیز میتوان تنظیم کرد:
Target Framework Default for AnalysisLevel net5.0 5 netcoreapp3.1 or lower 4 netstandard2.1 or lower 4 .NET Framework 4.8 or lower 4
البته اگر از نگارشهای کمتر از net5.0 استفاده میکنید نیز میتوانید یک سطر AnalysisLevel زیر را به صورت دستی به فایل csproj خود اضافه کنید تا از اخطارهای بیشتری آگاه شوید:
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>netcoreapp3.1</TargetFramework> <!-- get more advanced warnings for this project --> <AnalysisLevel>5</AnalysisLevel> </PropertyGroup> </Project>
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>netcoreapp3.1</TargetFramework> <!-- be automatically updated to the newest stable level --> <AnalysisLevel>latest</AnalysisLevel> </PropertyGroup> </Project>
<AnalysisLevel>preview</AnalysisLevel>
<!-- I am just fine thanks --> <AnalysisLevel>none</AnalysisLevel>
معرفی AnalysisMode در کامپایلر C# 9.0 و NET 5.0 SDK.
از زمان ارائهی NET 5.0 RC2.، گزینهی جدید دیگری به نام AnalysisMode نیز به تنظیمات کامپایلر C# 9.0 اضافه شدهاست:
<PropertyGroup> <AnalysisMode>AllEnabledByDefault</AnalysisMode> </PropertyGroup>
- Default: در این حالت تعداد کمی از گزینههای کنترل کیفیت فعال هستند.
- AllEnabledByDefault: شدیدترین حالت ممکن؛ با انتخاب آن تمام گزینههای تعریف شده به صورت اخطارهای کامپایلر ظاهر میشوند.
- AllDisabledByDefault: جهت غیرفعال کردن این گزینه.
نکته 1: اگر میخواهید این اخطارها به صورت خطاهای کامپایلر ظاهر شوند، گزینهی CodeAnalysisTreatWarningsAsErrors را به true تنظیم کنید:
<PropertyGroup> <CodeAnalysisTreatWarningsAsErrors>false</CodeAnalysisTreatWarningsAsErrors> </PropertyGroup>
نکته 2: آنالیز کدها در پروژههای مبتنی بر NET 5.0 SDK. به صورت خودکار فعال است. اگر میخواهید آنها را در نگارشهای پیشین NET Core. هم فعال کنید، خاصیت EnableNETAnalyzers را به true تنظیم نمائید:
<PropertyGroup> <EnableNETAnalyzers>true</EnableNETAnalyzers> </PropertyGroup>
امکان بررسی استایل کد نویسی در کامپایلر C# 9.0 و NET 5.0 SDK.
گزینهی امکان بررسی استایل کدنویسی در کامپایلر C# 9.0، هنوز در مرحلهی آزمایشی به سر میبرد. به همین جهت به صورت پیشفرض غیرفعال است. اگر میخواهید آنرا فعال کنید، روش آن به صورت زیر است که پس از آن، مشکلات موجود به صورت اخطارهایی ظاهر خواهند شد:
<PropertyGroup> <EnforceCodeStyleInBuild>true</EnforceCodeStyleInBuild> </PropertyGroup>
روش اعمال سراسری تنظیمات کامپایلر به تمام پروژههای یک Solution
اگر Solution شما از چندین زیر پروژه تشکیل شدهاست، یا میتوانید تنظیمات یاد شده را یکی یکی به هر کدام اضافه کنید و یا یک فایل مخصوص Directory.Packages.props را در بالاترین پوشهی Solution خود ایجاد کرده و آنرا به صورت زیر تکمیل نمائید:
<Project> <PropertyGroup> <AnalysisLevel>latest</AnalysisLevel> <AnalysisMode>AllEnabledByDefault</AnalysisMode> <CodeAnalysisTreatWarningsAsErrors>true</CodeAnalysisTreatWarningsAsErrors> <EnableNETAnalyzers>true</EnableNETAnalyzers> <EnforceCodeStyleInBuild>true</EnforceCodeStyleInBuild> </PropertyGroup> </Project>