ฉันจะติดตั้งไฟล์. nupkg ของแพคเกจ NuGet ในเครื่องได้อย่างไร


คำตอบ:


463

เครื่องมือเมนู→ ตัวเลือกตัวจัดการแพคเกจ

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

ให้ชื่อและที่ตั้งโฟลเดอร์ คลิกตกลง วางไฟล์แพ็คเกจ NuGet ของคุณในโฟลเดอร์นั้น

ไปที่โครงการของคุณคลิกขวาและเลือก"จัดการแพคเกจ NuGet"และเลือกแหล่งแพคเกจใหม่ของคุณ

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

นี่คือเอกสาร


22
ที่จริงฉันทำตามขั้นตอนที่ 1 สองสามครั้ง แต่แพ็คเกจของฉันไม่ปรากฏขึ้นในขั้นตอนที่ 2 เมื่อฉันเปิดขึ้นเพื่อดูแพ็คเกจที่ติดตั้งอัพเดตหรือแพ็คเกจล่าสุด
ทอม

2
บนหน้าจอของฉันฉันมีเฉพาะ "ทั้งหมด" ภายใต้ "แพคเกจที่ติดตั้ง" ไม่ใช่ "แหล่งที่มาของแพคเกจทางการ NuGet" ไม่ใช่ "newNuget" ที่กำหนดเองของฉันพวกเขาหายไป
ทอม

1
ฉันใช้ vs2010 กำลังพยายามดาวน์โหลดและติดตั้ง nuget ล่าสุดจากหน้าแรกของพวกเขาในตอนนี้ ดาวน์โหลดคลิกถัดไปต่อไป ... จากนั้นเกิดข้อผิดพลาด ... M $ ตามที่คาดไว้มีการเชื่อมโยงของปัญหาที่รู้จักตรวจสอบว่าลายเซ็นไม่ตรงกันบอกว่าฉันต้องถอนการติดตั้ง nuget ที่มีอยู่และแก้ไขได้ง่าย สบายดีที่ทำ เมื่อฉันรีสตาร์ทคอมพิวเตอร์และติดตั้งอีกครั้งข้อผิดพลาดเดียวกันกลับมาลายเซ็นไม่ตรงกัน ... ดังนั้นตอนนี้ฉันติดอยู่กับรุ่นเก่าที่หายไปรุ่นใหม่ไม่ต้องการติดตั้ง
ทอม

2
แก้ไขปัญหาแล้ว ฉันถอนการติดตั้ง nuget จาก windows -> แผงควบคุม มันไม่ทำงานอย่างนั้น ฉันต้องเริ่มต้น VS และเข้าไปที่ Tools-> Extension Manager ... จากนั้นกดถอนการติดตั้ง nuget จากที่นั่น เริ่มใหม่แล้ว จากนั้นไปติดตั้ง nuget อีกครั้งทำงานได้ ตอนนี้ไฟล์ nupkg ในเครื่องก็แสดงขึ้นมาเช่นกัน (แก้ไข: อยู่ในแท็บออนไลน์ไม่ใช่แท็บที่ติดตั้งซึ่งเป็นความผิดพลาดของฉันในภาพที่ฉันโพสต์) ขอบคุณสำหรับความช่วยเหลือ :)
Tom

1
ฉันยังไม่มีชื่อเสียงพอที่จะแสดงความคิดเห็น แต่เพื่อตอบ Michael ในคำตอบที่ยอมรับได้เกี่ยวกับ VS2015 ยังคงต้องการออนไลน์ ฉันมีปัญหาเดียวกัน แต่ในตัวเลือกหากคุณยกเลิกการเลือกแหล่งข้อมูลออนไลน์ทั้งหมดมันใช้ได้กับแหล่งข้อมูลออฟไลน์ รูปตัวเลือก nuget
มิก m

302

คุณยังสามารถใช้Package Manager Consoleและเรียกใช้Install-Packagecmdlet โดยระบุพา ธ ไปยังไดเร็กทอรีที่มีไฟล์แพ็กเกจใน-Sourceพารามิเตอร์:

Install-Package SomePackage -Source C:\PathToThePackageDir\

2
ฉันสามารถทำสิ่งนี้ด้วยเครื่องมือบรรทัดคำสั่งได้หรือไม่
Poul K. Sørensen

5
ใช่. -Sourceตัวเลือกที่มีอยู่ในnuget.exeเช่นกัน ตัวอย่างเช่น:nuget install SomePackage -Source C:\PathToThePackageDir
Enrico Campidoglio

16
คุณอาจต้องระบุแฟล็ก -IncludePrerelease เช่นกัน มิฉะนั้นหากรุ่นของแพ็คเกจมีส่วนต่อท้าย (เช่น "-beta1") ติดตั้งแพ็กเกจจะไม่พบ
Jeff Sharp

9
นี่เป็นคำตอบโดยตรงมากกว่าคำตอบที่ยอมรับ ขอบคุณสำหรับข้อมูล!
David Peters

2
ใช้งานไม่ได้กับ VS 2017 ดู f.ex ตอบโดย @Granger
RenniePet

