اشتراک‌ها
Visual Studio 2015 Update 2 CTP منتشر شد

Today we released Visual Studio 2015 Update 2 CTP. Our focus for this release has been stability and performance, along with responding to feedback you’ve given us on Visual Studio 2015 RTM and Update 1. 

Visual Studio 2015 Update 2 CTP منتشر شد
بازخوردهای پروژه‌ها
بروز خطا هنگام افزودن نقش جدید
با سلام. بعد از بیلد کردن پروژه و اضافه شدن پکیج‌های نوگت، موقع اجرا وقتی در صفحه نقش‌ها ، نقش جدید را اضافه میکنم، خطای زیر در کنسول فایرباگ لاگ می‌شود:
 Unable to determine a valid ordering for dependent operations. Dependencies may exist due to foreign key constraints, model requirements, or store-generated values
مطالب
روش‌هایی برای بهبود قابلیت دیباگ بسته‌های NuGet
عموما بسته‌های نیوگت تولید شده، قابلیت دیباگ ضعیفی را دارند. برای بالابردن بهبود تجربه‌ی کاربری آن‌ها می‌توان توزیع فایل‌های PDB و فعالسازی قابلیت Source Link را به آن‌ها اضافه کرد.


فعالسازی توزیع فایل‌های PDB به همراه بسته‌های NuGet

وجود فایل‌های PDB، برای اجرای برنامه‌ها ضرورتی ندارند؛ اما اگر ارائه شوند، به کمک آن‌ها می‌توان گزارش‌های استثناءهای بسیار کاملتری را به همراه نام فایل و شماره سطرهای مرتبط موجود در Exception.StackTrace، مشاهده کرد.
پیشتر توسعه دهندگان بسته‌های NuGet، فایل‌های PDB را خودشان با تعریف یک سری include در فایل مشخصات بسته، به فایل نهایی تولیدی اضافه می‌کردند. اما این روزها با ارائه‌ی «NuGet.org Symbol Server»، دیگر افزودن فایل‌های PDB به بسته‌های nupkg توصیه نمی‌شود. چون حجم نهایی و زمان بازیابی بسته‌ها را بیش از اندازه افزایش می‌دهند؛ خصوصا اگر مصرف کننده‌ای قصد دیباگ آن‌ها را نداشته باشد.
راه حل جدید توصیه شده، ارائه‌ی فایل‌های ویژه‌ی snupkg. در کنار بسته‌های nupkg. معمولی است که حاوی فایل‌های PDB متناظر با بسته‌ی اصلی NuGet هستند.

برای فعالسازی آن‌ها در پروژه‌های NET Core. بسته‌های نیوگت خود تنها کافی است دو تنظیم زیر را به فایل csproj اضافه کنید:
<PropertyGroup>
  <IncludeSymbols>true</IncludeSymbols>
  <SymbolPackageFormat>snupkg</SymbolPackageFormat>
</PropertyGroup>
در این حالت پس از ساخت بسته‌ی نیوگت توسط دستور «dotnet pack -c release»، دو فایل با پسوندهای snupkg و nupkg تولید می‌شوند که باید هر دو را به سایت NuGet ارسال کرد.

در سمت مصرف کننده، IDE شما باید برای کار با این Symbol Server تنظیم شده باشد.


فعالسازی تولید Source Link

وجود PDBها جهت دیباگ بسته‌های ارائه شده بسیار مفیدند؛ اما اگر بر روی کدهای نهایی بهینه سازی صورت گرفته باشد، ممکن است اطلاعات دیباگ آن‌ها با کد اصلی تطابق پیدا نکنند. برای بهبود این وضعیت و ارتقاء آن به یک سطح بالاتر، مفهوم source link ارائه شده‌است که مستقل است از نوع زبان و همچنین سورس کنترل.
کار سورس‌لینک، افزودن متادیتای سورس کنترل انتخابی، به بسته‌ی نهایی تولید شده‌است. به این صورت می‌توان سورس کامل و متناظر با قطعه کد بسته و کتابخانه‌ی ثالث در حال دیباگ را در IDE خود داشت و با آن به نحو متداولی کار کرد. یعنی سورس لینک، قابلیت «Step Into" the source code"» را مهیا می‌کند. متادیتای اضافه شده، دقیقا مشخص می‌کند که بسته‌ی تولیدی نهایی، متناظر با کدام commit سورس کنترل است. به این ترتیب دقیقا می‌توان به کدهای همان commit ای که بسته بر اساس آن کامپایل شده‌است، در IDE خود دسترسی یافت.
این قابلیت از Visual Studio 15.3 به بعد در اختیار کاربران آن است (گزینه‌ی Enable Source Server Support، در قسمت Debug/General آن باید فعال شود). همچنین Rider و VSCode نیز از آن پشتیبانی می‌کنند. برای Rider باید در قسمت Tools/External symbols، گزینه‌های Use sources from symbol files when available و Allow downloading symbols from remote locations را فعال کنید.
همچنین برای فعالسازی آن در فایل csproj بسته‌ی نیوگت خود می‌توانید تنظیمات زیر را اضافه کنید:
<PropertyGroup>
    <PublishRepositoryUrl>true</PublishRepositoryUrl>
    <EmbedUntrackedSources>true</EmbedUntrackedSources>
