ติดตั้งแพ็คเกจ Nuget ใน Visual Studio Code


191

ฉันจะติดตั้งแพคเกจ Nuget ใน Visual Studio Code ได้อย่างไร ฉันรู้ใน Visual Studio เราสามารถทำได้ผ่านคอนโซลผู้จัดการแพคเกจ Nuget แต่ฉันจะทำได้ใน VS Code ได้อย่างไร


คุณได้ลองส่วนขยายนี้: marketplace.visualstudio.com/...หรือคุณสามารถดาวน์โหลด nuget จากเว็บไซต์ของพวกเขาและการใช้งานได้จากคอนโซล
JNK

ฉันต้องการคอนโซลเพราะส่วนขยายไม่มีความคิดเห็นดี
Gyan Parkash

วิธีที่ฉันทำได้คือใช้ nuget.org ค้นหาและใช้ PackageReference (อยู่ในตัวเลือกการผ่อนชำระอื่น ๆ ) ทำงานได้ดีทีเดียวและคุณจะได้รับ UI ที่ดีสำหรับนักเก็ตมันเอง
mslot

คำตอบ:


224

จากบรรทัดคำสั่งหรือหน้าต่าง Terminal ในตัวแก้ไขรหัส vs dotnet add package Newtonsoft.Json

ดูบทความนี้โดย Scott Hanselman


2
โปรดทราบว่านี่จะใช้งานได้เฉพาะกับ. Net Core SDK 1.0 ใหม่ที่ใช้ csproj แต่ไม่สามารถใช้งานได้บนเวอร์ชันตัวอย่างรุ่นเก่าที่ใช้ project.json
svick

2
น่าเสียดายที่ไม่รองรับการค้นหาหรือเติมข้อความอัตโนมัติ คุณต้องทราบชื่อการสะกดที่แน่นอน
Andrew Savinykh

4
คุณสามารถไปที่nuget.orgเพื่อค้นหาแพ็คเกจตามที่คุณอาจทำใน Visual Studio จากนั้นใช้บรรทัดคำสั่งเพื่อติดตั้งแพ็คเกจที่คุณต้องการ
MikeBeaton

76

คุณสามารถใช้ส่วนขยายNuGet Package Managerได้

หลังจากที่คุณติดตั้งแล้วเมื่อต้องการเพิ่มแพ็คเกจกด Ctrl + Shift + P แล้วพิมพ์>nugetและกด Enter:

ป้อนคำอธิบายรูปภาพที่นี่

พิมพ์ส่วนหนึ่งของชื่อแพ็คเกจเป็นสตริงการค้นหา:

ป้อนคำอธิบายรูปภาพที่นี่

เลือกแพ็คเกจ:

ป้อนคำอธิบายรูปภาพที่นี่

และในที่สุดรุ่นแพ็คเกจ (คุณอาจต้องการรุ่นล่าสุด):

ป้อนคำอธิบายรูปภาพที่นี่


2
ส่วนขยายนี้ดูเหมือนจะไม่รองรับคุณสมบัติพื้นที่ทำงานใหม่
Chris Alexander

1
ส่วนขยายนี้ดูเหมือนจะกลับสู่ตลาดเพียงติดตั้งและทำงานได้ดีสำหรับฉัน
การอ้างอิง Null

3
22 มิถุนายน 2019: " ส่วนขยายนี้ไม่ได้เผยแพร่จาก Marketplace ตอนนี้คุณสามารถเลือกถอนการติดตั้งได้ " 2 ¢
ruffin

ลิงค์ที่ให้ไว้ข้างต้นชี้ไปที่"สุทธิหลัก Project Manager (Nuget)" - ลอง: marketplace.visualstudio.com/...
Samis

29

คุณสามารถทำได้อย่างง่ายดายโดยใช้ "vscode-nuget-package-manager" ไปที่ตลาดและติดตั้งสิ่งนี้ หลังจากนั้น

