วิธีการเรียกใช้แอปคอนโซล. NET Core จากบรรทัดคำสั่ง


215

ฉันมีคอนโซลแอป .NET dotnet publishหลักและมีการวิ่ง อย่างไรก็ตามฉันไม่สามารถหาวิธีเรียกใช้แอปพลิเคชันจากบรรทัดคำสั่ง คำใบ้ใด ๆ


บางทีนี่อาจช่วยได้: stackoverflow.com/questions/44074121/…
Bent Tranberg

คำตอบ:


274

ถ้ามันเป็นโปรแกรมกรอบขึ้นอยู่กับ (ค่าเริ่มต้น), dotnet yourapp.dllคุณเรียกใช้งานโดย

หากเป็นแอปพลิเคชันที่มีในตัวคุณจะสามารถใช้งานได้yourapp.exeบน Windows และ./yourappUnix

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับความแตกต่างระหว่างแอพทั้งสองประเภทให้ดูบทความ. NET Core Application Deploymentบน. Net Docs


22
มันวิเศษมากที่ต้องใช้เวลานานกว่าจะค้นพบมัน ฉันกำลังลองใช้คำสั่ง "dotnet run" ทุกชนิดเป็นต้นนี่เป็นที่แรกที่ฉันเจอการค้นหาจำนวนมากที่ให้การใช้งาน dotnet ที่ถูกต้องสำหรับการเรียกใช้คอนโซลแอปพลิเคชัน ทำไม Microsoft ทำให้. NET Core เป็นนักพัฒนาที่ไม่เป็นมิตร
เกลนโธมัส

2
@GlenThomas dotnet runถ้าคุณต้องการที่จะเรียกใช้โปรแกรมที่คุณกำลังพัฒนาคุณใช้ แล้วคุณมองที่ไหน คุณคาดหวังข้อมูลนี้ที่ไหน
svick

1
"dotnet run" ดูเหมือนจะไม่เป็นเช่นนั้นกับโครงการ. NET core โดยใช้ MSBuild csproj เซ็ตอัพรุ่นใหม่กว่าไฟล์ project.json เก่า
เกลนโธมัส

1
@GlenThomas นั่นไม่เป็นความจริงเลยdotnet runทำงานได้เหมือนกันสำหรับโครงการ csproj ใหม่เช่นเดียวกับ project.json
svick

5
@GlenThomas ไม่แน่ใจว่านี่เป็นปัญหาที่คุณมีอยู่หรือไม่ แต่เมื่อคุณลองใช้dotnet runตรวจสอบให้แน่ใจว่าคุณอยู่ในไดเรกทอรีโครงการไม่ใช่ไดเรกทอรีโซลูชัน
Ryan Lundy

46

คุณสามารถสร้าง EXE (สำหรับ Windows) ได้อย่างง่ายดายโดยไม่ต้องใช้คำสั่งการสร้างแบบเข้ารหัสใด ๆ คุณสามารถทำได้ใน Visual Studio

  1. คลิกขวาที่โครงการ App คอนโซลและเลือกเผยแพร่
  2. หน้าใหม่จะเปิดขึ้น (ภาพหน้าจอด้านล่าง)
  3. กดปุ่มConfigure ...
  4. แล้วเปลี่ยนโหมดการปรับใช้เพื่อให้ตนเองมีหรือกรอบขึ้น .NET Core 3.0 แนะนำการปรับใช้ไฟล์เดี่ยวซึ่งเป็นไฟล์ปฏิบัติการเดียว
  5. ใช้ "framework framework" หากคุณรู้ว่าเครื่องเป้าหมายมี. NET Core รันไทม์เนื่องจากจะทำให้ไฟล์ติดตั้งน้อยลง
  6. หากคุณดูโฟลเดอร์binใน explorer คุณจะพบไฟล์. exe
  7. คุณจะต้องปรับใช้ exe พร้อมกับไฟล์ config และ dll ที่รองรับ

แอปคอนโซลเผยแพร่


5
อ๋อ มี EXE - พร้อมด้วยไฟล์อื่น ๆ 217 ไฟล์ (api-ms-win-core-namedpipe-l1-1-0.dll ฯลฯ ) อย่างไรก็ตามมีการรวมกลุ่มนี้ลงใน EXE เดียวหรือไม่
Elton

1
เป็นคำถามที่ดี @Elton ฉันไม่ทราบ. AFAIK คุณต้องติดตั้ง DLLs ทั้งหมด
Jess

