دستورات CLI در NET.

یکشنبه 7 دی 1399

Visual Studio یک محیط بصری برای مدیریت پروژه های ما است که دات نت کار ها خیلی از آن استفاده می کنند و در میان برنامه نویس ها بسیار محبوب است. اما همه جا به این IDE قدرتمند دسترسی نداریم. دستورات CLI دات نت به ما کمک می کنند تا بدون استفاده از ویژوال استدیو پروژه های خود رh مدیریت کنیم. در ادامه این مقاله با نحوه استفاده کردن از انها آشنا می شویم.

دستورات CLI در NET.

 

 CLI مخفف کلمه Command Line Interface است که مکانیزمی برای برقرای ارتباط با سیستم عامل و برنامه ها و انجام دستور های خاص بوسیله تایپ کردن دستور ها است. ما دات نت کار ها ، معمولا از محیط گرافیکی و بصری Visual Studio استفاده می کنیم . (خود کلمه "Visual Studio" یعنی محیط بصری 😀)

در محیط ویژوال استدیو، ما می توانیم کار های مختلفی انجام بدهیم مثل ایجاد پروژه و یا سلوشن جدید.

خب حالا بر فرض مثال شما می خوای در جا یه پروژه بنویسی که خیلی کوچیک نیست ولی مثلا به یک پکیج احتیاج داره و یا جاهای دیگه (بهش می رسین !) لازمت میشه که از ويزوال استدیو استفاده کنی. چون ويژوال استدیو یکم سنگینه نمی شه روی هر سیستمی نصب کرد پس باونجا کار ما گیر می کنه.

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

مثلاما توی سیستم عامل لینوکس نمی تونیم از Visual Studio استفاده کنیم ولی اونجا ادیتور عالیVSCode  رو داریم. خب VSCode یک ترمینال داره که دقیقا همین دستورات رو اجرا می کنه (یه چیزی شبیه پاور شِل ویندوز هست!) و ما می توانیم خیلی راحت پروژه های خودمون رو ایجاد کنیم ، دیباگ کنيم ، خروجی بگیریم و ...

من می خوام پرکاربرد ترین و کاربردی ترین دستورات CLI دات نت رو یادتون بدم.

قبلش ما باید .Net Core رو داشته باشیم. .Net 5.0 هم اگر نصب کنید عالی میشه.

برای دانلود می تونید از این لینک استفاده کنید

وقتی ما توی ويژوال استدیو یک پروژه جدید ایجاد می کنیم. ابتدا ویژوال استدیو برای ما یک Solution ایجاد می کنه و سپس یه پروژه ايجاد می کنه و اون پروژه رو میریزه توی اون سلوشن که ایجاد کرده بود و بعد هم ما روی اون پروژه تغییر ایجاد می کنیم و سپس پروژمون رو Build می کنیم و اون رو اجرا می کنیم و تست و دیباگینگ و بعدش هم اون رو بصورت Release خروجی می گیریم و اینجا روند توسعه یک نرم افزار تموم میشه. می مونه تا بعدا بخواهیم دوباره روش آپدیت بزنیم و اینا که دوباره می آیم و اون سلوشن رو باز می کنیم تغییر میدیم و ...

حالا بیایید با  CLIهمین کار های رو انجام بدیم!

خب برای شروع کار ، یک پوشه درست می کنیم و یه اسمی روش میذاریم (ترجیحا اسم پروژه). ما اینجا از اسم SayHello استفاده می کنیم. (می خواهیم یک برنامه بنویسیم که اسم از کاربر دریافت کند (مثلا Ali) و به کاربر بگوید Hello Ali)

حالا Power Shell رو باز می کنیم و اینجا روند جذاب و قشنگه دستور نویسی ها شروع میشه.

ما به یک سلوشن احتیاج داریم ولی باید ابتدا به محل پوشه ای که ساختیم برویم . برای اینکار دو راه وجود دارد. راه اول این است که کلید Shift را نگه داریم و روی پوشه کلیک راست کنیم و گزینه Open Power Shell Window Here را بزنیم :

 

 

