حسین احمدی
بنیانگذار توسینسو و برنامه نویس و توسعه دهنده ارشد وب

dotnet cli چیست؟ آموزش خط فرمان دات نت

خط فرمان دات نت یا dotnet cli ابزاری است که توسط مایکروسافت به همراه .net core معرفی شد. این ابزار امکاناتی از قبیل ایجاد پروژه های جدید، build کردن و اجرای پروژ ها را در اختیار توسعه دهندگان قرار میدهد. نکته دیگه ای که باید ذکر کنیم این هست که این ابزار فقط مختص سیستم عامل ویندوز نیست و شما با نصب .net sdk در سایر پلتفرم ها مثل لینوکس به dotnet cli دسترسی خواهید داشت. در این مطلب با برخی از ویژگی های dotnet cli آشنا خواهیم شد.

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران

برای استفاده از این دستور می توانید از محیط command prompt یا powershell استفاده کنید. اگر از ویندوز 11 استفاده می کنید در windows terminal هم این دستور قابل استفاده هست. در برنامه vs code از پنجره terminal می تونید به دستور dotnet دسترسی داشته باشید.

برای استفاده از dotnet cli باید dotnet core sdk رو از این لینک دانلود و نصب کنید.

در ابتدا برای اینکه مطمئن بشیم دستور dotnet به درستی کار می کنه در خط فرمان دستور زیر رو بنویسید:

> dotnet --version
6.0.100

دستور بالا نسخه جاری .net core که بر روی سیستم نصب هست رو نمایش میده و می تونیم مطمئن بشیم که دستور dotnet بدون مشکل کار می کنه

برای ایجاد یک solution جدید، پروژه های جدید یا آیتم های جدید داخل پروژه میتونیم از دستور dotnet new استفاده کنیم. برای مثال، فرض کنید قصد دارید یک پروژه جدید با نام HelloTosinso ایجاد کنیم. ابتدا یک پوشه برای پروژه ایجاد می کنیم:

> md HelloTosinso
> cd .\HelloTosinso\
> dotnet new console
The template "Console App" was created successfully.

Processing post-creation actions...
Running 'dotnet restore' on D:\CourseProjects\HelloTosinso\HelloTosinso.csproj...
  Determining projects to restore...
  Restored D:\CourseProjects\HelloTosinso\HelloTosinso.csproj (in 133 ms).
Restore succeeded.

با اجرای دستور بالا پروژه برای ما ایجاد شد و فایل های زیر داخل پوشه HelloTosinso برای ما ایجاد می شوند:

> dir


    Directory: D:\CourseProjects\HelloTosinso


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----        12/19/2021   9:35 AM                obj
-a----        12/19/2021   9:35 AM            249 HelloTosinso.csproj
-a----        12/19/2021   9:35 AM            105 Program.cs

همانطور که در بالا مشاهده کردید ما یک پروژه نوع Console ایجاد کردیم و این کار بوسیله قرار دادن عنوان console جلوی دستور dotnet new انجام شد. بوسیله دستور dotnet انواع پروژه های مختلفی را می توان ایجاد کرد. برای مشاهده لیست پروژه های قابل ایجاد از دستور زیر استفاده کنید:

> dotnet new --list
These templates matched your input:

