VS Code برای توسعه دهندگان ASP.NET Core - قسمت دوم - ایجاد و اجرای اولین برنامه
اندازه‌ی قلم متن
تخمین مدت زمان مطالعه‌ی مطلب: شش دقیقه

پس از معرفی ابتدایی VSCode و نصب افزونه‌ی #C در قسمت قبل، در ادامه می‌خواهیم اولین پروژه‌ی ASP.NET Core خود را در آن ایجاد کنیم.


نصب ASP.NET Core بر روی سیستم عامل‌های مختلف

برای نصب پیشنیازهای کار با ASP.NET Core به آدرس https://www.microsoft.com/net/download/core مراجعه کرده و NET Core SDK. را دریافت و نصب کنید. پس از نصب آن جهت اطمینان از صحت انجام عملیات، دستور dotnet --version را در خط فرمان صادر کنید:
 C:\>dotnet --version
1.0.1
در اینجا SDK نصب شده، شامل هر دو نگارش 1.0 و 1,1 است. همچنین در همین صفحه‌ی دریافت فایل‌ها، علاوه بر نگارش ویندوز، نگارش‌های Mac و لینوکس آن نیز موجود هستند. بر روی هر کدام که کلیک کنید، ریز مراحل نصب هم به همراه آن‌ها وجود دارد. برای مثال نصب NET Core. بر روی Mac شامل نصب OpenSSL به صورت جداگانه است و یا نصب آن بر روی لینوکس به همراه چند دستور مختص به توزیع مورد استفاده می‌باشد که به خوبی مستند شده‌اند و نیازی به تکرار آن‌ها نیست و همواره آخرین نگارش آن‌ها بر روی سایت dot.net موجود است.


ایجاد اولین پروژه‌ی ASP.NET Core توسط NET Core SDK.

پس از نصب NET Core SDK.، به پیشنیاز دیگری برای شروع به کار با ASP.NET Core نیازی نیست. نه نیازی است تا آخرین نگارش ویژوال استودیوی کامل را نصب کنید و نه با به روز رسانی آن، نیاز است چندگیگابایت فایل به روز رسانی تکمیلی را دریافت کرد. همینقدر که این SDK نصب شود، می‌توان بلافاصله شروع به کار با این نگارش جدید کرد.
در ادامه ابتدا پوشه‌ی جدید پروژه‌ی خود را ساخته (برای مثال در مسیر D:\vs-code-examples\FirstAspNetCoreProject) و سپس از طریق خط فرمان به این پوشه وارد می‌شویم.

یک نکته: در ویندوزهای جدید فقط کافی است در نوار آدرس بالای صفحه تایپ کنید cmd. به این صورت بلافاصله command prompt استاندارد ویندوز در پوشه‌ی جاری در دسترس خواهد بود و دیگر نیازی نیست تا چند مرحله را جهت رسیدن به آن طی کرد.

پس از وارد شدن به پوشه‌ی جدید از طریق خط فرمان، دستور dotnet new --help را صادر کنید:
D:\vs-code-examples\FirstAspNetCoreProject>dotnet new --help
Getting ready...
Template Instantiation Commands for .NET Core CLI.

Usage: dotnet new [arguments] [options]

Arguments:
  template  The template to instantiate.

Options:
  -l|--list         List templates containing the specified name.
  -lang|--language  Specifies the language of the template to create
  -n|--name         The name for the output being created. If no name is specified, the name of the current directory is used.
  -o|--output       Location to place the generated output.
  -h|--help         Displays help for this command.
  -all|--show-all   Shows all templates