1) กด Ctrl + P หรือ Ctrl + Shift + P (และข้าม 2)

2) พิมพ์ ">"

3) จากนั้นเลือก "Nuget Package Manager: Add Package"

4) ป้อนชื่อแพ็คเกจ Ex: Dapper

5) เลือกชื่อแพ็คเกจและเวอร์ชั่น

6) เสร็จสิ้น


24

เปิดเมนูส่วนขยาย (Ctrl + Shift + X) และค้นหา. NuGet Package Manager


แปลกผู้จัดการคนนี้หา Microsoft.AspNetCore.Server.Kestrel ไม่ได้ วิธีแก้ปัญหาด้านล่างใช้งานได้
Aleksey Kontsevich

ไม่ทำงานอีกต่อไปนับตั้งแต่การโอนย้ายเป็นรูปแบบไฟล์. csproj
ต่อ Lundberg

ฉันไม่เห็นส่วนขยายนั้นเมื่อทำการค้นหา
Davos

13

ตัวอย่างสำหรับไฟล์. csproj

  <ItemGroup>
    <PackageReference Include="Microsoft.EntityFrameworkCore" Version="1.1.2" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="1.1.2" />
    <PackageReference Include="MySql.Data.EntityFrameworkCore" Version="7.0.7-m61" />
  </ItemGroup>

เพียงรับชื่อแพ็คเกจและหมายเลขเวอร์ชั่นจาก NuGet และเพิ่มลงใน. csproj จากนั้นบันทึก คุณจะได้รับแจ้งให้เรียกใช้การคืนค่าที่จะนำเข้าแพ็คเกจใหม่


9
ฉันแน่ใจว่าใช้งานได้ แต่ต้องแก้ไข XML ด้วยตนเองดูเหมือนจะเป็นความอัปยศ
Davos

1
เป็นจริง แต่ VS Code นั้นฟรี (และมีความหมายจริงๆในฐานะบรรณาธิการ) ดังนั้นฉันจึงไม่บ่น มันจะแตกต่างกันถ้าฉันต้องทำสิ่งนี้ใน VS
Chris Cavell

1
จุดยุติธรรม คุณกำลังแก้ไขโครงการ C # ทั้งหมดใน VSCode โดยไม่ติดตั้ง Visual Studio รุ่นใด ๆ หรือไม่ หรือสร้างโครงการใน Visual Studio (พร้อมไฟล์ sln + csproj) จากนั้นเพียงใช้ VSCode เป็นตัวแก้ไข ฉันเดาว่าถ้าคุณใช้dotnetVSCode แล้วทำไมคุณถึงต้องการไฟล์โครงการเหล่านั้นด้วยซ้ำ
Davos

1
ไม่ฉันใช้ Visual Studio 2010 และ 2015 จริง ๆ แล้วชอบ 2010 การเข้ารหัสที่แท้จริงของฉันทั้งหมดถูกเก็บไว้ในที่เก็บ Git VS Code นั้นมีให้เลือกมากมายสำหรับระบบ Ubuntu ของฉัน
Chris Cavell

8

Nuget Galleryให้ GUI คล้ายกับ Visual Studio แบบเต็ม ดูด้านล่าง

ป้อนคำอธิบายรูปภาพที่นี่

วิธีใช้:

  1. ติดตั้งNuget Galleryจากส่วนขยายตลาด
  2. เรียกใช้จากแถบเมนูView > Command Paletteหรือ⇧⌘P (Ctrl + Shift + P บน Windows และ Linux) ประเภทNuget: Open Gallery.
  3. GUI ด้านบนจะปรากฏขึ้น คุณสามารถกรองเหมือนใน Visual Studio ปกติ
  4. ตรวจสอบให้แน่ใจว่าได้.csproj fileเลือกช่องทำเครื่องหมายเลือกเวอร์ชั่นจากดรอปดาวน์แล้วคลิกปุ่มติดตั้ง

UPDATE