2
ฉันคิดว่าความจริงที่ว่ามันถูกกำหนดค่าให้มีอยู่ในตัวเองจะต้องมี DLLs เหล่านั้นทั้งหมดอยู่ที่นั่น หากคุณไม่ต้องการมีโหมดการปรับใช้อาจจะต้องขึ้นกับ Framework Dependent
kippermand

1
คุณทำให้วันศุกร์ของฉัน!
Robin Johnson

20

คุณยังสามารถเรียกใช้แอพของคุณเหมือนกับแอปพลิเคชั่นคอนโซลอื่น ๆ แต่หลังจากเผยแพร่

สมมติว่าคุณมีแอพคอนโซลที่ชื่อ MyTestConsoleApp เปิดคอนโซลตัวจัดการแพคเกจและเรียกใช้คำสั่งต่อไปนี้:

dotnet publish -c Debug -r win10-x64 

แฟล็ก -c หมายความว่าคุณต้องการใช้การกำหนดค่าการดีบัก (ในกรณีอื่นคุณควรใช้ค่า Release) - แฟล็ก r หมายความว่าแอปพลิเคชันของคุณจะถูกเรียกใช้บนแพลตฟอร์ม Windows ที่มีสถาปัตยกรรม x64

เมื่อกระบวนการเผยแพร่เสร็จสิ้นคุณจะเห็นไฟล์ * .exe ที่อยู่ในไดเรกทอรี bin / Debug / เผยแพร่ของคุณ

ตอนนี้คุณสามารถเรียกมันผ่านเครื่องมือบรรทัดคำสั่ง เพื่อเปิดหน้าต่าง CMD (หรือเทอร์มินัล) ย้ายไปยังไดเรกทอรีที่ไฟล์ * .exe ของคุณตั้งอยู่และเขียนคำสั่งถัดไป:

>> MyTestConsoleApp.exe argument-list

ตัวอย่างเช่น:

>> MyTestConsoleApp.exe --input some_text -r true

2

ด้วย dotnetcore3.0 คุณสามารถแพคเกจการแก้ปัญหาทั้งหมดเป็นไฟล์เดียวที่ปฏิบัติการโดยใช้PublishSingleFileสถานที่ให้บริการ

-p:PublishSingleFile=True

แหล่ง ไฟล์เดี่ยวที่ปฏิบัติการได้

ตัวอย่างของSelf Contained, ReleaseOSX ปฏิบัติการ:

dotnet publish -c Release -r osx-x64 -p:PublishSingleFile=True --self-contained True

ตัวอย่างของSelf Contained, Debugลินุกซ์ 64bit ปฏิบัติการ:

dotnet publish -c Debug -r linux-x64 -p:PublishSingleFile=True --self-contained True

การสร้างลินุกซ์เป็นอิสระจากการกระจายและฉันได้พบพวกเขาทำงานบน Ubuntu 18.10, CentOS 7.7 และ Amazon Linux 2

ปฏิบัติการที่บรรจุด้วยตัวเองนั้นรวมถึง Dotnet Runtime และไม่จำเป็นต้องติดตั้งบนเครื่องเป้าหมาย ไฟล์ปฏิบัติการที่เผยแพร่จะถูกบันทึกภายใต้:

<ProjectDir>/bin/<Release or Debug>/netcoreapp3.0/<target-os>/publish/ บน Linux, OSX และ

<ProjectDir>\bin\<Release or Debug>\netcoreapp3.0\<target-os>\publish\ บน Windows


นอกจากนี้คุณยังสามารถเพิ่มไฟล์ config ไปยัง csproj:<PublishSingleFile>true</PublishSingleFile>
Mahdi Ataollahi

0

การใช้ CMD คุณสามารถเรียกใช้คอนโซลโครงการ. net หลักได้หากติดตั้ง. net core SDK ในเครื่องของคุณ:

ในการรันโปรเจ็กต์คอนโซลโดยใช้ windows command-Line เลือกพา ธ เฉพาะจากไดเร็กทอรีของคุณและพิมพ์คำสั่งด้านล่าง

วิ่ง dotnet


0

ก่อนที่คุณจะรันด้วยพรอมต์คำสั่งตรวจสอบให้แน่ใจว่า "appsettings.json" มีค่าเหมือนกับ "appsettings.Development.json"

ในพร้อมท์คำสั่งไปที่โฟลเดอร์ bin / debug / netcoreapp2.0 จากนั้นเรียกใช้ "dotnet applicationname.dll"

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.