در این مقاله قصد دارم راجعبه یک Extension در دات نت صحبت کنم که خیلی وقتها میتواند بسیار مفید و نجات بخش و همینطور در زمان کارتان تاثیر زیادی بگذارد. خیلی وقتها پیش آمده که داریم با یک سرویس بیرونی ارتباط برقرار میکنیم، اما هنگام فراخوانی کردن، با خطا مواجه میشویم و ما متوجه دلیل خطای رخ داده در آن لحظه نمیشویم. برای خود من بارها پیش آمده که Propertyهای اطلاعات ورودی برای وب سرویس را بصورت Pascal Case داده باشم، ولی سرویس بیرونی فق ...
اگر شما هم مثل بنده در حال نگهداری از یک سیستم قدیمی میباشید، به احتمال زیاد همیشه با یک سری مسائل مثل آپدیت پکیجها، اضافه کردن یا حذف کردن فایلی از پروژه، مدیریت وابستگیها، خروجی گرفتن از یک پروژه کنسول و ... درگیر هستید؛ مسائلی که سالهاست با روی کار آمدن «دات نت کور» و پس از آن «دات نت ۵» حل شدهاست. این حجم از مشکلات به حدی بود که گاهاً کدنویسی را با مشکل مواجه میکرد و امروز تصمیم گرفتم این مشکل را برای پروژه شرکت حل کنم. ابتدا با ...
نگارش نهایی دات نت 6، حدود یک ماه دیگر منتشر میشود و اگر برای نمونه RC2 آنرا نصب کرده باشید، با ایجاد یک پروژهی کنسول جدید مبتنی بر آن ... شگفت زده خواهید شد! شاید انتظار داشته باشید که با چنین فایلی مواجه شوید: using System;
namespace MyVerboseApp
{
public class Program
{
public static void Main(string[] args)
{
Console.WriteLine("Hello World!");
}
}
...
نکته: این آموزش مبتنی بر دات نت نسخه 5 میباشد (قابل استفاده در نسخه 3.0 و 3.1 نیز میباشد اما تست نشده است). در این آموزش فرض شدهاست که شما توانایی کار کردن با git و گیتهاب را دارید. همچنین دقت کنید که گزینههای زیر در فایل csproj شما موجود باشد، در غیر این صورت ممکن است با خطا مواجه شوید: <IncludeNativeLibrariesForSelfExtract>true</IncludeNativeLibrariesForSelfExtract>
<RuntimeIdentifier>win-x86</Runtime ...
ارائهی NET 5. یا پایان NET Standard.
تا پیش از ارائهی NET 5.، پیاده سازیهای مجزایی از دات نت مانند Full .NET Framework ،.NET Core ،Xamarin و غیره وجود داشتند و دارند. در این حالت برای اینکه بتوان یک class library قابل اجرای بر روی تمام اینها را ارائه داد، نیاز به ارائهی API ای بود که بین تمام آنها به اشتراک گذاشته شود و این دقیقا هدف وجودی NET Standard. است؛ اما ... مشکلات زیر را نیز به همراه دارد:
هر زمانیکه ...
با توجه به ماهیت چندسکویی NET 5.، در اکثر سیستمهای ویندوزی، سرویس بومی سازی، بر اساس استاندارد NLS کار میکند، اما در سیستمهای لینوکسی و مبتنی بر یونیکس، این استاندارد از نوع ICU است (و وجود و تنظیم آنها خارج از NET. و توسط سیستم عامل مدیریت میشود). جهت یکدست سازی این دو نوع سیستم بومی سازی در دات نت، از نگارش 5 آن به بعد، استاندارد ICU که به صورت گستردهتری مورد پذیرش قرار گرفتهاست، استاندارد بومی سازی پیشفرض دات نت درنظر گرف ...
ویژگیهای جدید C# 9.0، به همراه NET 5. ارائه میشوند. بنابراین جهت راه اندازی پروژهای که قرار است بر این مبنا تهیه شود، نیاز است مراحل زیر را طی کنید:
- آخرین نگارش NET 5 SDK. را از اینجا دریافت و نصب کنید (حتما SDK باشد و نه runtime).
- اگر میخواهید با ویژوال استودیو کار کنید، نیاز است حداقل نگارش 16.7 یا بالاتر را نصب کرده باشید. به همین جهت پیش از ادامهی بحث، از منوی Help، گزینهی Check For Updates را انتخاب کرد ...
از زمان ارائه نگارش net core 2.1.، ابزارهای سراسری (Global tools) نیز معرفی شدند. استفاده از این ابزارها در محیط cli در جهت آسانتر شدن و سریعتر شدن وظایف، صورت میپذیرد. net core sdk. مربوطه، تمامی امکانات لازم از جهت ایجاد، حذف و به روزرسانی ابزارها را از طریق nuget شامل میگردد. تعداد بسیار زیادی از این ابزارها در حال حاضر ایجاد شدهاند که در لیست زیر، تعدادی از آنها را معرفی میکنیم و سپس به نحوهی ایجاد این نوع ابزارها میپردازیم. ...
عموما بستههای نیوگت تولید شده، قابلیت دیباگ ضعیفی را دارند. برای بالابردن بهبود تجربهی کاربری آنها میتوان توزیع فایلهای PDB و فعالسازی قابلیت Source Link را به آنها اضافه کرد.
فعالسازی توزیع فایلهای PDB به همراه بستههای NuGet
وجود فایلهای PDB، برای اجرای برنامهها ضرورتی ندارند؛ اما اگر ارائه شوند، به کمک آنها میتوان گزارشهای استثناءهای بسیار کاملتری را به همراه نام فایل و شماره سطرهای مرتبط موجود در ...
فرض کنید قصد دارید عملیات نرمال سازی اطلاعات را بر روی یک رشته انجام داده و برای مثال اعداد فارسی و انگلیسی موجود در یک رشته را یکدست کنید. اولین روشی که برای اینکار به ذهن میرسد، استفاده از متد Replace است: private static string toPersianNumbersUsingReplace(string data)
{
if (string.IsNullOrWhiteSpace(data)) return string.Empty;
return
data
.Replace("0", "\u06F0")
.Replace("1", "\u06F1")
...