1395-04-11 01:31 C# & .Net Core 1 on CentOS 7
حاجی شریفی
مؤسس سایت
 
سلام
پیش از این در > این تاپیک < به شرح مختصری از dotNetCore پرداختیم.

حالا در این مقاله تحقیقاتی قصد داریم یک پروژه ساده Console با زبان سی شارپ و در VS2015 و تحت dotNetCore1 بسازیم و پس از کامپایل ، آن را به سیستم عامل های محبوب و قدرتمند CentOS-7 از خانواده لینوکس برده و اجرا کنیم.

لازم بذکر است که این کار با Notepad و بدون VS هم قابل انجام است.
حتی میتوان سورس کد پروژه را در همان CentOS نوشت و کامپایل واجرا کرد.
ولی در این مقاله قصد دور زدن VS را نداریم چون نمیتوان انکار کرد که در پروژه های واقعی و بزرگ وپیچیده ، عدم استفاده از VS خیلی سخت است، حداقل برای ما معتادان به VS سخت است!

فرض این مقاله بر توسعه و کامپایل در VS و انتقال خروجی به سایر سیستم عامل ها، گمانم واقعی تر وملموس تر است


***** مرحله صفر: مقدمات *****


قبل از شروع، پیشنهاد میشود، VS2015-U3 و dotNetCore1 Preview2 را عزیزان نصب کرده باشند که لینک های آن ، پیش از این تاپیک زیر ارائه شده بود:
/Forum/Home/Topic/13-Download-Visual-Studio

دانلود آخرین نسخه اصلی سیستم عامل CentOS
(دقت کنید که نسخه شما باید حداقل CentOS 7.1 باشد.)
https://www.centos.org/download


***** مرحله اول: تولید برنامه *****


کار را با NewProject آغاز میکنیم:


و سپس با کد بسیار ساده ای از یک ماشین حساب، پروژه را تزئین میکنیم!
//C# 
Console.WriteLine( "Enter Number1:" ) ;
double ? n1 = ReadDouble();
if (!n1.HasValue)
{
   Console.WriteLine( "Invalid number!" ) ;
   break ;
}

Console.WriteLine( "Enter Operator (+ - * /):" ) ;
char ? op = ReadOperator();
if (!op.HasValue)
{
   Console.WriteLine( "Invalid operator!" ) ;
   break ;
}

Console.WriteLine( "Enter Number2:" ) ;
double ? n2 = ReadDouble();
if (!n2.HasValue)
{
   Console.WriteLine( "Invalid number!" ) ;
   break ;
}

double result = 0.0;
switch (op.Value)
{
   case '+':
       result = n1.Value + n2.Value;
       break ;
   case '-':
       result = n1.Value - n2.Value;
       break ;
   case '/':
       result = n1.Value / n2.Value;
       break ;
   case '*':
       result = n1.Value * n2.Value;
       break ;
}

Console.WriteLine( $ "Result: {n1} {op} {n2} = {result}" ) ;

(نگران نباشید! سورس کامل در انتهای مقاله قابل دانلود است)

طبق معمول، پروژه را به کمک منوی Build یا فرمان Publish در Solution Explorer کامپایل میکنیم.
در هر دوصورت، خروجی کامپایل شده در زیرشاخه bin تولید میشود ولی نه با پسوند exe بلکه با پسوند dll !
برای پروژه ما خروجی به صورت دو فایل کامپایلی و تنظیمی زیر خواهد بود:
1)  Simorgh.DotNetCore.ConsoleApp.dll
2) Simorgh.DotNetCore.ConsoleApp.runtimeconfig.json


انتقال هر دواین فایل ها به سیستم عامل مقصد ضرروری است.
ولی من برای راحتی نام آنها را کمی کوتاه تر میکنم که صدالبته اگر با دقت انجام شود، مشکلی ایجاد نمیکند:
1)  SimorghApp.dll
2) SimorghApp.runtimeconfig.json


***** مرحله دوم: نصب dotNetCore در CentOS *****


برای کار کردن برنامه های dotNetCore در CentOS باید اول آن را نصب کرد.
مشابه نصب dotNetFramework که یکبار در ویندوز انجام شود کافی خواهد بود، نصب dotNetCore هم یکبار  نیاز است در CentOS نصب شود.

برای دانلود میتوانید به سایت زیر مراجعه کنید:
https://www.microsoft.com/net/download

اگر دقت کنید، خواهید دید دوبسته برای دانلود تحت CentOS وجود دارد:
dotNET Core SDK binaries
که کاملتر است و امکان کدنویسی و کامپایل و تهیه خروجی در همان CentOS را هم دارد.
و
dotNET Core binaries
که کوچکتر است وفقط با نصب آن میتوان برنامه های dotNetCore را اجرا کرد.

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

من مجدد پس از دانلود، نام فایل فوق را کمی کوتاه تر کردم و به dotnet-centos.tar.gz تغییرش دادیم تا در صدور خط فرمان ها راحت تر بتوان عمل کرد.
در واقع من فایل فوق را به همراه دو فایل خروجی پروژه در قالب یک CD یا فلش USB به CentOS منتقل کردم.
(در این نمونه من از فایل iso در شبیه ساز Hyper-V استفاده کردم)


برای نصب dotNetCore فرامین زیر را به دقت و ترتیب در کنسول یا ترمینال لینوکس وارد کنید:
(در واقع نصب فقط شامل Extract فایل ها و ثبت مسیر فایل اجرایی dotnet در مسیرهای محیطی لینوکس است)
sudo yum install libunwind libicu
sudo mkdir -p /opt/dotnet
sudo tar zxf /run/media/h2/SIMORGHDVD/dotnet-centos.tar.gz -C /opt/dotnet
sudo ln -s /opt/dotnet/dotnet /usr/local/bin

دقت کنید که در اولین sudo از شما گذرواژه خواسته خواهد شد و بعد هم بجای مسیر run/media/h2/SIMORGHDVD/dotnet-centos.tar.gz/ شما باید مسیر فایل خودتان را قرار دهید.


البته اگر قصد دانلود مستقیم dotNetCore را با خود CentOS و سپس نصب آن را دارید میتوانید بجای فرامین فوق از این مجموعه فرامین استفاده کنید:
(شاید هم اینطوری ساده تر باشد)
sudo yum install libunwind libicu
curl -sSL -o dotnet.tar.gz https://go.microsoft.com/fwlink/?LinkID=809131
sudo mkdir -p /opt/dotnet
sudo tar zxf dotnet.tar.gz -C /opt/dotnet
sudo ln -s /opt/dotnet/dotnet /usr/local/bin


***** مرحله سوم: اجرای برنامه *****


اگر مراحل قبلی به درستی انجام شده باشد، دیگر کار تمام است...
کافی است با فرمان معروف CD به محل برنامه بروید و برنامه را با فرمان dotnet اجرا کنید و از آن لذت ببرید.
cd /run/media/h2/SIMORGHDVD  
dotnet SimorghApp.dll



و امتحانی دیگر ...


دانلود سورس کد + خروجی کامپایل شده:
Simorgh.DotNetCore.ConsoleApp.zip

امیدوارم لذت ببرید.
شب خوش.
1395-08-08 18:08 تشکر
رضا اکبری استرآبادی

 
خیلی مفید بود استاد