สามเหลี่ยมคำเตือนสีเหลืองหมายถึงอะไรเมื่อพึ่งพาใน Visual Studio 2017


118

ฉันเพิ่งแปลงไลบรารี PCL ของฉันเป็นไลบรารี. Net Standard ใหม่และฉันมีสามเหลี่ยมคำเตือนสีเหลืองเกี่ยวกับการพึ่งพาของฉันที่แสดงด้านล่าง:

ใส่คำอธิบายภาพที่นี่

ในระหว่างการแปลงจะนำแพ็กเกจ nuget ทั้งหมดมารวมถึงการอ้างอิงดังนั้นจึงอาจเป็น dulicates

ฉันจะทราบได้อย่างไรว่าสามเหลี่ยมคำเตือนสีเหลืองแสดงถึงอะไร

แก้ไข

สร้างบันทึก:

เพื่อป้องกันไม่ให้ NuGet กู้คืนแพ็คเกจระหว่างการสร้างให้เปิดกล่องโต้ตอบตัวเลือก Visual Studio คลิกที่โหนด Package Manager และยกเลิกการเลือก 'อนุญาตให้ NuGet ดาวน์โหลดแพ็คเกจที่ขาดหายไปในระหว่างการสร้าง' NU1605: ตรวจพบการดาวน์เกรดแพ็คเกจ: NUnit จาก 3.8.1 เป็น 2.6.4 อ้างอิงแพ็กเกจโดยตรงจากโปรเจ็กต์เพื่อเลือกเวอร์ชันอื่น
MyProj.UI.Tests -> MyProj.Core.Tests -> NUnit (> = 3.8.1)
MyProj.UI.Tests -> NUnit (> = 2.6.4) NU1605: ตรวจพบการดาวน์เกรดแพ็คเกจ: NUnit จาก 3.8.1 เป็น 2.6.4 อ้างอิงแพ็กเกจโดยตรงจากโปรเจ็กต์เพื่อเลือกเวอร์ชันอื่น MyProj.UI.Tests.iOS -> MyProj.UI.Tests -> MyProj.Core.Tests -> NUnit (> = 3.8.1) MyProj.UI.Tests.iOS -> NUnit (> = 2.6.4) NU1605: ตรวจพบการดาวน์เกรดแพ็คเกจ: NUnit จาก 3.8.1 เป็น 2.6.4 อ้างอิงแพ็กเกจโดยตรงจากโปรเจ็กต์เพื่อเลือกเวอร์ชันอื่น
MyProj.UI.Tests. Android -> MyProj.UI.Tests -> MyProj.Core.Tests -> NUnit (> = 3.8.1) MyProj.UI.Tests. Android -> NUnit (> = 2.6.4)


61
@Nkosi ที่อยู่เหนือพวกเขาไม่ได้แสดงอะไรให้ฉันเลย
user1

1
หน้าต่างตรวจสอบข้อผิดพลาดแล้ว
Nkosi

3
การอ้างอิงเหล่านี้ใช้เมื่อคุณสร้างโปรแกรมของคุณ แต่ก็มีความสำคัญกับ IDE เช่นกันจำเป็นต้องแก้ไขเพื่อให้ IntelliSense หากล้มเหลวคุณจะได้รับสามเหลี่ยมคำเตือน ใช้ Build> Build เพื่อรับข้อความแสดงข้อผิดพลาด
Hans Passant

37
เมื่อสิ่งนี้เกิดขึ้นกับฉันไม่มีคำเตือนการสร้าง ไอคอนคำเตือนติดอยู่ใน UI การยกเลิกการโหลดและการโหลดโครงการใหม่ได้รับการแก้ไขแล้ว
StackOverthrow

1
@TKK: ฉันคิดว่ามันคงอยู่แค่สองสามนาทีจากนั้นรูปสามเหลี่ยมคำเตือนจะปรากฏขึ้นใน UI อย่างน้อยนั่นคือสิ่งที่เกิดขึ้นกับฉันหลังจากเปิดโซลูชันอีกครั้ง ตอนแรกฉันคิดว่ามันได้รับการแก้ไขแล้ว แต่ทันใดนั้นสามเหลี่ยมคำเตือนก็ปรากฏขึ้นอีกครั้ง
PussInBoots

คำตอบ:


92

ไม่ซ้ำซากเหมือนฟังดูลองสร้างใหม่แล้วรีสตาร์ท VS - และทำวันของคุณต่อไป :)


