- A bug is fixed in loop unroller which might lead to wrong condition codes being generated in the unrolled loop.
- Fixed a bug that caused ServiceHub.Host.CLR.x64 to stop working.
- Fixes issue in Chinese version of compiler errors C4533 and C2362 which resulted in incorrect order of string substitution for those languages.
- Improved stability of the Diagnostic Tools and Performance Profiler.
- Code generation problem causing crash with pure virtual destructor in const object
- Fixed a constant evaluation regression from 16.5 Preview 2
- Fixed an issue where MacOS couldn't be paired.
- Fixed an issue where the Diagnostic Tools while debugging and Performance Profiler fail to launch on XBox devices.
نحوه اضافه کردن چند پروژه در vs code
Visual Studio Code doesn't support solution files, whereas Visual Studio does. In Visual Studio we use solution files to link multiple projects together, and at first I thought that this was going to be a deal breaker for Visual Studio Code - but it's not at all. Many people aren't aware that Visual Studio Code, although lightweight, is a powerful editor that can do most of the things you need.
کتاب C# 11 and .NET 7 – Modern Cross-Platform Development, 7th Edition
(سی شارپ 11 و دات نت 7، مبانی توسعه چند سکویی مدرن، ویرایش هفتم)،
راهنمایی قابل دسترس برای برنامه نویسان مبتدی تا متوسط برای مفاهیم،
کاربردهای دنیای واقعی و جدیدترین ویژگیهای C# 11 و NET 7. به همراه
تمرینات عملی با استفاده از Visual Studio 2022 و Visual Studio Code است.
جدیدترین نسخه این کتاب به طور گسترده ای بازنگری شده است تا تمامی
ویژگیهای جدید ارائه شده با سی شارپ 11 و دات نت 7 را در خود جای دهد.
برای رفع این مشکلات، از روشهای توسعهی به همراه ابزارهای یکپارچگی مداوم استفاده میشود. برای نمونه، AppVeyor یکی از سرویسهای ابری یکپارچگی مداوم (Continuous Integration و یا به اختصار CI) است. به کمک آن میتوان یک image از ویندوز سرور را به همراه ابزارهای build، آزمایش و توزیع برنامههای NET. در اختیار داشت. این سرویس، مخزن کد شما را مونیتور کرده و هر زمانیکه تغییری را در آن ایجاد کردید، آنها را به صورت خودکار build و در صورت موفقیت آمیز بودن این عملیات، بستهی نیوگت متناظری را به سایت nuget.org ارسال میکند. بنابراین پس از یکپارچه کردن مخزن کد خود با این نوع سرویسهای یکپارچگی مداوم، دیگر حتی نیازی به build دستی آن نیز نخواهید داشت. همینقدر که کدی را به مخزن کد تحت نظر، commit کنید، مابقی مراحل آن خودکار است.
به همین جهت در این مطلب قصد داریم نحوهی اتصال یک مخزن کد GitHub را به سرویس یکپارچگی مداوم AppVeyor، جهت تولید خودکار بستههای Nuget، بررسی کنیم.
معرفی سرویس ابری AppVeyor
AppVeyor یک راه حل یکپارچگی مداوم چند سکویی است که استفادهی از آن برای پروژههای سورس باز رایگان است و سازگاری فوق العادهای را با محصولات مایکروسافت دارد. برای ورود به آن میتوان از اکانتهای GitHub ،BitBucket و VSTS (Visual Studio Team Services) استفاده کرد.
گردش کاری متداول یکپارچگی مداوم AppVeyor به این صورت است:
الف) با اکانت GitHub خود به آن وارد شوید.
ب) یک مخزن کد GitHub خود را به آن Import کنید.
ج) به مخزن کد GitHub خود یک فایل yml. تنظیمات مخصوص AppVeyor را اضافه کنید.
د) نظارهگر Build و توزیع خودکار پروژهی خود باشید.
ایجاد اکانت و اتصال به مخزن کد GitHub
در ابتدا به صفحهی لاگین آن مراجعه کنید. در اینجا جهت سهولت کار با GitHub و مخازن کد آن، گزینهی GitHub را انتخاب کرده و توسط آن به سیستم وارد شوید:
پس از ورود موفق، گزینهی new project را انتخاب کنید:
در ادامه مخزن کد GitHub و نوع عمومی آنرا انتخاب میکنیم تا AppVeyor بتواند پروژههای آنرا Import کند و همچنین به آنها web hookهایی را اضافه کند تا با اعمال تغییراتی در سمت GitHub، کار اطلاع رسانی آنها به AppVeyor به صورت خودکار صورت گیرد:
پس از آن لیست مخزنهای کد شما در همینجا ارائه میشود تا بتوانید یک یا چند مورد را انتخاب کنید:
انجام تنظیمات عمومی مخزن کد
در صفحهی بعدی، برگهی settings و سپس از منوی کنار صفحهی آن، گزینهی General را انتخاب کنید:
در اینجا اگر پروژهی شما از نوع NET Core. است، گزینهی NET Core .csproj patching. را انتخاب نمائید:
سپس در پایین صفحه بر روی دکمهی Save کلیک کنید.
انتخاب و تنظیم محیط Build
در ادامه در برگهی settings و سپس از منوی کنار صفحهی آن، گزینهی Environment را انتخاب کنید:
در این صفحه، worker image را بر روی VS 2017 قرار دهید و همچنین در قسمت Cached directories and files، مسیر C:\Users\appveyor\.dnx را جهت کش کردن عملیات Build و بالا بردن سرعت آن، مقدار دهی کنید. سپس در پایین صفحه بر روی دکمهی Save کلیک نمائید.
اکنون بر روی گزینهی Build در منوی سمت چپ صفحه کلیک کنید. در اینجا سه حالت msbuild ،script و off را میتوان انتخاب کرد.
- در حالت msbuild، که سادهترین حالت ممکن است، فایل sln. مخزن کد، یافت شده و بر اساس آن به صورت خودکار تمام پروژههای این solution یکی پس از دیگری build خواهند شد. این مورد برای برنامههای Full .NET Framework شاید گزینهی مناسبی باشد.
- حالت script برای پروژههای NET Core. مناسبتر است و در این حالت میتوان کنترل بیشتری را بر روی build داشت. به علاوه این روش بر روی لینوکس هم کار میکند؛ زیرا در آنجا دسترسی به msbuild نداریم.
- حالت off به معنای خاموش کردن عملیات build است.
در اینجا گزینهی cmd را جهت ورود build script انتخاب میکنیم:
سپس دستورات ذیل را جهت ورود به پوشهی پروژهی کتابخانه (جائیکه فایل csproj آن قرار دارد)، بازیابی وابستگیهای پروژه و سپس تولید بستهی نیوگتی از آن، وارد میکنیم:
cd ./src/DNTPersianUtils.Core dotnet restore dotnet pack -c release cd ../..
ذکر ../.. cd در انتهای این دستورات ضروری است. در غیر اینصورت cd بعدی در تنظیماتی دیگر، داخل همین پوشه انجام میشود.
تنظیم اجرای خودکار آزمونهای واحد
در همین صفحه، گزینههای settings -> tests -> script -> cmd را انتخاب و سپس دستورات زیر را وارد کرده و آنرا ذخیره کنید:
cd ./src/DNTPersianUtils.Core.Tests dotnet restore dotnet test cd ../..
تنظیم اطلاع رسانی خودکار از اجرای عملیات
در برگهی settings -> notifications مطابق تنظیمات فوق میتوان نوع email را جهت اطلاع رسانی شکست انجام عملیات یکپارچگی مداوم، انتخاب کرد.
آزمایش Build خودکار
برای آزمایش تنظیماتی که انجام دادیم، به برگهی latest build مراجعه کرده و بر روی دکمهی new build کلیک کنید تا اسکریپتهای build و test فوق اجرا شوند. بدیهی است اجرای بعدی این اسکریپتها خودکار بوده و به ازای هر commit به GitHub، بدون نیاز به مراجعهی مستقیم به appveyor صورت میگیرند.
اضافه کردن نماد AppVeyor به پروژه
در تنظیمات برگهی Settings، گزینهی AppVeyor badge نیز در منوی سمت چپ صفحه، وجود دارد:
در اینجا همان کدهای mark down آنرا انتخاب کرده و به ابتدای فایل readme پروژهی خود اضافه کنید. برای نمونه نماد فعلی (تصویر فوق)، build failing را نمایش میدهد؛ چون سه آزمون واحد آن مشکل دارند و باید اصلاح شوند.
پس از رفع مشکلات پروژه و commit آنها، build و اجرای خودکار آزمونهای واحد آن توسط AppVeyor صورت گرفته و اینبار این نماد به صورت زیر تغییر میکند:
ارسال خودکار بستهی نیوگت تولید شده به سایت nuget.org
برای ارسال خودکار حاصل Build، به سایت نیوگت، نیاز است یک API Key داشته باشیم. به همین جهت به صفحهی مخصوص آن در سایت nuget پس از ورود به سایت آن، مراجعه کرده و یک کلید API جدید را صرفا برای این پروژه تولید کنید (در قسمت Available Packages بستهی پیشینی را که دستی آپلود کرده بودید انتخاب کنید).
در اینجا API Key را ذکر خواهیم کرد. سپس در پایین صفحه بر روی دکمهی Save کلیک کنید.
همچنین نیاز است مشخص کنیم که بستههای nupkg تولید شده در چه مسیری قرار دارند. به همین جهت در قسمت settings -> artifacts مسیر پوشهی bin نهایی را ذکر میکنیم:
این مورد را نیز با کلیک بر روی دکمهی Save ذخیره کنید.
اکنون اگر نگارش جدیدی را به GitHub ارسال کنیم (تغییر VersionPrefix در فایل csproj و سپس commit آن)، پس از Build پروژه، بستهی نیوگت آن نیز به صورت خودکار تولید شده و به سایت nuget.org ارسال میشود. لاگ آنرا در پایین صفحهی برگهی latest build میتوانید مشاهده کنید.
ساده سازی مراحل تنظیمات AppVeyor
در صفحهی settings، در منوی سمت چپ آن، گزینهی export YAML نیز وجود دارد. در اینجا میتوان تمام تنظیمات انجام شدهی فوق را با فرمت yml. دریافت کرد و سپس این فایل را به ریشهی مخزن کد خود افزود. با وجود این فایل، دیگر نیازی به طی کردن دستی هیچکدام از مراحل فوق نیست.
برای نمونه فایل appveyor.yml نهایی مطابق با توضیحات این مطلب، چنین محتوایی را دارد:
version: 1.0.{build} image: Visual Studio 2017 dotnet_csproj: patch: true file: '**\*.csproj' version: '{version}' package_version: '{version}' assembly_version: '{version}' file_version: '{version}' informational_version: '{version}' cache: C:\Users\appveyor\.dnx build_script: - cmd: >- cd ./src/DNTPersianUtils.Core dotnet restore dotnet pack -c release cd ../.. test_script: - cmd: >- cd ./src/DNTPersianUtils.Core.Tests dotnet restore dotnet test cd ../.. artifacts: - path: ./src/DNTPersianUtils.Core/bin/release/*.nupkg name: NuGet deploy: - provider: NuGet api_key: secure: xyz skip_symbols: true notifications: - provider: Email to: - me@yahoo.com on_build_success: false on_build_failure: true on_build_status_changed: true
یک نکته: api_key ذکر شدهی در اینجا در قسمت secure، رمزنگاری شدهاست. برای تولید آن میتوانید از مسیر https://ci.appveyor.com/tools/encrypt استفاده کنید. به این صورت مشکلی با عمومی کردن فایل appveyor.yml خود در GitHub نخواهید داشت.
IIS 7.5 که به همراه ویندوز سرور 2008 R2 ارائه میشود شامل تازههای زیر است:
- بیش از 50 مورد cmdlet جدید مخصوص Powershell جهت مدیریت IIS
- افزونههای جدید مدیریتی: Database Manager (مدیریت اس کیوال سرور از درون IIS و کنسول آن)، Configuration Editor (تولید خودکار اسکریپتهای مدیریتی جهت اتوماسیون امور مرتبط)، IIS Reports و Request Filtering .
- پشتیبانی از One-click publishing موجود در Visual Studio 10
- Web Deployment Tool یا همان MS Deploy سابق جهت مدیریت بهتر برنامههای وب.
- امکان ردیابی تغییرات در کانفیگ وب سرور
- گزارشگیری بهتر از وضعیت کارآیی سرور
- ساپورت دات نت جهت Server Core معرفی شده در ویندوز سرور 2008
- WebDav که پیشتر به صورت یک افزونهی آن معرفی شده بود، اکنون جزئی از IIS 7.5 است.
- یکپارچگی با URLScan 3.0 جهت بالا بردن امنیت وب سرور.
- FTP server services : با کنسول مدیریتی IIS یکپارچه شده است با بهبودهایی در نحوهی تنظیم کردن و ردیابی آن.
جهت مطالعه بیشتر در مورد تازههای ویندوز سرور 2008 نگارش R2 میتوان به مقالات زیر رجوع کرد:
Windows Server 2008 R2 new features - the complete list - Part 1: Virtualization
Windows Server 2008 R2 new features - the complete list - Part 2: Active Directory
Windows Server 2008 R2 new features - the complete list - Part 3: IIS 7.5 and Performance
Windows Server 2008 R2 new features - the complete list - Part 4: Administration
we’re releasing a special Installer of Visual Studio Code for Java developers. The package can be used as a clean install or an update for existing environment to add Java or Visual Studio Code to your development environment.