แพ็คเกจ NuGet หายไป


297

ฉันค้นหาปัญหานี้แล้ว แต่ไม่มีวิธีแก้ไขใด ๆ ที่ใช้งานได้ ฉันติดตั้ง Visual Studio Professional 2015 และฉันใช้ TFS รุ่น NuGet ของฉันคือ 3.1.6 ปัญหานี้เกิดขึ้นเฉพาะในโครงการ C # Web API / MVC ของฉัน

ฉันได้รับข้อผิดพลาดด้านล่าง:

โครงการนี้อ้างอิงแพคเกจ NuGet ที่หายไปในคอมพิวเตอร์นี้ ใช้ NuGet Package Restore เพื่อดาวน์โหลด สำหรับข้อมูลเพิ่มเติมโปรดดูที่http://go.microsoft.com/fwlink/?LinkID=322105 ไฟล์ที่หายไปคือ .. \ packages \ Microsoft.Net.Compilers.1.0.0 \ build \ Microsoft.Net.Compilers.props

  1. ฉันไม่มีโฟลเดอร์. nuget ในโซลูชันของฉัน
  2. ฉันมีโฟลเดอร์แพ็คเกจในโซลูชันและเมื่อฉันลบมันดูเหมือนว่า NuGet จะสร้างการอ้างอิงขึ้นใหม่ แต่โครงการยังคงมีข้อผิดพลาดด้านบน
  3. ฉันพยายามลบโครงการจาก TFS และไม่ได้แก้ไข
  4. พร้อมข้อผิดพลาดข้างต้นการอ้างอิงทั้งหมดในโครงการมีสัญญาณเตือนสีเหลืองและบอกว่าพวกเขาหายไป
  5. เมื่อฉันตรวจสอบ NuGet Package Manager สำหรับโครงการทุกอย่างที่ "หายไป" จะมีเครื่องหมายถูกสีเขียวอยู่ข้างๆรวมถึง Microsoft.Net.Compilers
  6. ฉันพยายามเพิ่มโครงการ Web API / MVC ใหม่และประสบปัญหาคล้ายกันซึ่งการอ้างอิงส่วนใหญ่เช่น Owin นั้น "ขาดหายไป" ด้วยสัญญาณเตือนสีเหลือง

คะแนนโหวตเพื่อปิดคำถามนี้เนื่องจากจำนวนผู้ที่ตอบแบบโพสต์ต่ำโดยผู้ใช้ใหม่มีจำนวนไม่มาก
ZF007

คำตอบ:


265

วันนี้ฉันมีข้อผิดพลาดเดียวกัน (ขาดแพ็คเกจเดิม) ฉันยังสร้างโครงการ MVC + Web API

มันเกิดขึ้นเพราะฉันย้ายไฟล์แอพ (รวมถึงไฟล์. csproj) ไปยังตำแหน่งอื่น ฉันอัปเดตไฟล์. sln ด้วยตนเอง แต่การอ้างอิงแพ็คเกจทั้งหมดอยู่ในขณะนี้ (Visual Studio 2015) ที่เก็บไว้ในไฟล์. csproj

การแก้ไขไฟล์. csproj และการแก้ไขพา ธ สัมพัทธ์ไปยังโฟลเดอร์โซลูชัน (ซึ่งมีโฟลเดอร์แพ็คเกจ) แก้ไขปัญหาให้ฉัน


2
กำลังคัดลอกโฟลเดอร์ Microsoft.Net.Compilers ... จากโฟลเดอร์แพคเกจเก่าไปยังตำแหน่งแพ็กเกจใหม่หลังจากการย้ายถ้ามันหายไปอาจเป็นขั้นตอนสุดท้ายที่จำเป็น
Justin Wignall

2
ฉันเพิ่งลบหนึ่งแพ็คเกจออกจากคอมพิวเตอร์ของฉันและใช้งานได้
SpoiledTechie.com

1
ฉันยังได้รับข้อผิดพลาดเมื่อย้ายโครงการไปยังตำแหน่งอื่นในโซลูชัน Visual Studio ไม่มีวิธีแก้ไขปัญหาใดในหน้านี้ทำงานดังนั้นฉันจึงทำสำเนาโครงการ (ในระบบไฟล์) และลบการอ้างอิงทั้งหมดไปยังโครงการต้นฉบับใน VS อย่างสมบูรณ์ จากนั้นฉันสร้างโครงการขึ้นใหม่และคัดลอกบิตและชิ้นส่วนลงในนั้น (จากสำเนาที่ฉันทำ) ลำบาก แต่ก็ใช้งานได้
Andrew Jens