5
ขอบคุณที่เตือนฉันเกี่ยวกับวิธีแก้ปัญหา "ลองเริ่มต้นใหม่" แบบคลาสสิก :) ใช้เวลาชั่วโมงที่แล้วสงสัยว่าทำไม VS ถึงลบแพ็คเกจของฉันเมื่อฉันสร้างโซลูชันของฉัน ฉันรีสตาร์ท VS และทุกอย่างทำงานตามที่คาดไว้ / ugh
Ryan E.

2
"ปิดตัวลง" แบบ
คลาสสิ

ฉันเพิ่งอัปเดต Visual Studio 2019 ของฉันในวันนี้ด้วยเวอร์ชันล่าสุด (16.5.1) เป็นเวอร์ชันที่แน่นอน และปัญหายังคงมีอยู่ แต่วิธีนี้ยังใช้งานได้ :)
Willy David Jr

ปิดแล้วเปิดใหม่ :-D
Don Ch

ฉันต้องทำความสะอาด / สร้างใหม่หลังจากรีสตาร์ท - แต่มันใช้งานได้
Lavamantis

64

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

คุณสามารถรันคำสั่งนี้ใน Package Manager Console:

เครื่องมือ> NuGet Package Manager> Package Manager Console


4
เพียงแค่เปิดโซลูชันอีกครั้งแทนที่จะรีสตาร์ท VS ก็ใช้ได้ผลกับฉันเช่นกัน
Quido

ทำไมฉันต้องกู้คืน dotnet งานสร้างไม่จำเป็นต้องทำอย่างนั้นเหรอ?
pabrams

12

ในบันทึกการสร้างฉันสังเกตเห็นสิ่งนี้:

C: \ Program Files \ dotnet \ sdk \ 2.0.2 \ Sdks \ Microsoft.NET.Sdk \ build \ Microsoft.NET.Sdk.DefaultItems.targets (199,5): คำเตือน: PackageReference สำหรับ 'NETStandard.Library' คือ รวมอยู่ในโครงการของคุณ แพคเกจนี้อ้างอิงโดยปริยายโดย. NET SDK และโดยทั่วไปคุณไม่จำเป็นต้องอ้างอิงจากโครงการของคุณ สำหรับข้อมูลเพิ่มเติมโปรดดูhttps://aka.ms/sdkimplicitrefs

ฉันจึงไปและถอนการติดตั้งแพ็คเกจทั้งหมดที่ระบุว่าเป็นการอ้างอิงสำหรับนัก.Net Standard เก็ตที่ระบุไว้ที่นี่:

.NET มาตรฐาน 1.1

  • Microsoft.NETCore.Platforms (> = 1.1.0)

  • System.Collections (> = 4.3.0)

  • System.Collections.Concurrent (> = 4.3.0)

  • System.Diagnostics.Debug (> => 4.3.0)

  • System.Diagnostics.Tools (> = 4.3.0)

  • System.Diagnostics.Tracing (> = 4.3.0)

  • System.Globalization (> = 4.3.0)

  • System.IO (> = 4.3.0)

  • System.IO.Compression (> = 4.3.0)

  • System.Linq (> = 4.3.0)

  • System.Linq.Expressions (> = 4.3.0)

  • System.Net.Http (> = 4.3.2)

  • System.Net.Primitives (> = 4.3.0)

  • System.ObjectModel (> = 4.3.0)

  • System.Reflection (> = 4.3.0)

  • System.Reflection.Extensions (> = 4.3.0)

  • System.Reflection.Primitives (> = 4.3.0)

  • System.Resources.ResourceManager (> = 4.3.0)

  • System.Runtime (> = 4.3.0)

  • System.Runtime.Extensions (> = 4.3.0)

  • System.Runtime.InteropServices (> = 4.3.0)

  • System.Runtime.InteropServices.RuntimeInformation (> => 4.3.0)

  • System.Runtime.Numerics (> = 4.3.0)

  • System.Text.Encoding (> = 4.3.0)

  • System.Text.Encoding.Extensions (> = 4.3.0)

  • System.Text.RegularExpressions (> = 4.3.0)

  • System.Threading (> = 4.3.0)

  • System.Threading.Tasks (> = 4.3.0)

  • System.Xml.ReaderWriter (> = 4.3.0)

  • System.Xml.XDocument (> = 4.3.0)