حالا پاورشل ویندوز در محل پوشه ما باز میشه

اما یک راه دیگر هم هست اونم اینه که با دستور cd به محل پوشه خودمون بریم :

حالا ما در محل پوشه خودمون هستیم. و اینجا باید به دات نت دستور بدیم. برای ایجاد سلوشن از دستور زیر استفاده می کنیم :

با این کار یک سلوشن در اون پوشه ای که ساختیم ایجاد میشه. سلوشن جدید همنام با پوشه است.

با وارد کردن دستور بالا ، چنین چیزی رو مشاهده خواهید کرد :

اگر به محل پوشه بروید می بینید یک سلوشن خالی هم نام با پوشه ایجاد شده و ما هنوز پروژه ای در این سلوشن نداریم :

 

 

 

 

اگر خواستید سلوشن ایجاد شده ، یک اسم دیگر داشته باشد، می توانید چنین دستوری بنویسید :

 

 

در اینجا ما باید پروژه جدید ایجاد کنیم.

دستور dotnet new برای ایجاد یک چیز جدید است. حالا می تونه اون چیز یک کنسول اپ باشه ، یک سلوشن باشه(که در بالا ازش برای ایجاد یک سلوشن جدید ایجاد کردیم) و...

اینجا یک جدول داریم که به ما نشون میده چه چیز هایی رو می تونیم با dotnet new ایجاد کنیم. فقط کافیه اون Short Name هر کدوم که خواستیم رو جلوی دستور dotnet new بنویسیم:

TemplatesShort nameLanguageTagsIntroduced
Console Applicationconsole[C#], F#, VBCommon/Console1.0
Class libraryclasslib[C#], F#, VBCommon/Library1.0
WPF Applicationwpf[C#], VBCommon/WPF3.0 (5.0 for VB)
WPF Class librarywpflib[C#], VBCommon/WPF3.0 (5.0 for VB)
WPF Custom Control Librarywpfcustomcontrollib[C#], VBCommon/WPF3.0 (5.0 for VB)
WPF User Control Librarywpfusercontrollib[C#], VBCommon/WPF3.0 (5.0 for VB)
Windows Forms (WinForms) Applicationwinforms[C#], VBCommon/WinForms3.0 (5.0 for VB)
Windows Forms (WinForms) Class librarywinformslib[C#], VBCommon/WinForms3.0 (5.0 for VB)
Worker Serviceworker[C#]Common/Worker/Web3.0
Unit Test Projectmstest[C#], F#, VBTest/MSTest1.0
NUnit 3 Test Projectnunit[C#], F#, VBTest/NUnit2.1.400
NUnit 3 Test Itemnunit-test[C#], F#, VBTest/NUnit2.2
xUnit Test Projectxunit[C#], F#, VBTest/xUnit1.0
Razor Componentrazorcomponent[C#]Web/ASP.NET3.0
Razor Pagepage[C#]Web/ASP.NET2.0
MVC ViewImportsviewimports[C#]Web/ASP.NET2.0
MVC ViewStartviewstart[C#]Web/ASP.NET2.0
Blazor Server Appblazorserver[C#]Web/Blazor3.0
Blazor WebAssembly Appblazorwasm[C#]Web/Blazor/WebAssembly3.1.300
ASP.NET Core Emptyweb[C#], F#Web/Empty1.0
ASP.NET Core Web App (Model-View-Controller)mvc[C#], F#Web/MVC1.0
ASP.NET Core Web Appwebapp, razor[C#]Web/MVC/Razor Pages2.2, 2.0
ASP.NET Core with Angularangular[C#]Web/MVC/SPA2.0
ASP.NET Core with React.jsreact[C#]Web/MVC/SPA2.0
ASP.NET Core with React.js and Reduxreactredux[C#]Web/MVC/SPA2.0
Razor Class Libraryrazorclasslib[C#]Web/Razor/Library/Razor Class Library2.1
ASP.NET Core Web APIwebapi[C#], F#Web/WebAPI1.0
ASP.NET Core gRPC Servicegrpc[C#]Web/gRPC3.0
dotnet gitignore filegitignore Config3.0
global.json fileglobaljson Config2.0
NuGet Confignugetconfig Config1.0
Dotnet local tool manifest filetool-manifest Config3.0
Web Configwebconfig Config1.0
Solution Filesln Solution1.0
Protocol Buffer Fileproto Web/gRPC3.0

 

ساختار کلی دستورات CLI دات نت بصورت زیر است :

1.      کلمه dotnet

2.      دستور (مثلا ایجاد یک سلوشن جدید (dotnet new sln))

3.      آرگومان ها

4.      تنظیمات (مثلا اینکه با چه زبانی از دات نت (زبان های دات نت مثل C# , F# , VB) ساخته بشه)

یا به عبارتی :

dotnet <command> <argument> <options>

حالا یگه بریم سراغ کار خودمون یعنی ساختن یک پروژه کنسول. همونطور که می دونید برای ساخت یک پروژه کنسول ، از دستور زیر استفاده می شود :

dotnet new console

هنوز مونده صبر کنید!

حالا ما باید option هایاین پروژه کنسولی رو بهش بدیم.

اگر همینجوری اینتر بزنید و دستور اجرا بشه با تنظیمات پیشفرض پروژه می سازه.

ولی خب من می خوام تنظیماتش رو هم یاد بگیرید که فول بشید.

اگر شما جلو دستور dotnet new console عبارت h- رو بزنید ، با همچین چیزی مواجه خواهید شد :

 

این در واقع به ما تمام تنظیمات برای یک پروژه رو میگه که به همشون احتیاج نداریم

ما الان فقط به چند آپشن مهم احتیاج داریم که از اونا زیاد استفاده میشه

آپشن n- یا name- :

     این آپشن برای گذاشتن اسم روی پروژه یا فایل مورد نظرمون هست  (مثل همون دستوری که واسه درست کردن سلوشن با اسم دلخواه نوشتیم!)

آپشن -lang یا –language :

     این آپشن برای تنظیم کردن زبان برنامه نویسی پروژه است که از بین زبان های C#  ، F# و VisualBasic انتخاب میشه :

در دستور بالا ، ما زبانمون رو ويژوال بيسيک انتخاب کرديم (نگران نباشید در اصل می خوام سی شارپ کار کنم). برای اینکار مخفف کلمه Visual Basic که میشه VB رو در دوتا دابل کوتیشن

خب این دوتا رو گفتیم بریم سراغ کار اصلی که یک پروژه سی شارپ ایجاد کنیم و...

دیگه می دونید باید چه دستوری بنویسید :

حالا ما یک پروژه به اسم sayhello-app داریم که با زبان سی شارپ قراره نوشته بشه.

حالا یه نگاهی به اون پوشه اولی که ساختیم میندازیم می بینم که یک پوشه به اسم sayhello-app (اسم پروژه که ایجاد کردیم) داریم :

داخل پوشه sayhello-app رو هم یه نگاه میندازیم :

 

به تايپ هاشون نگاه کنید.

دقیقا شبیه پروزه هایی که با ویژوال استدیو می سازیم شده.

حالا باید پروژمون رو به سلوشن (همون سلوشن که ساختیم) اضافه کنیم.

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

خب بزارید دستور بالا رو براتون تشریح کنم

قسمت اولش (dotnet sln) رو که کار کردیم بلد هستین. اون کلمه add که گفتیم برای این بوده که یک پروژه به سلوشنمون اضافه بشه.

بعدش اومدیم اسم پروژه رو گفتیم و بک اسلش ( / ) گذاشتیم تا از آرگومان بعدی جدا بشه

آرگومان بعدی مسیر فایل پروژه (در سی شارپ فایل پروژه با فرمت csproj ، در اف شارپ با فرمت fsproj و در ويژوال بیسیک با فرمت vsproj ذخیره می شود. این فایل شامل اطلاعات کلی از پروژه است)  هستش که نسبت به مکان سلوشن سنجیده میشه.

حالا پروژه ما به سلوشن اضافه شد و می تونیم این سلوشن رو با خود وطزوال استدیو هم باز کنیم

اما وقت برنامه نویسی رسیده

 (اینهمه کار کردیم ولی بدونید اینا رو که یاد بگیرید از خود ويژوال استدیو هم سریع تر می تونید پروژه بسازید و مدیریت کنید 😁)

فایل Program.cs (در اف شارپ Program.fs و در ويژوال بيسيک  فایل Program.vb ) رو با یک کد ادیتور باز می کنیم (با نوت پد ویندوز هم میشه ولی من از VSCode استفاده می کنم که ترمینالش هم بهتون نشون بدم.)

اگر خواستید با vscode کار کنید ابتدا در پوشه پروژتون یک کلیک راست کنید و گزینه Open with Code رو بزنید :

 

حالا پوشمون با ویژوال استدیو کد اجرا میشه :

 

وارد فایل پروگرام میشیم و خب اینجا برامون بک چیزایی رو به عنوان نمونه قرار داده.

چون ممکنه کسی که داره این مقاله رو می خونه سی شارپ کار نباشه و منم نمی خوام سی شارپ یاد بدم ، نمیگم چرا ولی همچین کدی رو می نویسیم :

حالا وقتشه که برنامه خودمون رو اجرا کنیم.

دوستان ما قبلا با power shell ویندوز دستوراتمون رو به دات نت می دادیم. ولی vscode فکر همه چیز رو کرده و یک ترمینال برامون قرار داده که دقیقا کار Power Shell رو انجام میده ولی اینجا دم دست تر هستش و من به عنوان برنامه نویس میگم : «خیلی کارم رو راحت و سریع کرده!»

حالا بریم سراغ ترمینال

برای ایجاد یک ترمینال جدید از منو Terminal گزینه New Terminal رو انتخاب می کنیم  تا برامون یک ترمینال جدید ایجاد بشه :

حالا دستوراتمون رو مستقیما توی ترمینال می نویسیم  :

 

برای اجرا کردن یک پروژه ، به پوشه ای که فایل پروژه در اون قرار داره می رویم و اونجا دستور dotnet run رو می نویسیم :

و حالا برنامه اجرا شده و ما باید بهش اسم بدیم تا اون بهمون سلام کنه :

فایل exe برنامه هم در پوشه \ SayHello\sayhello-app\bin\Debug\net5.0 قرار می گیره :

 

اگر هم خواستید تنظیم کنید که با چه framework ران کنه از f- استفاده کنید :

 

این جدول هم برای اسم CLI فریمورک ها : 

Target FrameworkTFM
.NET 5 (and .NET Core)netcoreapp1.0
netcoreapp1.1
netcoreapp2.0
netcoreapp2.1
netcoreapp2.2
netcoreapp3.0
netcoreapp3.1
net5.0*

دوستان این مقاله بیشتر محض آشنایی شما با CLI ها در دات نت بود. برای اینکه بهتر یاد بگیرید و بیشتر بدونید به مقاله های خود مایکروسافت هم یه نگاهی بندازید.

 

من هم فایل PDF این آموزش و سلوشن و پروژه ای که با هم ساختیم رو ضمیمه این مقاله می کنم که اگر کسی خواست دانلود کنه.

 

امیدوارم موفق باشید و برنامه هاتون به باگ نخوره 😉

 

 

فایل های ضمیمه

امير مهدی جبرئيلی

نویسنده 4 مقاله در برنامه نویسان
  • C#.net
  • 2k بازدید
  • 4 تشکر

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید

نظرات کاربران

برای درج نظر باید وارد سایت شوید