รุ่นก่อนหน้าดังที่ระบุไว้ในความคิดเห็นมีปัญหาที่.csprojไม่สามารถมองเห็นช่องทำเครื่องหมายเมื่อแพ็คเกจในไฟล์ csproj หายไปจากหมายเลขรุ่นดังนี้

<PackageReference Include="Microsoft.AspNetCore.App" />

สิ่งนี้ได้รับการแก้ไขในส่วนขยายเวอร์ชันใหม่กว่าดังนั้นหากคุณมีรุ่นเก่ากว่าที่มีปัญหานี้โปรดอัปเดตเป็นเวอร์ชันล่าสุด


Ahh นี่น่าสนใจ ไม่มี.csprojตัวเลือกขีดไฟล์ในเวอร์ชันปัจจุบัน บางทีนั่นอาจเป็นปัญหาของฉัน github.com/pcislo/vscode-nuget-gallery/issues/15
woter324

สวัสดี @ woter324 ปัญหาของช่องทำเครื่องหมายไม่แสดงถูกระบุว่าเป็นแพคเกจบางอย่างในการ.csprojไม่มีหมายเลขรุ่น ดูความคิดเห็นปัญหา ฉันได้อัปเดตคำตอบของฉันแล้วเพื่อรวมไว้
Moses Machua

ขอบคุณ! นั่นเป็นสิ่งที่ฉันต้องการเพื่อให้สามารถติดตั้งแพ็คเกจ Microsoft.Windows.Compatibility! Nuget Gallery นี้ใช้งานได้กับ. NET Core 3.1.2! ดังนั้นตอนนี้ฉันสามารถใช้ OleDbConnection เพื่อเปิดการเชื่อมต่อกับฐานข้อมูล MS Access ในขณะที่ใช้. NET Core สำหรับสิ่งอื่น ๆ ใน Visual Studio Code! เย็น!
John Foll

ฉันได้ทำการทดสอบเวอร์ชั่นล่าสุดแล้วและมันก็ไม่มีปัญหากับหมายเลขเวอร์ชั่นที่หายไปอีกต่อไป
Moses Machua

6
  1. ติดตั้งNuGet Package Manager
  2. Ctrl+Shift+Pบน Windows หรือCommand+Shift+Pบน Mac
  3. ค้นหาผู้จัดการแพ็คเกจ NuGet: เพิ่มแพ็คเกจ
  4. ใส่ชื่อแพ็คเกจเช่น AutoMapper
  5. เลือกแพ็คเกจ & รุ่น
  6. กู้คืนหากจำเป็น

1

แก้ไขไฟล์ project.json หรือ * .csproj ของคุณ เพิ่มรายการการอ้างอิงที่มีชื่อของแพคเกจและรุ่นที่ต้องการ

ตัวอย่าง JSON:

{
   "dependencies" : {

     "AutoMapper": "5.2.0"
   }
}

1

คำตอบข้างต้นเป็นสิ่งที่ดี แต่ไม่เพียงพอหากคุณมีมากกว่า 1 โครงการ (.csproj) ในโฟลเดอร์เดียวกัน

ก่อนอื่นคุณสามารถเพิ่มแท็ก "PackageReference" ลงในไฟล์. csproj ได้อย่างง่ายดาย (ด้วยตนเองโดยใช้ตัวจัดการแพ็คเกจ nuget หรือโดยใช้คำสั่ง dotnet add package)

แต่จากนั้นคุณต้องเรียกใช้คำสั่ง "คืนค่า" ด้วยตนเองเพื่อให้คุณสามารถบอกได้ว่าโครงการใดที่คุณพยายามกู้คืน (ถ้าฉันคลิกปุ่มกู้คืนที่โผล่ขึ้นมาไม่มีอะไรเกิดขึ้น) คุณสามารถทำได้โดยการเรียกใช้:

dotnet restore Project-File-Name.csproj

และนั่นก็คือการติดตั้งแพ็คเกจ

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