2
ฉันยังมีปัญหาเดียวกันหลังจากย้ายโครงการจากที่หนึ่งไปอีกที่หนึ่ง แก้ไขเส้นทางของแพ็คเกจในไฟล์ ".csproj" เพื่อแก้ไขปัญหา
Nirman

2
@ MiłoszWieczorekฉันพยายามเรียกใช้คำสั่งใน Package Manager Console และไม่ได้แก้ปัญหา มันโหลดแพคเกจทั้งหมด แต่การอ้างอิงยังคงไม่พบ
Francisco d'Anconia

360

ฉันแก้ไขปัญหาโดยลบรหัสนี้จาก.csprojไฟล์:

<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
  <PropertyGroup>
    <ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
  </PropertyGroup>
  <Error Condition="!Exists('$(SolutionDir)\.nuget\NuGet.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\.nuget\NuGet.targets'))" />
</Target>

5
คำตอบที่ได้รับการยอมรับจะไม่ทำงานเนื่องจากฉันอ้างอิงโครงการในโซลูชันแยกต่างหากหลายรายการ นี่เป็นการแก้ไขเท่านั้น แสดงความคิดเห็นมันออกมาและมันทำงานได้อย่างมีเสน่ห์
Levi Fuller

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

4
มันก็ใช้ได้กับฉันเช่นกัน แปลกที่เกิดข้อผิดพลาดได้รับการกำหนดค่าตายตัวในแฟ้ม Proj ตัวเอง ...
Ryan Peters

7
ยืนยันปัญหานี้ยังคงมีอยู่ใน VS 2017 ฉันย้ายข้อมูลโครงการจาก visual studio 2015 ถึง 2017 และได้รับข้อความแสดงข้อผิดพลาดเมื่อคอมไพล์ครั้งแรกในปี 2560 สิ่งนี้แก้ไขข้อผิดพลาด
Tom McDonald

2
เหตุใดจึงต้องลบการทำงานเสี่ยงต่อการทำลายโครงการของคุณโดยทำสิ่งนี้ @HeyZiko ชี้ให้เห็นว่าสิ่งนี้สามารถนำไปสู่ปัญหาในภายหลังได้ ฉันสามารถทำสิ่งที่ระบุข้อผิดพลาด "เปิดใช้งานแพคเกจคืนค่า" ดูคำตอบของฉันอยู่ที่ไหนสักแห่งในหน้านี้ ...
Nicow

45

ระวัง - นี่เป็นการอัปเดตแพ็คเกจสำหรับการแก้ปัญหาทั้งหมดไม่ใช่แค่โครงการ

หากคุณมีแพ็คเกจแพ็กเกจ nuget ที่หายไปอีกหนึ่งชุดที่ให้ข้อผิดพลาดขณะสร้างโซลูชันของคุณให้ใช้คำสั่งต่อไปนี้โดยใช้คอนโซลคำสั่ง Nuget จากเครื่องมือ> ผู้จัดการแพ็กเกจ Nuget> คอนโซลผู้จัดการแพ็คเกจ มันจะติดตั้งแพ็กเกจปัจจุบันทั้งหมดของคุณใหม่อีกครั้ง

Update-Package –reinstall

ปรับปรุง:

คุณสามารถส่งชื่อโครงการเฉพาะเป็นพารามิเตอร์

Update-Package –reinstall -ProjectName SampleApp

1
สิ่งนี้ใช้ได้สำหรับฉัน ข้อผิดพลาดเกิดขึ้นหลังจากฉันหลังจากที่ผลักดันการเปลี่ยนแปลงผ่านคอมไพล์ในระบบหนึ่งและดึงพวกเขาไปอีกระบบหนึ่ง อาจ. gitignore ของฉันไม่ได้รับการกำหนดค่าอย่างเหมาะสมสำหรับแพ็คเกจ nuget
Patrick Borkowicz

16
ระวัง ... แพ็คเกจนี้อัปเดตสำหรับโซลูชันทั้งหมดไม่ใช่แค่โปรเจ็กต์
ผู้ใช้ SO