และคำเตือนสีเหลืองก็หายไป

จากที่นี่: https://blogs.msdn.microsoft.com/dotnet/2017/08/14/announcing-net-standard-2-0/

ฉันพบว่าคุณสามารถใช้คุณสมบัติ NoWarn ดังต่อไปนี้:

<ItemGroup>
  <PackageReference Include="Huitian.PowerCollections" Version="1.0.0" NoWarn="NU1701" />
</ItemGroup>

9

เพียงเพื่อวัตถุประสงค์ในการจัดทำเอกสารสำหรับคนใหม่ที่มีปัญหานี้ลองใช้แล้วคุณจะจำได้: D

หากคุณไปที่: Tools> NuGet Administrator> Configurations และคุณได้เลือก "Allow nuget .... " และ "automatic check .... "

สิ่งเดียวที่คุณต้องทำคือคลิกที่ปุ่ม"Clear All NuGet Cache (s)"

เพียงเท่านี้คุณก็ไม่ต้องแก้ไขด้วยตนเองที่คิดว่าอาจเป็นอันตรายได้เชื่อฉันฉันเคยต้องทำบางขั้นตอนมากกว่าที่จะอธิบายไว้ที่นี่เป็นเวลานานและลองมากกว่า 5 ขั้นตอนของเอกสาร Microsoft ที่เป็นทางการสำหรับ ปัญหานั้นคุณสามารถตรวจสอบได้ที่นี่: https://docs.microsoft.com/es-es/nuget/consume-packages/package-restore#restore-packages-automatically-using-visual-studio

แต่เพียงแค่ทำความสะอาดแคชก็ช่วยแก้ปัญหาทั้งหมดได้


1
สิ่งนี้ช่วยแก้ปัญหาให้ฉันได้ ข้อเสนอแนะอื่น ๆ ไม่มีส่วนช่วยในกรณีของฉัน
webwires

9

หากคุณมีไอคอนคำเตือน แต่ไม่มีคำเตือนและไม่มีอะไรผิดปกติให้คลิกขวาที่โปรเจ็กต์> ยกเลิกการโหลดโปรเจ็กต์> คลิกขวาที่โปรเจ็กต์อีกครั้ง> โหลดโปรเจ็กต์ใหม่ ไอคอนนี้ปรากฏขึ้นชั่วครู่จากนั้นก็ถูกล้างให้ฉันใน Visual Studio 2019 สิ่งนี้หลีกเลี่ยงการรีสตาร์ท Visual Studio แบบเต็ม


8

รูปสามเหลี่ยมสีเหลืองหมายความว่าไฟล์ฟิสิคัลของแพ็กเกจหายไปและไม่มีอยู่ในฮาร์ดไดรฟ์อีกต่อไป

สิ่งนี้มักเกิดขึ้นเมื่อออกget latest versionคำขอเกี่ยวกับการควบคุมแหล่งที่มาใน TFS โดยเฉพาะอย่างยิ่งเมื่อใช้เครื่องใหม่และคุณต้องการรับรหัสโครงการของคุณจากเซิร์ฟเวอร์ TFS

นอกจากนี้ยังอาจเกิดจากการlow quality internet connectionที่มักจะทำให้ข้อมูลสูญหายหรือไฟล์ที่ดาวน์โหลดเสียหาย

ใส่คำอธิบายภาพที่นี่

หากปัญหาไม่มีแพ็กเกจสองสามแพ็กเกจคุณสามารถแก้ไขpackages.configไฟล์และลบแพ็กเกจเหล่านี้ออกจากแพ็กเกจpackages.configที่หายไปและติดตั้งใหม่ผ่านตัวจัดการแพ็กเกจ nuget