124

สำหรับไฟล์. n กก. ฉันชอบที่จะใช้:

Install-Package C:\Path\To\Some\File.nupkg

7
สิ่งเดียวที่ทำงาน หากเส้นทางไปยังไดเรกทอรีมีช่องว่างให้รวมไว้ในเครื่องหมายคำพูดคู่
Nikos

4
ตกลง. และมูลค่าการกล่าวขวัญว่าเส้นทางที่แน่นอนเท่านั้นทำงาน
เซบาสเตียนเจ

5
ใช้งานไม่ได้กับ VS 2017 ดู f.ex ตอบโดย @Granger
RenniePet

1
@RenniePet ที่ทำงานสำหรับฉันใน VS2017 ( แต่ผมเคยวางแล้วฉัน.nupkgภายใต้ไดเรกทอรีเดียวกันทุกแพคเกจอื่น ๆ ที่ถูกเก็บไว้)
Rafalon

1
มันใช้งานไม่ได้สำหรับฉันฉันใช้ VS2013 เวอร์ชั่น 12.0.21..5 และ Nuget package manager 2.12.0.817 :(
Niraj Trivedi

56

สำหรับ Visual Studio 2017 และรูปแบบ. csproj ใหม่

คุณไม่สามารถใช้เพียงแค่ Install-Package เพื่อชี้ไปที่ไฟล์ในเครื่อง (นั่นน่าจะเป็นเพราะPackageReferenceองค์ประกอบไม่รองรับเส้นทางไฟล์ แต่อนุญาตให้คุณระบุรหัสแพ็คเกจเท่านั้น)

คุณต้องบอก Visual Studio เกี่ยวกับตำแหน่งที่ตั้งของแพ็คเกจก่อนจากนั้นคุณสามารถเพิ่มลงในโครงการได้ สิ่งที่คนส่วนใหญ่ทำคือเข้าไปใน NuGet Package Manager และเพิ่มโฟลเดอร์ในเครื่องเป็นแหล่ง (เมนูเครื่องมือตัวเลือกตัวจัดการแพคเกจ NuGetแหล่งที่มาของแพคเกจ ) แต่นั่นหมายความว่าตำแหน่งของการอ้างอิงของคุณไม่ได้ถูกกำหนด (เพื่อควบคุมเวอร์ชัน) ด้วยส่วนที่เหลือของโค้ดเบสของคุณ

แพ็คเกจ NuGet ท้องถิ่นโดยใช้เส้นทางสัมพันธ์

นี่จะเพิ่มแหล่งแพ็กเกจที่ใช้กับโซลูชันเฉพาะเท่านั้นและคุณสามารถใช้พา ธ สัมพัทธ์

คุณต้องสร้างnuget.configไฟล์ในไดเรกทอรีเดียวกับของคุณ.slnไฟล์กำหนดค่าไฟล์ด้วยซอร์สแพ็กเกจที่คุณต้องการ เมื่อคุณเปิดโซลูชันใน Visual Studio 2017 ครั้งถัดไปไฟล์. nupkg ใด ๆ จากโฟลเดอร์ต้นทางเหล่านั้นจะพร้อมใช้งาน (คุณจะเห็นแหล่งที่อยู่ในรายการใน Package Manager และคุณจะพบแพ็คเกจในแท็บ "เรียกดู" เมื่อคุณจัดการแพคเกจสำหรับโครงการ)

นี่คือตัวอย่างnuget.configเพื่อให้คุณเริ่มต้น:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <packageSources>
        <add key="MyLocalSharedSource" value="..\..\..\some\folder" />
    </packageSources>
</configuration>

backstory

กรณีการใช้งานของฉันสำหรับฟังก์ชั่นนี้คือฉันมีที่เก็บรหัสเดียวหลายอินสแตนซ์บนเครื่องของฉัน มีไลบรารีที่แบ่งใช้ภายใน codebase ที่มีการเผยแพร่ / ปรับใช้เป็นไฟล์. nupkg วิธีการนี้จะช่วยให้การแก้ปัญหาที่หลากหลายขึ้นอยู่กับ codebase ของเราเพื่อใช้แพคเกจภายในอินสแตนซ์ที่เก็บเดียวกัน นอกจากนี้บางคนที่มีการติดตั้งใหม่ของ Visual Studio 2017 ก็สามารถเช็คเอาต์รหัสได้ทุกที่ที่พวกเขาต้องการและโซลูชั่นที่ขึ้นต่อกันจะสามารถกู้คืนและสร้าง


ฉันใช้ VS 2017 และยังไม่พบปัญหานี้ ฉันเพิ่งผ่านการ-Sourceโต้แย้งไปUpdate-Packageและมันก็ทำงานได้ดี บางทีสิ่งที่ต้องทำโดยเฉพาะกับInstall-Packageคำสั่ง?
เกร็ก Burghardt

48
  1. เพิ่มไฟล์ไปยังโฟลเดอร์ที่เรียกว่า LocalPackages ถัดจากโซลูชันของคุณ (ไม่ต้องเรียกว่า แต่ให้ปรับ xml ในขั้นตอนต่อไปนี้ตามลำดับ)
  2. สร้างไฟล์ชื่อ NuGet.config ถัดจากไฟล์โซลูชันของคุณโดยมีเนื้อหาดังต่อไปนี้

    <?xml version="1.0" encoding="utf-8"?>
      <configuration>
        <packageSources>
          <add key="LocalPackages" value="./LocalPackages" />
        </packageSources>
        <activePackageSource>
          <!-- this tells that all of them are active -->
          <add key="All" value="(Aggregate source)" />
        </activePackageSource>
     </configuration>
  3. หากโซลูชันเปิดใน Visual Studio ให้ปิดแล้วเปิดใหม่อีกครั้ง

ตอนนี้แพ็คเกจของคุณควรปรากฏในเบราว์เซอร์หรือสามารถติดตั้งได้โดยใช้ Install-Package


คำตอบที่ยอดเยี่ยมทางออกที่ฉันต้องการ ขอบคุณ!
Jonathan

1
อาจเป็นเพราะฉันมีแพ็กเกจที่มีชื่อเดียวกับที่เก็บ Nuget แต่ฉันต้องการใช้ Package Manager Console และเลือกซอร์สแพ็กเกจเป็น LocalPackages ก่อนที่จะรัน Install-Package
ลุค

42

หากคุณมีไฟล์. nupkg และเพียงแค่ต้องการไฟล์. dll สิ่งที่คุณต้องทำคือเปลี่ยนนามสกุลเป็น. zip และค้นหาไดเรกทอรี lib


3
หากคุณถือว่าเป็นไฟล์ซิปไฟล์ที่มีพื้นที่ว่างในชื่อไฟล์จะถูกแตกด้วย% (แทนที่ช่องว่าง) เพื่อหลีกเลี่ยงการติดตั้งนี้โดยใช้ NuGet
Rahatur

2
จริงๆแล้วคุณไม่จำเป็นต้องเปลี่ยนชื่อนามสกุล เพียงคลิกขวาที่ไฟล์จากนั้นเลือกเปิดด้วยและค้นหาแอปพลิเคชันที่สามารถเปิดไฟล์. zip และสามารถเปิดไฟล์. nupkg ได้จากนั้นคุณสามารถแตกไฟล์ dll ที่ต้องการไปยังโฟลเดอร์ที่คุณกำหนด
jyao

1
ทางออกที่ดีที่สุดที่ฉันต้องการ
Leo Nguyen

8

เพียงแค่ให้อัปเดตมีการเปลี่ยนแปลงเล็กน้อยสำหรับผู้ใช้ Visual Studio 2015

หากต้องการใช้หรือติดตั้งแพ็คเกจด้วยตนเองไปที่เครื่องมือ -> ตัวเลือก -> NuGet Package Manager -> แหล่งแพ็คเกจ

คลิกปุ่มเพิ่มเลือกแหล่งที่มาและอย่าลืมคลิก " อัปเดต " เนื่องจากมันจะอัปเดตตำแหน่งโฟลเดอร์สำหรับแพ็คเกจของคุณแก้ไขชื่อที่คุณต้องการจากแหล่งแพคเกจของคุณหากคุณต้องการ:

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

ในการเลือกแพ็คเกจที่เพิ่มให้คลิกขวาที่โซลูชันของคุณแล้วเลือก " จัดการแพคเกจ Nuget "

รายการแบบหล่นลงอยู่ทางขวาและเลือกเรียกดูเพื่อเรียกดูแพ็คเกจที่คุณระบุในแหล่งโฟลเดอร์ของคุณ หากไม่มีแพ็กเกจ nuget บนซอร์สโฟลเดอร์นั้นจะว่างเปล่า:

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


6

บน Linux ด้วย NuGet CLI คำสั่งจะคล้ายกัน ในการติดตั้ง my.nupkg ให้เรียกใช้

nuget add -Source some/directory my.nupkg

จากนั้นเรียกใช้dotnet restoreจากไดเรกทอรีนั้น

dotnet restore --source some/directory Project.sln

หรือเพิ่มไดเรกทอรีนั้นเป็นแหล่ง NuGet

nuget sources Add -Name MySource -Source some/directory

แล้วบอกmsbuildจะใช้ไดเรกทอรีที่มีหรือ/p:RestoreAdditionalSources=MySource /p:RestoreSources=MySourceสวิตช์ที่สองจะปิดใช้งานแหล่งข้อมูลอื่นทั้งหมดซึ่งดีสำหรับสถานการณ์ออฟไลน์ตัวอย่างเช่น


1
บน Mac (ฉันสมมติว่าลินุกซ์เช่นกัน) คุณไม่สามารถพึ่งพาnuget sourcesถ้าคุณกำลังใช้dotnet restore(หรือVS Mac ) เพราะนี้ข้อผิดพลาด ฉันต้องเพิ่มแหล่งท้องถิ่นเพื่อ~/.nuget/NuGet/NuGet.Configด้วยตนเอง (ดูปัญหา GH นี้ )
gabe
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.