</PropertyGroup>
<ItemGroup>
  <PackageReference Include="Microsoft.SourceLink.GitHub" Version="1.0.0" PrivateAssets="All" />
</ItemGroup>
البته در اینجا پروایدر مخصوص GitHub را مشاهده می‌کنید (اگر مخزن کد بسته‌ی شما بر روی آن قرار دارد) و همچنین سایر پروایدرهای مخصوص سورس کنترل‌های دیگر مانند Azure DevOps/VSTS نیز برای آن تهیه شده‌اند.


روش فعالسازی Source Link در پروژه‌ی VSCode

اگر از VSCode استفاده می‌کنید، نیاز است تنظیمات زیر را به قسمت configurations فایل launch.json خود اضافه کنید تا قابلیت «Step Into" the source code"» بسته‌های نیوگتی که از SourceLink پشتیبانی می‌کنند، با فشردن دکمه‌ی F11 در حین دیباگ، فعال شود:
"justMyCode": false,
"symbolOptions": {
   "searchMicrosoftSymbolServer": true
},
"suppressJITOptimizations": true,
"env": {
   "COMPlus_ZapDisable": "1"
}
اشتراک‌ها
چرا باید Vim را در سال 2020 یاد بگیرید؟

Ah, yes, Vim, the powerful text-editor that is everywhere and a place where even the wisest can’t quit. You had to hear about it at least once. Or you might have considered learning or trying it. But why do it now?

It’s 2020, doesn’t everyone use VSCode already? Let’s dive in and figure why someone would still learn Vim.

چرا باید Vim را در سال 2020 یاد بگیرید؟
نظرات مطالب
نصب Mono Develop 4.x در Ubuntu
یک نکته تکمیلی در مورد نصب از روی PPA
اگر یک برنامه جدید را در monodevelop شروع کردید و به خطای کامپایل ذیل برخوردید:
Error: A dependency of a referenced assembly may be missing, or you may be referencing an 
assembly created with a newer CLR version. See the compilation output for more details. (Test1)
به این معنا است که mono تنظیم شده در مسیرهای لینوکس، به آخرین نگارش تنظیم نیست. برای رفع این مشکل دستورات ذیل را صادر و بعد monodevelop را اجرا کنید:
export PATH=/opt/mono-3/bin:$PATH
export PKG_CONFIG_PATH=/opt/mono-3/lib/pkgconfig:$PKG_CONFIG_PATH
mono -V
بسته PPA، نگارش 3.2.1 را در مسیر opt/mono-3 نصب می‌کند.
اشتراک‌ها
چگونه Windows 11 را وادار به آپگرید کنیم؟
How to trigger Windows 11 to upgrade to latest version

In this video you'll learn a encourage to trigger a Windows 11 computer to upgrade to the latest publicly released version. Demonstrated here is the update for 24H2, but it will work for any version of Windows 11 in the future.
چگونه Windows 11 را وادار به آپگرید کنیم؟
نظرات مطالب
Blazor 5x - قسمت دوم - بررسی ساختار اولیه‌ی پروژه‌های Blazor
این خروجی که مشاهده کردید مربوط به حالت دیباگ هست. زمان حالت ارائه‌ی نهایی با دستور dotnet publish --configuration Release کار trimming دات نت 5 (حذف کدهای اضافی استفاده نشده) و همچنین فشرده سازی فایل‌ها، به صورت خودکار انجام می‌شود که حجم مشاهده شده را به بیشتر از نصف کاهش می‌دهد. البته این موارد publish و اجرای آفلاین و ثبت اطلاعات آفلاین، در قسمت‌های بعدی به صورت جداگانه و مفصلی بحث خواهند شد. این حجم publish، با حجم برنامه‌های واقعی Angular یا React قابل مقایسه است و تقریبا یکی هست.