1
สิ่งนี้ใช้ได้สำหรับฉัน NuGet ยังคงบ่นเกี่ยวกับแพคเกจที่ขาดหายไป แต่ Visual Studio จะไม่แก้ไขอัตโนมัติ ใช้เวลาสองสามนาทีในการทำงานอย่างสมบูรณ์ แต่คำสั่งนี้แก้ไขปัญหาของฉัน
Nick Alexander

8
คุณสามารถเพิ่มพารามิเตอร์ -ProjectName เพื่อสร้างเฉพาะโครงการเฉพาะไม่ใช่โซลูชันทั้งหมด
Miłosz Wieczorek

2
VS2017 ตกผ่านครึ่งทางนี้และมันยากจนทุกอย่าง
ม้วน

19

ฉันมีข้อความที่น่าผิดหวังนี้ สิ่งที่ใช้งานได้ในที่สุดสำหรับฉันก็คือการลบไฟล์และโฟลเดอร์ทั้งหมดภายใน / แพ็คเกจและปล่อยให้ VS ดึงข้อมูลทุกอย่างในบิลด์ถัดไป


2
Restore Nuget Packagesผมคลิกขวาบนโซลูชั่นและ
Vitor Canova

1
ฉันไม่ได้มีแพคเกจ Restore Nuget เมื่อฉันคลิกขวาที่วิธีแก้ปัญหา .... ฉันใช้ VS 2013 ..
Ziggler

ต้องตรวจสอบให้แน่ใจว่าได้คืนค่าแพ็คเกจที่ถูกต้อง ตรวจสอบ. csproj โดยใช้ note / Edit * .csproj สำหรับตำแหน่งของโฟลเดอร์แพ็กเกจ
AceMark

15

Tiberiu ถูกต้อง ฉันต้องแก้ไขไฟล์. csproj เนื่องจากไฟล์ถูกย้ายและทำให้เกิดปัญหานี้

 <Import Project="..\..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.1\build\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props" Condition="Exists('..\..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.1\build\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" />

ฉันเปลี่ยนที่ด้านบนของไฟล์และที่ด้านล่าง

<Error Condition="!Exists('..\..\packages\Microsoft.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Microsoft.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.props'))" />
<Error Condition="!Exists('..\..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.1\build\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.1\build\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props'))" />

สิ่งที่ทำงานให้ฉันในท้ายที่สุดคือการแก้ไขเฉพาะบรรทัดที่จุดสิ้นสุดของไฟล์ แต่ไม่ได้อยู่ด้านบน
ISAE

15

วิธีนี้แก้ไขข้อผิดพลาดของฉัน: วิธีเปิดไฟล์. csproj สำหรับการปรับปรุงใน Visual Studio 2015+ Solution Explorer:

คลิกขวาที่ชื่อโครงการ -> ยกเลิกการโหลดโครงการ

คลิกขวาที่ชื่อโครงการ -> แก้ไข. csproj

ลบบรรทัดต่อไปนี้:

<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
    <PropertyGroup>
      <ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
    </PropertyGroup>
    <Error Condition="!Exists('..\packages\Microsoft.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.props'))" />
    <Error Condition="!Exists('..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.0\build\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.0\build\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props'))" />
    <Error Condition="!Exists('packages\Microsoft.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.props')" Text="$([System.String]::Format('$(ErrorText)', 'packages\Microsoft.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.props'))" />
    <Error Condition="!Exists('packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.0\build\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" Text="$([System.String]::Format('$(ErrorText)', 'packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.0\build\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props'))" />
  </Target>

คลิกขวาที่ชื่อโครงการ -> โหลดโครงการอีกครั้ง

ในที่สุดสร้างโซลูชันของคุณ


หลังจากแก้ไขพา ธ ด้วยตนเองใน csproj ฉันได้ลบหัวข้อ VerifyNuGetPackageBuildImports และมันทำงานได้อย่างสมบูรณ์ ขอบคุณ
willyMon

11

ฉันแก้ไขปัญหานี้โดยลบรหัสต่อไปนี้ออกจากไฟล์. csproj

<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
  <ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\..\..\Assemblies\NuGet\SpecFlow.Plus.Excel.1.4.2\build\SpecFlow.Plus.Excel.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\Assemblies\NuGet\SpecFlow.Plus.Excel.1.4.2\build\SpecFlow.Plus.Excel.targets'))" />


1
แต่ทำไมสิ่งเหล่านี้ผิดตั้งแต่แรก? ข้อผิดพลาดใน Visual Studio?
ป้องกันหนึ่ง

8

