اشتراک‌ها
اضافه شدن CSSNestedDeclarations به استاندارد CSS
CSS nesting improves with CSSNestedDeclarations

To fix some weird quirks with CSS nesting, the CSS Working Group resolved to add the CSSNestedDeclarations interface to the CSS Nesting Specification. With this addition, declarations that come after style rules no longer shift up, among some other improvements.
These changes are available in Chrome from version 130 and are ready for testing in Firefox Nightly 132 and Safari Technology Preview 204.
اضافه شدن CSSNestedDeclarations به استاندارد CSS
اشتراک‌ها
دوران رنسانس NET.

First, the decoupling of .NET from Windows
Second, the newfound focus on CLR performance
Third, moving .NET’s tooling to a cross-platform model
Fourth, the .NET user base is embracing the OSS ecosystem as a whole
Fifth, in general the direction on .NET development is pushing users further down into the details of the stack
Sixth, Microsoft’s platform work being done out in the open

دوران رنسانس NET.
نظرات مطالب
C# 6 - String Interpolation
یک نکته‌ی تکمیلی: امکان تعریف عبارات string interpolation چند سطری در C# 11

در C# 11، متن درون {} یک عبارت string interpolation، می‌تواند در طی چند سطر نیز تعریف شود و متن بین {} به صورت یک عبارت #C تفسیر می‌شود. در اینجا هر عبارت معتبر #C ای را می‌توان بکار برد. در این حالت تعریف عبارات LINQ و pattern matching switch expressions ساده‌تر می‌شوند. برای مثال:
namespace CS11Tests;

public static class NewLinesStringInterpolations
{
    public static void Test()
    {
        var month = 8;
        var season = $"The season is {month switch
        {
            >= 1 and <= 3 => "spring",
            >= 4 and <= 6 => "summer",
            >= 7 and <= 9 => "autumn",
            10 or 11 or 12 => "winter",
            _ => "Wrong month number",
        }}.";
        Console.WriteLine(season);

        int[] numbers = { 1, 2, 3, 4, 5, 6 };
        var message = $"The reversed even values of {nameof(numbers)} are {string.Join(", ",
            numbers.Where(n => n % 2 == 0).Reverse())}.";
        Console.WriteLine(message);
    }
}
مطالب
خلاصه اشتراک‌های روز سه شنبه 17 آبان 1390
اشتراک‌ها
Visual Studio 2019 version 16.1.1 منتشر شد
Visual Studio 2019 version 16.1.1 منتشر شد
مطالب
کامپایلر C# 9.0، خطاها و اخطارهای بیشتری را نمایش می‌دهد
یکی از مواردی را که در حین ارتقاء پروژه‌های خود به NET 5.0. و C# 9.0 احتمالا مشاهده خواهید کرد، گزارش خطاهای کامپایلری است که پیشتر با نگارش‌های قبلی #C و NET Core.، اصلا خطا نبوده و بدون مشکل کامپایل می‌شدند. یعنی کدی که با NET Core SDK 3x. بدون مشکل کامپایل می‌شود، الزامی ندارد که با NET 5.0 SDK. نیز کامپایل شود. در این مطلب، تغییرات صورت گرفته‌ی در تنظیمات کامپایلر #C را در NET 5.0 SDK.، بررسی می‌کنیم.


معرفی 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
عدد 5 پیش‌فرض در اینجا سبب خواهد شد تا تعداد اخطارهای قابل ملاحظه‌ای را دریافت کنید؛ مواردی را که پیشتر با نگارش‌های قبلی کامپایلر #C، از آن‌ها ناآگاه بودید.
البته اگر از نگارش‌های کمتر از 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>
یک نکته: اگر می‌خواهید همواره آخرین حد اخطارهای موجود ممکن را مشاهده کنید، مقدار AnalysisLevel را به latest تنظیم کنید:
<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>
با اینکار با نصب یک SDK جدید، نیازی به به روز رسانی مقدار AnalysisLevel نخواهد بود و یا اگر می‌خواهید بالاترین سطح ممکن و حتی موارد آزمایشی را نیز بر روی پروژه‌ی خود آزمایش کنید، مقدار سطح آنالیز را به preview تنظیم نمائید:
<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>
اشتراک‌ها
لیستی از C# Source Generators

C# Source Generators

A list of C# Source Generators (not necessarily awesome), because I haven't found a good list yet.

C# Source Generators is a Roslyn compiler feature introduced in C#9/.NET 5. It lets C# developers inspect user code and generate new C# source files that can be added to a compilation. 

لیستی از C# Source Generators
اشتراک‌ها
نگارش‌های 5.0.7 و 3.1.16 دات نت و NET Core. منتشر شدند

Today, we are releasing the .NET June 2021 Updates. These updates contains reliability and security improvements. See the individual release notes for details on updated packages.

You can download 5.0.7 , 3.1.16 versions for Windows, macOS, and Linux, for x86, x64, Arm32, and Arm64. 

نگارش‌های 5.0.7 و 3.1.16 دات نت و NET Core. منتشر شدند