Templates                 Short Name      Language      Tags
----------------------------------------------------------------------
Console Application       console         [C#], F#      Common/Console
Class library             classlib        [C#], F#      Common/Library
Unit Test Project         mstest          [C#], F#      Test/MSTest
xUnit Test Project        xunit           [C#], F#      Test/xUnit
ASP.NET Core Empty        web             [C#]          Web/Empty
ASP.NET Core Web App      mvc             [C#], F#      Web/MVC
ASP.NET Core Web API      webapi          [C#]          Web/WebAPI
Solution File             sln                           Solution

Examples:
    dotnet new mvc --auth None --framework netcoreapp1.1
    dotnet new xunit --framework netcoreapp1.1
    dotnet new --help
همانطور که مشاهده می‌کنید، اینبار بجای انتخاب گزینه‌های مختلف از صفحه دیالوگ new project template داخل ویژوال استودیوی کامل، تمام این قالب‌ها از طریق خط فرمان در اختیار ما هستند. برای مثال می‌توان یک برنامه کنسول و یا یک کتابخانه‌ی جدید را ایجاد کرد.
در ادامه دستور ذیل را صادر کنید:
 D:\vs-code-examples\FirstAspNetCoreProject>dotnet new mvc --auth None
به این ترتیب یک پروژه‌ی جدید ASP.NET Core، بدون تنظیمات اعتبارسنجی و ASP.NET Core Identity، در کسری از ثانیه ایجاد خواهد شد.


سپس جهت گشودن این پروژه در VSCode تنها کافی است دستور ذیل را صادر کنیم:
 D:\vs-code-examples\FirstAspNetCoreProject>code .
در ادامه یکی از فایل‌های #C آن‌را گشوده و منتظر شوید تا کار دریافت خودکار بسته‌های مرتبط با افزونه‌ی #C ایی که در قسمت قبل نصب کردیم به پایان برسند:


اینکار یکبار باید انجام شود و پس از آن امکانات زبان #C و همچنین دیباگر NET Core. در VS Code قابل استفاده خواهند بود.
در تصویر فوق دو اخطار را هم مشاهده می‌کنید. مورد اول برای فعال سازی دیباگ و ساخت پروژه‌ی جاری است. گزینه‌ی Yes آن‌را انتخاب کنید و اخطار دوم جهت بازیابی بسته‌های نیوگت پروژه‌است که گزینه‌ی restore آن‌را انتخاب نمائید. البته کار بازیابی بسته‌ها از طریق کش موجود در سیستم به سرعت انجام خواهد شد.


گشودن کنسول از درون VS Code و اجرای برنامه‌ی ASP.NET Core

روش‌های متعددی برای گشودن کنسول خط فرمان در VS Code وجود دارند:
الف) فشردن دکمه‌های Ctrl+Shift+C
اینکار باعث می‌شود تا command prompt ویندوز از پوشه‌ی جاری به صورت مجزایی اجرا شود.
ب) فشردن دکمه‌های Ctrl+` (و یا Ctrl+ back-tick)
به این ترتیب کنسول پاورشل درون خود VS Code باز خواهد شد. اگر علاقمند نیستید تا از پاورشل استفاده کنید، می‌توانید این پیش‌فرض را به نحو ذیل بازنویسی کنید:
همانطور که در قسمت قبل نیز ذکر شد، از طریق منوی File->Preferences->Settings می‌توان به تنظیمات VS Code دسترسی یافت. پس از گشودن آن، یک سطر ذیل را به آن اضافه کنید:
 "terminal.integrated.shell.windows": "cmd.exe"
اکنون Ctrl+ back-tick را فشرده تا کنسول خط فرمان، داخل VS Code نمایان شود و سپس دستور ذیل را صادر کنید:
 D:\vs-code-examples\FirstAspNetCoreProject>dotnet run
Hosting environment: Production
Content root path: D:\vs-code-examples\FirstAspNetCoreProject
Now listening on: http://localhost:5000
Application started. Press Ctrl+C to shut down.
در اینجا دستور dotnet run سبب کامپایل و همچنین اجرای پروژه شده‌است و اکنون این برنامه‌ی وب بر روی پورت 5000 قابل دسترسی است:



ساده سازی ساخت و اجرای یک برنامه‌ی ASP.NET Core در VS Code


زمانیکه گزینه‌ی افزودن امکانات ساخت و دیباگ را انتخاب می‌کنیم (تصویر فوق)، دو فایل جدید به پوشه‌ی vscode. اضافه می‌شوند:


دراینجا فایل tasks.json، حاوی وظیفه‌ای است جهت ساخت برنامه. یعنی بجای اینکه مدام بخواهیم به خط فرمان مراجعه کرده و دستوراتی را صادر کنیم، می‌توان از وظایفی که در پشت صحنه همین فرامین را اجرا می‌کنند، استفاده کنیم؛ که نمونه‌ای از آن، به صورت پیش فرض به پروژه اضافه شده است.
برای دسترسی به آن، دکمه‌های ctrl+shift+p را فشرده و سپس در منوی ظاهر شده، واژه‌ی build را جستجو کنید:


با انتخاب این گزینه (که توسط Ctrl+Shift+B هم در دسترس است)، کار ساخت برنامه انجام شده و dll مرتبط با آن در پوشه‌ی bin تشکیل می‌شود.
 
همچنین در اینجا برای ساخت و بلافاصله نمایش آن در مرورگر پیش فرض سیستم، می‌توان مجددا دکمه‌های ctrl+shift+p را فشرد و در منوی ظاهر شده، واژه‌ی without را جستجو کرد:


با انتخاب این گزینه (که توسط Ctrl+F5 نیز در دسترس است)، برنامه ساخته شده، اجرا و نمایش داده می‌شود و برای خاتمه‌ی آن می‌توانید دکمه‌های Ctrl+C را بفشارید تا کار وب سرور موقتی آن خاتمه یابد.


در قسمت بعد مباحث دیباگ برنامه و گردش کار متداول یک پروژه‌ی ASP.NET Core را بررسی خواهیم کرد.
  • #
    ‫۷ سال و ۴ ماه قبل، یکشنبه ۳۱ اردیبهشت ۱۳۹۶، ساعت ۱۳:۵۲
    من قبل از دستور dotnet run،  از دستور  dotnet build برای کامپایل استفاده کردم تا اجرا شد. در غیر اینصورت خطا میداد .   
    • #
      ‫۷ سال و ۴ ماه قبل، یکشنبه ۳۱ اردیبهشت ۱۳۹۶، ساعت ۱۴:۰۸
      دستور dotnet run مطابق مستندات آن وابسته‌است به دستور dotnet build. بنابراین با فراخوانی آن نیازی به اجرای صریح دستور dotnet build نیست.
       The command depends on the dotnet build command to build the code.
      البته اگر وابستگی‌های پروژه دریافت نشده‌اند (عدم انتخاب گزینه‌ی restore در تصاویر فوق)، با دستور dotnet restore هم می‌توان همان کار بازیابی را انجام داد.
  • #
    ‫۷ سال و ۲ ماه قبل، پنجشنبه ۵ مرداد ۱۳۹۶، ساعت ۱۵:۳۸
    یک نکته‌ی تکمیلی
    پیش‌فرض حداکثر زمان بارگذاری افزونه‌ی #C به عدد کوچکی تنظیم شده‌است و ممکن است پس از بازکردن پروژه، فعال شدن این افزونه را مشاهده نکنید. برای رفع این مشکل به File->Preferences->Settings مراجعه کرده و مقدار omnisharp.projectLoadTimeout را جستجو و سپس تغییر دهید.
  • #
    ‫۷ سال و ۱ ماه قبل، چهارشنبه ۲۵ مرداد ۱۳۹۶، ساعت ۰۰:۵۶
    این خطا چرا نمایش داده میشه؟
    Please start a debug session to evaluate
    • #
      ‫۷ سال و ۱ ماه قبل، پنجشنبه ۲۶ مرداد ۱۳۹۶، ساعت ۱۲:۵۶
      این خطا عموما به معنای timeout شروع دیباگر است. ممکن است نرم افزارهای امنیتی نصب شده‌ی بر روی سیستم تداخل ایجاد کرده باشند. این افزونه‌ها از طریق اتصالات سرورهای آن‌ها با VSCode ارتباط برقرار می‌کنند. اگر فایروالی این اتصالات را سد کند، دیباگر امکان شروع را پیدا نمی‌کند.
  • #
    ‫۷ سال و ۱ ماه قبل، جمعه ۲۷ مرداد ۱۳۹۶، ساعت ۱۹:۵۲
    نکته‌ای در مورد دیباگ برنامه‌های NET Core 2.0.

    اگر فایل vscode\launch.json. پیشتر برای یک پروژه‌ی NET Core 1.x. تشکیل شده باشد، پس از ارتقاء برنامه به NET Core 2.0.، با شروع دیباگر در VSCode، خطای ذیل را مشاهده خواهید کرد:
    The specified framework 'Microsoft.NETCore.App', version '1.1.2' was not found.
    علت اینجا است که در فایل launch.json، مسیر dll اصلی برنامه هنوز به netcoreapp1.0 تنظیم است و باید به صورت ذیل به netcoreapp2.0 اصلاح شود:
    "program": "${workspaceRoot}/src/ASPNETCoreIdentitySample/bin/Debug/netcoreapp2.0/ASPNETCoreIdentitySample.dll",
  • #
    ‫۶ سال و ۱۰ ماه قبل، یکشنبه ۲۱ آبان ۱۳۹۶، ساعت ۱۸:۰۹
    یک نکته‌ی تکمیلی: تاثیر منفی VS 2017 به روز رسانی نشده بر روی افزونه‌ی #C مخصوص VSCode در ویندوز

    اگر VS 2017 خود را به روز رسانی نکرده باشید، ممکن است با باز کردن یک پروژه‌ی NET Core. در VSCode یک چنین خطاهایی را مشاهده کنید:
     Predefined type 'System.Void' is not defined or imported #1855
    علت اینجا است که افزونه‌ی #C مخصوص VSCode، در صورت نصب بودن VS 2017، سعی می‌کند از موتور MSBuild آن استفاده کند؛ بجای نمونه‌ای که به همراه خودش نصب می‌شود:
    [info]: OmniSharp.MSBuild.Discovery.MSBuildLocator
            Located 2 MSBuild instance(s)
                1: Visual Studio Enterprise 2017 15.0.26228.4 - "e:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin"
                2: StandAlone 15.0 - "C:\Users\xyz\.vscode\extensions\ms-vscode.csharp-1.13.0\.omnisharp\msbuild\15.0\Bin"
    [info]: OmniSharp.MSBuild.Discovery.MSBuildLocator
            Registered MSBuild instance: Visual Studio Enterprise 2017 15.0.26228.4 - "e:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin"
    همانطور که در این لاگ نیز مشخص است، Registered MSBuild را از نمونه‌ی قدیمی نصب شده‌ی VS 2017 انتخاب کرده‌است (و نه از پوشه‌ی omnisharp\msbuild\15.0\Bin مخصوص خودش).
    بنابراین اگر VS 2017 خود را به روز رسانی نکرده باشید، این موتور قدیمی MSBuild، سبب تداخل خواهد شد و خطاهایی مانند عدم یافت شدن نوع void ،int و امثال آن‌را مشاهده می‌کنید. در اینجا یا باید VS 2017 خود را به روز رسانی کنید و یا کلا آن‌را از سیستم حذف کنید. البته قرار است این تداخل در نگارش بعدی این افزونه برطرف شود.

    روش مشاهده‌ی لاگ فوق نیز به صورت ذیل است:
    VS Code ->  select View->Output -> select "OmniSharp Log"


    این مشکل در نگارش 1.13.1 برطرف شده‌است.

    • #
      ‫۳ سال و ۱ ماه قبل، دوشنبه ۲۸ تیر ۱۴۰۰، ساعت ۲۰:۱۷
      سلام من از vscode نسخه 1.58.2 استفاده میکنم و همچنین ویژوال استودیوی 2019 نسخه 16.9.4 هم تو سیستمم نصبه ولی تو vscode وقتی حتی یه پروژه console یا هر پروژه دیگه ای که ایجاد میکنم به هیچ عنوان intellisence  و نمیشناسه. پروژه build و run میشه اما intellisence  ندارم ! ممکنه راهنمایی بفرمائید. تشکر
      • #
        ‫۳ سال و ۱ ماه قبل، دوشنبه ۲۸ تیر ۱۴۰۰، ساعت ۲۳:۰۷
        لاگی را که عنوان شد بررسی کردید؟ علت عدم بارگذاری کامل افزونه حتما در آن وجود دارد؛ مانند رخ‌دادن timeout
        برای رفع آن، به مسیر زیر مراجعه کنید (این مسیر را در run ویندوز وارد کنید):
         %APPDATA%\Code\User
        بعد این فایل settings را جایگزین نمونه‌ی موجود کنید: vscode-settings.zip
        • #
          ‫۳ سال و ۱ ماه قبل، دوشنبه ۲۸ تیر ۱۴۰۰، ساعت ۲۳:۲۱
          بله بررسی کردم فایل setting رو جایگزین کردم و بعد از اعمال آن شاهد همان لاگ قبلی با کلی مشکلات هستم
          لاگ :
          It was not possible to find any installed .NET SDKs.
          Install a .NET SDK from:
            https://aka.ms/dotnet-download

          • #
            ‫۳ سال و ۱ ماه قبل، دوشنبه ۲۸ تیر ۱۴۰۰، ساعت ۲۳:۲۸
            اصل لاگ شما همین سه سطر فوق است که عنوان می‌کند NET SDK. را پیدا نمی‌کند. آخرین نگارش SDK را از اینجا دریافت و نصب کنید (مانند).
            • #
              ‫۳ سال و ۱ ماه قبل، سه‌شنبه ۲۹ تیر ۱۴۰۰، ساعت ۰۰:۰۲
              دات نت sdk نصبه. و وقتی dotnet --version تو cmd میگیرم میشناسه. حتی پروژه‌ها رو با dotnet cli ایجاد میکنم.
              dotnet 5.0.302 نصبه تو سیستم. برای من هم جای سواله که چرا نمیشناسه تو vscode و بهم میگه باید نصب کنی!
              تو vscode نباید تنظیماتی مبنی بر مسیر sdk برای omnisharp مشخص بشه؟
              • #
                ‫۳ سال و ۱ ماه قبل، سه‌شنبه ۲۹ تیر ۱۴۰۰، ساعت ۰۱:۵۲
                احتمال دارد که دو نسخه‌ی 32 بیتی و 64 بیتی از دات نت بر روی سیستم شما نصب هست و همچنین مسیر 32 بیتی به اشتباه به path ویندوز اضافه شده. این نسخه‌ی 32 بیتی باید حذف شود. اطلاعات بیشتر
                به صورت خلاصه، متغیرهای محیطی ویندوز را باز کنید (System Environment). بعد متغیر Path را بررسی کنید که آیا به مسیر
                C:\Program Files (x86)\dotnet
                اشاره می‌کند؟ اگر بله، آن‌را به
                C:\Program Files\dotnet
                ویرایش کنید.
            • #
              ‫۳ سال و ۱ ماه قبل، سه‌شنبه ۲۹ تیر ۱۴۰۰، ساعت ۰۱:۳۴
              لینک بالا رو دانلود و نصب کردم ولی جواب نداد. که لاگش میگه شما 2 تا msbuild تو سیستم نصب داری و بنظر باید مسیر msbuild رو توی vscode تنظیم کرد.
               Located 2 MSBuild instance(s)
                          1: Visual Studio Enterprise 2019 16.10.31424.327 16.10.2 - "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin"
                          2: StandAlone 17.0.0 - "c:\Users\meysams\.vscode\extensions\ms-dotnettools.csharp-1.23.13\.omnisharp\1.37.12\.msbuild\Current\Bin"
              جایی برای تنظیمش وجود داره ؟ یعنی باید تو تنظیمات workspace و یا user قابل انجامه؟
  • #
    ‫۵ سال و ۷ ماه قبل، یکشنبه ۲۱ بهمن ۱۳۹۷، ساعت ۱۷:۰۷
    ایجاد پروژه‌های Net Core. توسط کتابخانه yeoman که شامل انواع قالب‌های آماده است.

    yeoman 

  • #
    ‫۳ سال و ۱۰ ماه قبل، پنجشنبه ۱ آبان ۱۳۹۹، ساعت ۱۴:۰۳
    نکته : اگر نیاز دارید در نوار آدرس بالای صفحه دسترسی به  Windows Terminal  داشته باشید به مانند cmd توضیح داده شده در این مطلب :

    ویندوز ترمینال رو باز کرده به قسمت "Settings"  بروید.
    فایل profiles.json را ویرایش کرده و starting directory را به آن اضافه نمایید.
    "profiles": {
        "defaults": {
           // Put settings here that you want to apply to all profiles
           "startingDirectory": "."
        }...
     در نوار آدرس بالای صفحه تایپ کنید wt به این صورت بلافاصله  Windows Terminal  در پوشه‌ی جاری در دسترس خواهد بود .



     
  • #
    ‫۳ سال و ۶ ماه قبل، یکشنبه ۳ اسفند ۱۳۹۹، ساعت ۰۴:۱۷
    نکته تکمیلی
    اگر فقط یک فایل task (موجود در پوشه vscode.) داشته باشید با هر بیلد پروژه با دکمه‌های (CTRL + SHIFT + B) باید آن را انتخاب کنید، که در صورتیکه اگر فقط یک فایل task برای بیلد داشته باشین باید با هر بیلد پروژه اون فایل task ی که کار بیلد رو براتون انجام میده انتخاب کنین.

    برای پیشفرض قرار دادن آن میتوان کد ذیل را در فایل task.json :
    "group": "build"
     به این کد تغییر داد : ( + )
    "group": {
            "kind": "build",
            "isDefault": true
    }

  • #
    ‫۳ سال و ۶ ماه قبل، دوشنبه ۴ اسفند ۱۳۹۹، ساعت ۱۶:۰۳
    افرایش سرعت در نوشتن صفت (Attribute)‌های ویوو مدل ها
    در اکثر پروژه‌ها، متن خطای اکثر ویوو مدل‌ها شبیه هم است و تفاوت خاصی ندارند؛ مثلا اتریبیوت Required، متن خطایش معمولا با این مضمون است: "لطفا فیلد ... را وارد نمایید." ما میتوانیم تمام این متن‌های خطاها را در جایی دیگر تعریف و در متن خطای اتریبیوت‌هایمان از آن استفاده کنیم که باعث میشود بعدا اگر خواستیم متن خطا‌ها را تغییر دهیم (مثلا در مورد اتریبیوت Required متن "لطفا فیلد ... را وارد نمایید" را با * عوض کنیم) در تمام پروژه این تغییر اعمال میشود و دیگر نیازی نیست تمامی متن خطاها را یکی یکی تغییر دهیم و نگهداری کد‌ها برای بعد راحت‌تر میشود.
    برای شروع یک کلاس را برای متن خطاهای اتریبیوت‌هایمان تعریف میکنیم:
    public static class AttributesErrorMessages
    {
        public const string RequiredMessage = "لطفا {0} را وارد نمایید";
        public const string MinLengthMessage = "{0} نباید کمتر از {1} کاراکتر باشد";
        public const string MaxLengthMessage = "{0} نباید بیشتر از {1} کاراکتر باشد";
        public const string RegularExpressionMessage = "{0} را به درستی وارد نمایید";
        public const string StringLengthMessage = "{0} باید بین {2} کاراکتر و {1} کاراکتر باشد";
        public const string RemoteMessage = "با این {0} قبلا ثبت نام شده است";
    }
    حال برای تعریف هر ویوو مدل تنها کافی است آن را تعریف و در بالای آن، از اتریبیوت دلخواه استفاده و متن ارور آن را مطابق کلاس فوق وارد میکنیم، مثلا:
    [StringLength(110, MinimumLength = 5, ErrorMessage = AttributesErrorMessages.StringLengthMessage)]
    public string TestProp { get; set; }
    حال میتوان کار را ساده‌تر نیز کرد و تمام اتریبیوت‌ها را به یک قطعه‌کد (Snippet) تبدیل کرد. برای این کار از طریق File>Preferences وارد منوی User Snippet میشویم و بعد زبان سی شارپ را انتخاب و بعد Snippet‌های خود را اضافه میکنیم:
    {
       "Required":{
          "prefix":"required",
          "body":[
             "[Required(ErrorMessage = AttributesErrorMessages.RequiredMessage)]"
          ],
          "description":"Required attribute"
       },
       "Max Length":{
          "prefix":"maxlength",
          "body":[
             "[MaxLength(${1:number}, ErrorMessage = AttributesErrorMessages.MaxLengthMessage)]"
          ],
          "description":"Max length attribute"
       },
       "Min Length":{
          "prefix":"minlength",
          "body":[
             "[MinLength(${1:number}, ErrorMessage = AttributesErrorMessages.MinLengthMessage)]"
          ],
          "description":"Min length attribute"
       },
       "String Length":{
          "prefix":"stringlength",
          "body":[
             "[StringLength(${1:maximumNumber}, MinimumLength = ${2:minmumNumber}, ErrorMessage = AttributesErrorMessages.StringLengthMessage)]"
          ],
          "description":"String length attribute"
       },
       "Email Address":{
          "prefix":"emailaddress",
          "body":[
             "[EmailAddress(ErrorMessage = AttributesErrorMessages.RegularExpressionMessage)]"
          ],
          "description":"Email address attribute"
       },
       "Regular Expression":{
          "prefix":"regularexpression",
          "body":[
             "[RegularExpression(\"${1:patternString}\", ErrorMessage = AttributesErrorMessages.RegularExpressionMessage)]"
          ],
          "description":"Regular expression attribute"
       },
       "Remote Expression":{
          "prefix":"remote",
          "body":[
             "[Remote(\"${1:action}\", \"${2:controller}\", ErrorMessage = AttributesErrorMessages.RemoteMessage)]"
          ],
          "description":"Remote attribute"
       }
    }
    حال تنها کافی است اسم اتریبیوت مورد نظر را تایپ کنیم و آن Snippet را از پنجره Intellisense انتخاب کنیم.
  • #
    ‫۱۰ ماه قبل، سه‌شنبه ۲۳ آبان ۱۴۰۲، ساعت ۱۳:۳۲
    در ادامه یکی از فایل‌های #C آن‌را گشوده و منتظر شوید تا کار دریافت خودکار بسته‌های مرتبط با افزونه‌ی #C ایی 
    موقع دریافت اکستنشن‌ها به ارور زیر برخورد می‌کنم.
    The editor could not be opened due to an unexpected error: XHR timeout: undefinedms
    با ش.ک.ن‌ها مشکل حل می‌شود اما متاسفانه پایدار نیستند. راه حل بهتری به نظرتان می‌رسد؟
    البته برای برخی از اکستنشن‌ها یک پیام دیگر می‌آید که اگر مایلید به صورت دستی فایل .vsxl رو دانلود کنید و نصب کنید که خوب راهگشاست. اما برای بعضی از اکستنشن‌ها این پیام نمی‌آید.