การรวมกันของ 2 คำตอบทำงานให้ฉัน ก่อนอื่นฉันแก้ไขไฟล์. csproj เพื่อลบการอ้างอิงถึง 1.0.0 เวอร์ชัน

< Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild" >

  ----Error---

< /Target>

แล้วก็ทำ

Update-Package -Reinstall

จากและมันก็ใช้งานได้


6

สำหรับฉันปัญหาคือเมื่อฉันคัดลอกโซลูชันไปยังโฟลเดอร์ใหม่และเปิดมันหายไปจากโฟลเดอร์ Nuget ดังที่แสดงด้านล่าง ฉันคัดลอกโฟลเดอร์นี้ไปแล้วและทุกอย่างทำงานได้ หมายเหตุ: โฟลเดอร์เดียวกันนี้อยู่ในการควบคุมแหล่งที่มาของเรา แต่ไม่ได้อยู่ในโครงการโซลูชันนี้มันเป็นไดเรกทอรีเดียว

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


6

เพียงเปิดใช้งานการคืนค่าแพคเกจ NuGet คลิกขวาที่โซลูชันของคุณ> เลือก 'เปิดใช้งานการเรียกคืนแพคเกจ NuGet'

คลิกขวาที่โซลูชันของคุณ> เลือก 'เปิดใช้งานการเรียกคืนแพ็คเกจ NuGet'

สิ่งนี้จะสร้างโฟลเดอร์. nuget พร้อมไฟล์ NuGet.Config และแก้ไขปัญหาของฉัน


ขอบคุณ !! ฉันต้องเผชิญกับสถานการณ์ที่คล้ายกันมากเกินไปและ 'เปิดใช้งาน NuGet Package Restore' ทำงานได้
เชนเจ้าชาย

18
มันไม่ได้กระทะสำหรับฉันมันบอกว่า "แพคเกจทั้งหมดได้รับการติดตั้งแล้วและไม่มีอะไรที่จะคืนค่า"
Dalibor

5

ฉันใช้ VS2012 และพบข้อผิดพลาดเดียวกัน ฉันลบแท็กเป้าหมายต่อไปนี้ออกจากไฟล์. csproj และเริ่มรวบรวมโดยไม่มีข้อผิดพลาด

<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
  -- Error messages within Target Tag
</Target>

5

หากต้องการขยายคำตอบบางส่วนที่นี่ใช่คุณสามารถลบบล็อกต่อไปนี้ออกจากไฟล์. csproj ของคุณ:

<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">

และสิ่งนี้แก้ไขปัญหาได้อย่างไรก็ตามในกรณีของฉันฉันสังเกตเห็นว่าฉันมีการอ้างอิงเพิ่มเติมไปยัง. NETCompilers และ. CodeDom.Providers ด้วยรุ่นที่แตกต่างกัน:

<Error Condition="!Exists('..\packages\Microsoft.Net.Compilers.1.0.0
<Error Condition="!Exists('..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.0\

<Error Condition="!Exists('..\packages\Microsoft.Net.Compilers.2.0.1
<Error Condition="!Exists('..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.3\

เมื่อแพ็คเกจของฉันกำหนดค่าอ้างอิงเฉพาะสิ่งต่อไปนี้:

<package id="Microsoft.Net.Compilers" version="2.0.1"
<package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="1.0.3"

การลบรายการ 1.0.0 ออกจากไฟล์. csproj แก้ไขปัญหา


2

สำหรับทุกคนที่สะดุดกับปัญหาที่ฉันมี (บางส่วน แต่ไม่ใช่ทุกแพคเกจที่ได้รับการกู้คืนบนบิลด์เซิร์ฟเวอร์) ชิ้นส่วนสุดท้ายของปริศนาสำหรับฉันคือการเพิ่ม NuGet.config ในรูทของโซลูชันของฉัน ไฟล์ตามที่ David Ebbo อธิบายไว้ที่นี่: http://blog.davidebbo.com/2014/01/the-right-way-to-restore-nuget-packages.html http://blog.davidebbo.com/2014/01/the-right-way-to-restore-nuget-packages.html

จากโพสต์บล็อกของ Ebbo เนื้อหาของไฟล์สำหรับฉันนั้นเรียบง่าย

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <add key="nuget.org" value="https://www.nuget.org/api/v2/" />
  </packageSources>
</configuration>

UPDATE:

URL ของ NuGet API มีการเปลี่ยนแปลงสำหรับ v3 (ปัจจุบันจนถึงกันยายน 2559) จากhttps://www.nuget.org/

<add key="nuget.org" value="https://api.nuget.org/v3/index.json" />

1

ข้อความผิดพลาดถูกต้องสมบูรณ์ ฉันลองใช้เทคนิคทั้งหมดและไม่มีใครทำงาน โปรเจ็กต์ (การทดสอบ MVC Web App แบบง่าย) ย้ายจากชุมชน Windows 8.1 VS 2015 ไปยังกล่องทดสอบใหม่ของฉันใน Windows 10 ใช้การอัปเดตล่าสุดทั้งหมดกับ VS 2015 ฉันไม่สามารถติดตั้งแพ็คเกจคอมไพเลอร์เวอร์ชั่นใหม่กว่านี้ได้

Loop:
<LOOP>This seems to be a Ground Hog Day phenomena.</LOOP>
GoTo Loop

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

หมายเหตุ:โครงการต้นฉบับถูกสร้างขึ้นใน VS 2015 และไม่มีวิธีการแบบดั้งเดิมของ nuget


1

โซลูชันที่ใช้งานได้ในกรณีของฉัน - Visual Studio 2015 Enterprice, project .NET 4.6.1

  1. อัปเกรดเป็นอัปเดต 3
  2. ติดตั้งเครื่องมือสำหรับนักพัฒนาเว็บ

วิซาร์ดการติดตั้งสตูดิโอภาพ


1

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


1

ฉันมีปัญหานี้เนื่องจากการสร้างล้มเหลวใน Azure เมื่อปรับใช้จาก Git

ปรากฎ .gitignore ของฉันถูกไม่รวมโฟลเดอร์จากbuild..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.0\build\net46\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props

เมื่อbuildโฟลเดอร์ถูกบังคับให้ใช้ Git แล้วปัญหาก็จะถูกแก้ไข


1

ฉันแก้ไขปัญหาเดียวกันด้วยขั้นตอนต่อไปนี้

  1. ลบแพ็กเกจ<package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="2.0.1" targetFramework="net46" />จากไฟล์ package.config
  2. แก้ไขไฟล์โครงการ. csproj และลบการตั้งค่าด้านล่าง <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">     <PropertyGroup>       <ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>     </PropertyGroup>     <Error Condition="!Exists('..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.1\build\net46\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.1\build\net46\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props'))" />   </Target>

    1. ไปที่คอนโซลตัวจัดการแพคเกจและเรียกใช้คำสั่ง Update-Package –reinstall

ผู้ใช้รายอื่นได้รับคะแนน # 2 และ 3 และฉันขอขอบคุณผู้ใช้เหล่านั้น จุด # 1 ลบMicrosoft.CodeDom.Providers.DotNetCompilerPlatformไฟล์จาก package.config สำคัญกว่า นอกจากนี้หลังจากเรียกใช้คำสั่งที่กล่าวถึงในจุด # 3 ปัญหาได้รับการแก้ไข แพคเกจที่ไม่พึงประสงค์ทั้งหมดถูกลบและการอ้างอิงแพคเกจที่จำเป็นได้รับการปรับปรุง

หวังว่านี่จะช่วยใครซักคน


0

ฉันไม่สามารถหาวิธีแก้ไขปัญหานี้ได้ดังนั้นฉันจึงเพิ่มสำเนาของ nuget.exe และสคริปต์ powershell ในไดเรกทอรีรากของโซลูชันที่เรียกว่า prebuild.ps1 ที่มีเนื้อหาต่อไปนี้

$nugetexe = 'nuget.exe'
$args = 'restore SOLUTION_NAME_HERE.sln'
Start-Process $nugetexe -ArgumentList $args

ฉันเรียกสคริปต์ powershell นี้ในงานสร้างของฉันในเส้นทางสคริปต์ Pre-Build ป้อนคำอธิบายรูปภาพที่นี่


0

ฉันทำงานเมื่อฉันคัดลอกโฟลเดอร์แพ็คเกจพร้อมกับไฟล์โซลูชันและโฟลเดอร์โครงการ ฉันไม่ได้คัดลอกโฟลเดอร์แพ็คเกจจากที่ก่อนหน้า


0

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

แค่นั้นแหละ


0

คอมเมนต์ตัวเลือกคอมไพเลอร์ในWebConfig:

<!--<system.codedom>
<compilers>
  <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701" />
  <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+" />
</compilers>
</system.codedom>-->

อัพเดตเวอร์ชั่นล่าสุดของแพ็คเกจในไฟล์กำหนดค่าแพ็คเกจ

  <package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="1.0.4" targetFramework="net452" />

สร้างใหม่หากไม่เป็นไรไม่จำเป็นต้องดำเนินการอื่นคลิกขวาที่โครงการคลิก 'ยกเลิกการโหลดโครงการ' คลิกขวาที่โครงการอีกครั้งและแก้ไขไฟล์. csproj

ตรวจสอบเส้นทางของ Codedom มันไม่ได้มี net45 ในเส้นทางก่อนหน้าเพิ่มด้วยตนเองบันทึกโหลดสร้างใหม่ มันควรจะทำงาน

<Import Project="..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.4\build\net45\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props" Condition="Exists('..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.4\build\net45\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" />

0

หลายคนแนะนำให้ลบ<Target>แท็กอาจทำให้คอมไพล์ได้ แต่ระวังความจริงที่ว่ามันมีผลข้างเคียงเมื่อคุณทำมันสำหรับโครงการทดสอบ

ฉันพบข้อผิดพลาดเกี่ยวกับMSTest.TestAdapterแพคเกจ nuget ขณะรวบรวม แก้ไขปัญหานั้นโดยลบ<Target>แท็ก แม้ว่ามันจะสร้างความสำเร็จ แต่วิธีการทดสอบก็ไม่สามารถค้นพบได้ นักทดสอบการทดสอบจะไม่แสดงรายการวิธีการทดสอบในโครงการนั้นและการทดสอบการทำงานหรือการทดสอบการดีบักจะไม่ทำงานเช่นกัน

ฉันพบสิ่งนี้ในขณะที่ใช้Visual Studio 2017และ.Net framework 4.7มันสามารถเกิดขึ้นได้ดีในรุ่นอื่น ๆ


1
ฉันว่าปัญหาโดยใช้ VS2017, .Net4.7 และโครงการทดสอบหน่วย โปรเจ็กต์นั้นถูกเพิ่มเข้ากับโซลูชันจำนวนมาก การกู้คืนอัตโนมัติทำงานได้ แต่ไปอยู่ผิดที่ แทนที่ด้วย$(SolutionDir)งาน แต่การอัพเดทล้มเหลว ผมถามว่าที่นี่ คุณพบวิธีแก้ปัญหาหรือไม่?
เซบาสเตียนชูแมนน์

0

ปัญหาสำหรับฉันคือ NuGet ไม่สามารถรับ / อัปเดตแพ็กเกจโดยอัตโนมัติได้เนื่องจากเส้นทางไฟล์แบบเต็มจะใหญ่เกินไป แก้ไขโดยการย้ายโซลูชันไปยังโฟลเดอร์ในเอกสารของฉันแทนที่จะเป็นโฟลเดอร์ซ้อนกันคงที่โดยการย้ายการแก้ปัญหาของฉันไปที่โฟลเดอร์ในเอกสารของฉันแทนโฟลเดอร์ที่ซ้อนกันอย่างลึกซึ้ง

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

นี่เป็นโซลูชันของแอปพลิเคชัน ASP MVC ตัวอย่างที่ดาวน์โหลดจากเว็บไซต์ของ Microsoft


0

สำหรับวิศวกร DevOps / build คุณสามารถแก้ไขการรันnuget restoreSLN ที่ได้รับผลกระทบนี้หรือโปรเจ็กต์หากคุณไม่มี SLN ฉันต้องทำสิ่งนี้เพื่อสร้าง CI / CD สำหรับโครงการ UWP ทั้งหมดของเรา

  1. ตรวจสอบให้แน่ใจว่าติดตั้ง nuget บน build ทาสทั้งใน Visual Studio หรือสแตนด์อโลน หากเป็นหลังให้ตรวจสอบว่าอยู่ใน PATH และข้ามขั้นตอนที่ 2
  2. เปิดคอนโซล VS Dev CMD หรือโหลดผ่านคอนโซลที่เปิดอยู่ซึ่งคุณสามารถทำตามคำแนะนำด้านล่าง:
    VS2015 call "%VS140COMNTOOLS%VsDevCmd.bat"
    หรือ
    VS2017call "%ProgramFiles(x86)%\Microsoft Visual Studio\2017\Enterprise\Common7\Tools\VsDevCmd.bat"
  3. call nuget restore MyStuff.SLNหรือcall nuget restore MyStuff.csprojถ้าไม่มี SLN