แต่หากปัญหาหายไปมากกว่าสองสามแพ็คเกจวิธีที่ดีที่สุดและรวดเร็วที่ฉันใช้ในการดึงแพ็คเกจที่หายไปคือ:

  1. เปิดตัวอย่างใหม่ของ Visual Studio
  2. สร้างโซลูชันโครงการใหม่ด้วยประเภทโครงการเดียวกันเช่นเดียวกับแพ็คเกจที่ขาดหายไป (ตัวอย่าง: ASP.Net MVC พร้อมบัญชีผู้ใช้ส่วนบุคคล)
  3. อัปเดตแพ็กเกจของโปรเจ็กต์ใหม่เป็นเวอร์ชันล่าสุดเพื่อให้ตรงกับเวอร์ชันแพ็กเกจของโซลูชันโปรเจ็กต์ก่อนหน้า
  4. เปิด file explorer และไปที่โฟลเดอร์ package ในโซลูชันใหม่ที่คุณสร้างขึ้น
  5. คัดลอกเนื้อหาทั้งหมดของโฟลเดอร์Packagesโดยการเลือกทั้งหมดหมายเหตุอย่าคัดลอกโฟลเดอร์แพคเกจเองเฉพาะเนื้อหาภายในโฟลเดอร์
  6. วางสิ่งนั้นในโซลูชันก่อนหน้าของคุณ (โซลูชันที่มีแพ็คเกจที่ขาดหายไป) ในPackagesโฟลเดอร์โดยเขียนทับรายการที่มีอยู่
  7. ไปที่โฟลเดอร์แพ็กเกจของคุณในตัวสำรวจโซลูชันและขยายจากนั้นคลิกปุ่มรีเฟรชเพื่อดูว่าแพ็คเกจที่หายไปจำนวนมากกำลังแสดงโดยไม่มีสามเหลี่ยมสีเหลือง
  8. สุดท้ายคุณจะพบกับแพ็คเกจที่ขาดหายไปสองสามแพ็คเกจซึ่งไม่รวมอยู่โดยค่าเริ่มต้นเมื่อคุณสร้างโซลูชันใหม่คุณต้องลบออกจากไฟล์ package.config ของคุณ (ไฟล์ที่ตัวจัดการแพ็คเกจ nuget) อ่านเพื่อกำหนดแพ็คเกจที่ติดตั้งและ ติดตั้งสิ่งเหล่านี้ใหม่โดยใช้ตัวจัดการแพ็คเกจ nuget

โปรดทราบว่าปัญหาที่เกี่ยวข้องกับไฟล์ที่หายไปจากโปรเจ็กต์นั้นยากที่จะแก้ไขเสมอและขึ้นอยู่กับประสบการณ์ของนักพัฒนาดังนั้นอย่าคาดหวังวิธีแก้ปัญหาที่ง่าย

ในสาเหตุของข้อผิดพลาด Microsoft กล่าวว่าเป็นจุดบกพร่อง แต่สามารถเกิดขึ้นได้กับ Visual Studio ทุกเวอร์ชัน


1
เกี่ยวกับโปรเจ็กต์การรีสตาร์ท Visual Studio (2019) ดูเหมือนจะแก้ไขให้ฉันได้
Steve Smith

ไม่มีแพ็คเกจ
coinfig

2

ผิดปกติพอสมควรโครงการ. Net Core 3 ของฉันต้องการให้ฉันคลิก"โหลดการอ้างอิงโครงการ"จากบริบทของโครงการจากนั้นไอคอนคำเตือนก็หายไป

ภาพหน้าจอที่เป็นประโยชน์:

ใส่คำอธิบายภาพที่นี่


1

หากฉันพยายามถอนการติดตั้งMicrosoft.NETCore.Platformsตามที่ระบุไว้ในคำตอบที่ทำเครื่องหมายไว้ฉันได้รับข้อผิดพลาดต่อไปนี้:

ไม่สามารถถอนการติดตั้ง 'Microsoft.NETCore.Platforms.1.1.0' เนื่องจาก 'NETStandard.Library.2.0.3' ขึ้นอยู่กับมัน

ฉันถอนการติดตั้งแพ็กเกจอื่น ๆ แต่ยังคงได้รับNETSDK1023ข้อผิดพลาด:

PackageReference สำหรับ 'NETStandard.Library' รวมอยู่ในโครงการของคุณ แพคเกจนี้อ้างอิงโดยปริยายโดย. NET SDK และโดยทั่วไปคุณไม่จำเป็นต้องอ้างอิงจากโครงการของคุณ สำหรับข้อมูลเพิ่มเติมโปรดดูhttps://aka.ms/sdkimplicitrefs

ตอนนี้ฉันแก้ไข. csproj ของฉันและลบส่วนต่อไปนี้

<PackageReference Include="NETStandard.Library" Version="2.0.3" />

ตามที่ระบุไว้ในhttps://aka.ms/sdkimplicitrefsภายใต้คำแนะนำ :