Template Name                                 Short Name           Language    Tags
--------------------------------------------  -------------------  ----------  --------------------------
ASP.NET Core Empty                            web                  [C#],F#     Web/Empty
ASP.NET Core gRPC Service                     grpc                 [C#]        Web/gRPC
ASP.NET Core Web API                          webapi               [C#],F#     Web/WebAPI
ASP.NET Core Web App                          webapp,razor         [C#]        Web/MVC/Razor Pages
ASP.NET Core Web App (Model-View-Controller)  mvc                  [C#],F#     Web/MVC
ASP.NET Core with Angular                     angular              [C#]        Web/MVC/SPA
ASP.NET Core with React.js                    react                [C#]        Web/MVC/SPA
ASP.NET Core with React.js and Redux          reactredux           [C#]        Web/MVC/SPA
Blazor Server App                             blazorserver         [C#]        Web/Blazor
Blazor WebAssembly App                        blazorwasm           [C#]        Web/Blazor/WebAssembly/PWA
Class Library                                 classlib             [C#],F#,VB  Common/Library
Console App                                   console              [C#],F#,VB  Common/Console
.
.
.

بوسیله آرگومان output میتونیم عنوان پوشه برای ایجاد پروژه رو مشخص کنیم. در بخش قبلی ما ابتدا یک پوشه با نام HelloTosinso ایجاد کردیم و داخلش پروژه رو new کردیم. بوسیله دستور زیر عملیات ساخت پوشه HelloTosinso در هنگام ساخت پروژه انجام میشه:

> dotnet new console --output HelloTosinso

زبان پیش فرض در زمان ساخت ایجاد پروژه زبان سی شارپ هست، اما بوسیله سوئیچ lang می تونیم زبان رو مشخص کنیم:

> dotnet new console -lang "VB" --output VBConsoleApp

دستور بالا یک پروژه از نوع console و به زبان Visual Basic ایجاد خواهد کرد.

بعد از ایجاد یک پروژه، بوسیله دستور dotnet run می تونیم به راحتی پروژه مورد نظر رو اجرا کنیم، وارد پوشه HelloTosinso که در مرحله قبل ایجاد کردیم شده و دستور زیر رو اجرا می کنیم:

> dotnet run
Hello, World!

همونطور که مشاهده کردید خروجی Hello, World نمایش داده شد. اگر فایل program.cs رو باز کنید محتویات زیر رو خواهید دید (این محتویات بر اساس نسخه dotnet که استفاده می کنید ممکنه فرق داشته باشه):

// See https://aka.ms/new-console-template for more information
Console.WriteLine("Hello, World!");

محتویات فایل رو به صورت زیر تغییر بدید:

// See https://aka.ms/new-console-template for more information
Console.WriteLine("Hello, Welcome to TOSINSO.COM");

مجدد دستور dotnet run رو اجرا کنید:

> dotnet run
Hello, Welcome to TOSINSO.COM

برای مثال بعدی یک پروژه ساده از نوع mvc ایجاد می کنیم:

> dotnet new mvc --output TosinsoWebsite
The template "ASP.NET Core Web App (Model-View-Controller)" was created successfully.
This template contains technologies from parties other than Microsoft, see https://aka.ms/aspnetcore/6.0-third-party-notices for details.

Processing post-creation actions...
Running 'dotnet restore' on D:\CourseProjects\TosinsoWebsite\TosinsoWebsite.csproj...
  Determining projects to restore...
  Restored D:\CourseProjects\TosinsoWebsite\TosinsoWebsite.csproj (in 88 ms).
Restore succeeded.

وارد پوشه TosinsoWebsite شده و دستور dotnet run رو اجرا می کنیم:

> dotnet run
Building...
info: Microsoft.Hosting.Lifetime[14]
      Now listening on: https://localhost:7031
info: Microsoft.Hosting.Lifetime[14]
      Now listening on: http://localhost:5169
info: Microsoft.Hosting.Lifetime[0]
      Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
      Hosting environment: Development
info: Microsoft.Hosting.Lifetime[0]
      Content root path: D:\CourseProjects\TosinsoWebsite\

داخل مرورگر آدرس https://localhost:7031 رو باز کنید، همونطور که مشاهده می کنید به سادگی یک پروژه از نوع ASP.NET Core مبتنی بر MVC ایجاد و اجرا کردیم.

تا اینجا ما پروژه های ساده ای ایجاد کردیم، اما فرض کنیم بخواییم یک Solution به همراه چند پروژه داشته باشیم. در ابتدا یک Solution ایجاد می کنیم:

> dotnet new sln --output ShopSolution
The template "Solution File" was created successfully.

وارد پوشه ShopSolution شده و دستورات زیر رو به ترتیب اجرا می کنیم:

> dotnet new mvc --name "ShopSolution.Client" --output "ShopSolution.Client"
> dotnet new webapi --name "ShopSolution.Api" --output "ShopSolution.Api"
> dotnet sln add .\ShopSolution.Api\ShopSolution.Api.csproj
> dotnet sln add .\ShopSolution.Client\ShopSolution.Client.csproj

با اجرای دستورات بالا دو پروژه یکی از نوع mvc و یکی از نوع webapi ایجاد کرده و آن ها رو به solution اضافه می کنیم.

برای build کردن solution کافیه دستور زیر رو اجرا کنیم:

> dotnet build

همچنین برای build کردن یک پروژه می تونیم از دستور زیر استفاده کنیم:

> dotnet build .\ShopSolution.Client\ShopSolution.Client.csproj

همچنین برای اجرای یکی از پروژه ها از دستور زیر استفاده می کنیم:

> dotnet run --project .\ShopSolution.Client\ShopSolution.Client.csproj

برای اضافه کردن پکیج های nugget به پروژه، از دستور زیر استفاده می کنیم:

>dotnet add package <PackageName>

برای مثال، فرض کنیم قصد داریم پکیج dapper رو به پروژه webapi که در ShopSolution ایجاد کردیم، اضافه کنیم. بوسیله دستور زیر اینکار رو انجام میدیم:

> dotnet add .\ShopSolution.Api\ShopSolution.Api.csproj package dapper
  Determining projects to restore...
  Writing C:\Users\Hossein Ahmadi\AppData\Local\Temp\tmpC81D.tmp
info : Adding PackageReference for package 'dapper' into project '.\ShopSolution.Api\ShopSolution.Api.csproj'.
info :   GET https://api.nuget.org/v3/registration5-gz-semver2/dapper/index.json
info :   OK https://api.nuget.org/v3/registration5-gz-semver2/dapper/index.json 1553ms
info : Restoring packages for D:\CourseProjects\ShopSolution\ShopSolution.Api\ShopSolution.Api.csproj...
info :   GET https://api.nuget.org/v3-flatcontainer/dapper/index.json
info :   OK https://api.nuget.org/v3-flatcontainer/dapper/index.json 1061ms
info :   GET https://api.nuget.org/v3-flatcontainer/dapper/2.0.123/dapper.2.0.123.nupkg
info :   OK https://api.nuget.org/v3-flatcontainer/dapper/2.0.123/dapper.2.0.123.nupkg 215ms
info : Installed Dapper 2.0.123 from https://api.nuget.org/v3/index.json with content hash RDFF4rBLLmbpi6pwkY7q/M6UXHRJEOerplDGE5jwEkP/JGJnBauAClYavNKJPW1yOTWRPIyfj4is3EaJxQXILQ==.
info : Package 'dapper' is compatible with all the specified frameworks in project '.\ShopSolution.Api\ShopSolution.Api.csproj'.
info : PackageReference for package 'dapper' version '2.0.123' added to file 'D:\CourseProjects\ShopSolution\ShopSolution.Api\ShopSolution.Api.csproj'.
info : Committing restore...
info : Writing assets file to disk. Path: D:\CourseProjects\ShopSolution\ShopSolution.Api\obj\project.assets.json
log  : Restored D:\CourseProjects\ShopSolution\ShopSolution.Api\ShopSolution.Api.csproj (in 3.52 sec).

یکی از دستورات کاربردی دیگر، restore هست که تمامی وابستگی ها و پکیج پروژه ها پروژه ها رو بازگردانی (معنی فارسی restore) میکنه:

> dotnet restore

در این مطلب با مهمترین بخش های دستور dotnet آشنا شدیم. برای آشنایی بیشتر می تونید به این صفحه از سایت msdn مراجعه کنید و مستندات جامع در باره این دستور رو مطالعه کنید. امیدوارم این مطلب مورد استفادتون قرار گرفته باشه.

  • معنی CLI چیست

    عبارت CLI مخفف Command Line Interface بوده و به ابزاری گفته میشه که به شما این امکان رو میده تا بوسیله محیط هایی مانند Command Prompt یا Powershell یا محیط bash لینوکس به یکسری امکانات دسترسی داشته باشید. ابزار هایی مثل dotnet یا angular با ابزار cli ارائه میشن.
  • آیا یاد گرفتن dotnet cli ضروری است؟

    یاد گیری dotnet cli ضروری نیست، اما اگر با این ابزار آشنایی داشته باشید خیلی جاها می تونه باعث افزایش سرعت کار شما بشه و نیازی نباشه تا از محیط هایی مثل Visual Studio استفاده کنید.

حسین احمدی
حسین احمدی

بنیانگذار توسینسو و برنامه نویس و توسعه دهنده ارشد وب

حسین احمدی ، بنیانگذار TOSINSO ، توسعه دهنده وب و برنامه نویس ، بیش از 12 سال سابقه فعالیت حرفه ای در سطح کلان ، مشاور ، مدیر پروژه و مدرس نهادهای مالی و اعتباری ، تخصص در پلتفرم دات نت و زبان سی شارپ ، طراحی و توسعه وب ، امنیت نرم افزار ، تحلیل سیستم های اطلاعاتی و داده کاوی ...

نظرات