0

ไม่แน่ใจว่าสิ่งนี้จะช่วยให้ทุกคน แต่ฉันมีปัญหานี้เกิดขึ้นเมื่อฉันลบรหัสแหล่งที่มาจากเครื่องท้องถิ่นของฉันโดยไม่ต้องบันทึกไฟล์โซลูชันไปยัง TFS (ในระหว่างการพัฒนาครั้งแรกฉันคลิกขวาและตรวจสอบในโครงการในโซลูชัน Explorer แต่ลืมที่จะตรวจสอบโซลูชันเอง) เมื่อฉันต้องการทำงานนี้อีกครั้งสิ่งที่ฉันมีใน TFS คือไฟล์. csproj ไม่มีไฟล์. sln ดังนั้นใน VS ฉันทำไฟล์ -> การควบคุมซอร์ส -> ขั้นสูง - เปิดจากเซิร์ฟเวอร์และเปิดไฟล์. csproj จากนั้นฉันทำบันทึกทั้งหมดและถามฉันว่าฉันต้องการบันทึกไฟล์. sln ไว้ที่ไหน ฉันบันทึกไฟล์. sln นี้ไปยังไดเรกทอรีโครงการพร้อมกับโฟลเดอร์อื่น ๆ (App_Data, App_Start ฯลฯ ) ไม่ใช่ไดเรกทอรีระดับบนสุด ในที่สุดฉันก็พบว่าฉันต้องบันทึกไฟล์. sln ในไดเรกทอรีจากโฟลเดอร์โครงการดังนั้น อยู่ในระดับเดียวกับโฟลเดอร์โครงการ เส้นทางของฉันได้รับการแก้ไขทั้งหมดและฉันสามารถสร้างมันได้อีกครั้ง


0

สำหรับฉันไฟล์ gitignore ของฉันไม่สนใจโฟลเดอร์แพ็คเกจของฉัน บรรทัด gitignore ต่อไปนี้เป็นสาเหตุของปัญหา -

**/packages/*

ลบออกแล้วมันกู้คืนโฟลเดอร์แพ็คเกจของฉัน หวังว่านี่จะช่วยคนอื่นได้


0

ฉันได้รับการแก้ไขข้อผิดพลาดนี้จริง ๆ แล้วฉันมี MSTest.TestAdapter รุ่นที่แตกต่างกัน (1.3.2) ในโฟลเดอร์แพ็คเกจของฉันและในการอ้างอิงไฟล์. csproj ชี้ไปที่ MSTest.TestAdapter (1.1.0) ฉันได้เปลี่ยน MSTest.TestAdapter ทั้งหมด (1.1.0) เป็น MSTest.TestAdapter ทั้งหมด (1.3.2) ทั้งหมดและสิ่งนี้สามารถแก้ไขปัญหาของฉันได้


0

ฉันรู้ว่าคำถามนี้เก่า แต่ฉันวิ่งเข้าไปในสถานการณ์เดียวกันในวันนี้และต้องการที่จะโยนใน 2 เซ็นต์ของฉันสำหรับทุกคนที่เพิ่งพบปัญหานี้ โครงการ ASP MVC ที่ฉันได้ย้ายไปยังโฟลเดอร์ย่อยในโซลูชันของฉันด้วยตนเองจากนั้นลบออกและอ่านเพิ่มเติมไปยังโซลูชันโดยใช้ Visual Studio 2017 ให้ข้อผิดพลาดดังกล่าว การย้ายโฟลเดอร์ "lib" และ "แพ็คเกจ" ไปที่รูทของโฟลเดอร์ย่อยเดียวกันกับโครงการ MVC ช่วยแก้ไขปัญหาของฉัน


0

ฉันมีปัญหาเดียวกันปรากฎว่าหนึ่งในโครงการที่ฉันอ้างอิงอยู่นอกไดเรกทอรีโซลูชัน (และจึงไม่ได้แชร์โฟลเดอร์ '/ แพ็คเกจ' เดียวกัน) โซลูชันที่ใช้งานได้สำหรับฉันคือการเปิดโซลูชันของโครงการอ้างอิงและสร้างขึ้นที่นั่น เมื่อโครงการนั้นสร้างขึ้นข้อผิดพลาดก็หายไป

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