เมื่อกำหนดเป้าหมาย. NET Core หรือ. NET Standard ห้ามมีการอ้างอิงอย่างชัดเจนไปยังmetapackages Microsoft.NETCore.AppหรือNETStandard.Librarymetapackages ผ่าน<PackageReference>รายการในไฟล์โครงการ

ตอนนี้คำเตือนหายไป!


1

ฉันเพิ่งอัปเดต Visual studio เป็น 16.4.4 และปัญหาได้รับการแก้ไขแล้ว การอ้างอิงได้รับการแก้ไขและไม่มีสามเหลี่ยมสีเหลืองอีกต่อไป ขอบคุณ.


1

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

ใส่คำอธิบายภาพที่นี่

ตรวจสอบให้แน่ใจว่าคุณเลือก Nuget.org เป็นทรัพยากรที่ใช้งานอยู่เท่านั้น

หวังว่าจะช่วยได้


1

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

ในคอนโซลตัวจัดการแพ็กเกจเลือกโปรเจ็กต์ที่คุณกำลังประสบปัญหานี้จากนั้นพิมพ์คำสั่งต่อไปนี้

Update-Package -Reinstall

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

วิธีนี้ใช้ได้ผลในกรณีของฉัน ฉันใช้ VS2019 หวังว่านี่จะช่วยคนอื่น ๆ เช่นกัน


1

ฉันเพิ่งมีปัญหานี้ใน VS2019 เวอร์ชัน 16.8.3 เมื่อเปลี่ยนชื่อโครงการ. NET Core 3.1 หลังจากเปลี่ยนชื่อโครงการแล้วสามเหลี่ยมสีเหลืองก็ปรากฏขึ้น สร้างใหม่ทำความสะอาด ฯลฯ ไม่มีอะไรทำงาน การปิดและเปิดโซลูชันใหม่ช่วยแก้ปัญหาให้ฉันได้


0

อาจมี 1 แพ็คเกจที่ทำให้โหลดอื่น ๆ ไม่ได้ทั้งหมด ลองแสดงความคิดเห็นแพ็คเกจจาก. csproj ทีละรายการและค้นหาว่าอันไหนเป็นปัญหาเพื่อ จำกัด ให้แคบลง


0

ข้างต้นไม่ได้ผลสำหรับฉัน ฉันมีโครงการหนึ่งในโซลูชันที่มีสามเหลี่ยมเตือนเกี่ยวกับการอ้างอิงกับโครงการอื่น ๆ ในโซลูชันซึ่งทำให้เกิดข้อผิดพลาดสีแดงจำนวนมากใน VS อย่างไรก็ตามมันจะสร้างเรียกใช้และแก้ไขข้อบกพร่องได้ดี ในที่สุดฉันก็ยกเลิกการโหลดโครงการด้วยการคลิกขวาที่ชื่อโครงการในแผนผังโซลูชันจากนั้นโหลดโครงการใหม่และตอนนี้ทุกคนก็มีความสุข ขอบคุณ Visual Studio, smh ฉันใช้ VS 2019 16.7.1


0

รีสตาร์ทเครื่อง

ฉันเชื่อว่าสถานการณ์ของฉันคือกระบวนการบางอย่างไม่ได้ปล่อย dll บางตัวหลังจากล้างแคชและการได้มาของ dll ใด ๆ ล้มเหลวเนื่องจากการล็อก (?) นั้น

ด้วยการรีสตาร์ทเครื่องของฉันและทำการdonet restoreแก้ไขปัญหาและฉันสามารถสร้างอีกครั้งได้โดยไม่มีข้อผิดพลาดของแพ็คเกจหายไป



-4

หากไม่มีปัญหากับคุณในการอัปเดตแพ็คเกจ NuGet ทั้งหมดที่อาจแก้ปัญหานี้ได้

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


5
นั่นจะไม่อัปเดตแพ็คเกจทั้งหมดเป็นเวอร์ชันล่าสุดหรือไม่? สิ่งนี้อาจไม่เป็นที่ต้องการหากจำเป็นต้องใช้แพ็กเกจอย่างน้อยหนึ่งเวอร์ชัน (ไม่ใช่เวอร์ชันล่าสุด)
Gertsen

หากคุณใช้แพ็คเกจล่าสุดอยู่แล้วนี่เป็นทางออกที่ยอดเยี่ยม แก้ไขปัญหาของฉันทันที
n4rzul

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