Tam giác cảnh báo màu vàng có nghĩa là gì đối với sự phụ thuộc trong Visual Studio 2017?


100

Tôi vừa chuyển đổi thư viện PCL của mình sang thư viện .Net Standard mới và tôi có một số hình tam giác Cảnh báo màu vàng trên Phụ thuộc của mình được hiển thị bên dưới:

nhập mô tả hình ảnh ở đây

Trong quá trình chuyển đổi, nó đã đưa tất cả các gói nuget qua bao gồm cả các gói phụ thuộc để nó có thể là dulicates.

Làm cách nào để tìm hiểu các hình tam giác cảnh báo Màu vàng đại diện cho điều gì?

BIÊN TẬP

Tạo nhật ký:

Để ngăn NuGet khôi phục gói trong quá trình xây dựng, hãy mở hộp thoại Tùy chọn Visual Studio, nhấp vào nút Trình quản lý gói và bỏ chọn 'Cho phép NuGet tải xuống các gói bị thiếu trong quá trình xây dựng.' NU1605: Hạ cấp gói được phát hiện: NUnit từ 3.8.1 xuống 2.6.4. Tham khảo gói trực tiếp từ dự án để chọn một phiên bản khác.
MyProj.UI.Tests -> MyProj.Core.Tests -> NUnit (> = 3.8.1)
MyProj.UI.Tests -> NUnit (> = 2.6.4) NU1605: Hạ cấp gói được phát hiện: NUnit từ 3.8.1 xuống 2.6.4. Tham khảo gói trực tiếp từ dự án để chọn một phiên bản khác. MyProj.UI.Tests.iOS -> MyProj.UI.Tests -> MyProj.Core.Tests -> NUnit (> = 3.8.1) MyProj.UI.Tests.iOS -> NUnit (> = 2.6.4) NU1605: Hạ cấp gói được phát hiện: NUnit từ 3.8.1 xuống 2.6.4. Tham khảo gói trực tiếp từ dự án để chọn một phiên bản khác.
MyProj.UI.Tests.Android -> MyProj.UI.Tests -> MyProj.Core.Tests -> NUnit (> = 3.8.1) MyProj.UI.Tests.Android -> NUnit (> = 2.6.4)


Di chuột qua chúng và nó sẽ cho bạn biết. Hầu hết các trường hợp là do nó không thể tìm thấy / giải quyết chúng hoặc xung đột tồn tại. Nếu bạn cũng nhìn vào cửa sổ Lỗi, nó có xu hướng giải thích lỗi trong giải pháp.
Nkosi

52
@Nkosi di chuột qua chúng không hiển thị bất cứ điều gì cho tôi
dùng1

2
Các tham chiếu này được sử dụng khi bạn xây dựng chương trình của mình. Nhưng chúng cũng quan trọng đối với IDE, nó cần phải giải quyết chúng để cung cấp IntelliSense. Nếu không thành công thì bạn sẽ nhận được hình tam giác cảnh báo. Sử dụng Bản dựng> Bản dựng để nhận được thông báo lỗi.
Hans Passant

27
Khi điều này xảy ra với tôi, không có cảnh báo xây dựng nào. Biểu tượng cảnh báo vừa bị kẹt trong giao diện người dùng. Dỡ và tải lại dự án đã sửa nó.
StackOverthrow

1
@TKK: Tôi nghĩ điều này chỉ kéo dài trong vài phút, sau đó là phân cấp tam giác cảnh báo trong giao diện người dùng. Ít nhất đó là những gì đã xảy ra với tôi sau khi mở lại giải pháp. Tôi nghĩ nó đã được sửa lúc đầu nhưng sau đó các tam giác cảnh báo đột nhiên xuất hiện trở lại.
PussInBoots

Câu trả lời:


68

Nghe có vẻ sáo mòn, hãy thử xây dựng lại rồi khởi động lại VS - và tiếp tục ngày của bạn :)


5
Cảm ơn bạn đã nhắc tôi về giải pháp cổ điển "thử khởi động lại nó" :). Đã dành giờ cuối cùng để tự hỏi tại sao VS lại gỡ bỏ các gói của tôi khi tôi xây dựng giải pháp của mình. Tôi đã khởi động lại VS và mọi thứ hoạt động như mong đợi. / ugh
Ryan E.

1
Clasic "đóng cửa" nó không phải lúc nào cũng là giải pháp cho mọi tệ hại của thế giới: /
sgrysoft

Hôm nay tôi vừa cập nhật Visual Studio 2019 của mình với phiên bản mới nhất (chính xác là 16.5.1). Và vấn đề vẫn tồn tại nhưng giải pháp này vẫn hoạt động :)
Willy David Jr

Tắt và bật lại :-D
Don Ch

61

chạy dotnet restoretrước khi bạn thực hiện bất kỳ thao tác phức tạp nào, bạn sẽ được cung cấp nhiều thông tin hơn là trong cửa sổ lỗi hoặc trình khám phá giải pháp.

Bạn có thể chạy lệnh này trong Bảng điều khiển Trình quản lý Gói:

Công cụ> Trình quản lý gói NuGet> Bảng điều khiển Trình quản lý gói


4
Chỉ cần mở lại giải pháp thay vì khởi động lại VS cũng làm việc cho tôi.
Quido

tại sao tôi phải khôi phục dotnet? không phải xây dựng phải làm điều đó?
pabrams

11

Trong bản ghi xây dựng, tôi tình cờ nhận thấy điều này:

C: \ Program Files \ dotnet \ sdk \ 2.0.2 \ Sdks \ Microsoft.NET.Sdk \ build \ Microsoft.NET.Sdk.DefaultItems.targets (199,5): warning: A PackageReference for 'NETStandard.Library' là bao gồm trong dự án của bạn. Gói này được tham chiếu ngầm bởi .NET SDK và bạn thường không cần tham chiếu nó từ dự án của mình. Để biết thêm thông tin, hãy xem https://aka.ms/sdkimplicitrefs

Do đó, tôi đã gỡ cài đặt tất cả các gói được liệt kê là các gói phụ thuộc cho .Net Standard nuget được liệt kê ở đây:

.NETStandard 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.Primainst (> = 4.3.0)

  • System.ObjectModel (> = 4.3.0)

  • System.Reflection (> = 4.3.0)

  • System.Reflection.Extensions (> = 4.3.0)

  • System.Reflection.Primists (> = 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)

Và những cảnh báo màu vàng đã biến mất.

Từ đây: https://blogs.msdn.microsoft.com/dotnet/2017/08/14/annocting-net-standard-2-0/

Tôi cũng nhận thấy bạn có thể sử dụng thuộc tính NoWarn như bên dưới:

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

7

Hình tam giác màu vàng có nghĩa là (các) tệp vật lý gói đã biến mất và không còn khả dụng trên Ổ cứng.

Điều này thường xảy ra khi đưa ra get latest versionyêu cầu kiểm soát nguồn trong TFS, đặc biệt khi sử dụng một máy mới và bạn muốn lấy mã dự án của mình từ máy chủ TFS.

Nó cũng có thể được gây ra bởi low quality internet connectionhầu như luôn luôn dẫn đến mất dữ liệu hoặc các tệp tải xuống bị hỏng.

nhập mô tả hình ảnh ở đây

Nếu sự cố là thiếu một vài gói, bạn có thể sửa đổi packages.configtệp và xóa các gói này khỏi packages.configvà cài đặt lại các gói bị thiếu thông qua trình quản lý gói nuget.

Nhưng nếu sự cố thiếu nhiều hơn một vài gói, cách tốt nhất và nhanh nhất mà tôi sử dụng để truy xuất các gói bị thiếu là:

  1. Mở một phiên bản mới của studio trực quan
  2. Tạo một giải pháp dự án mới với cùng một loại dự án giống như một giải pháp có gói bị thiếu (Ví dụ: ASP.Net MVC với Tài khoản Người dùng Cá nhân)
  3. Cập nhật gói mới nhất của dự án mới để khớp với phiên bản gói của giải pháp dự án trước đó
  4. Mở trình khám phá tệp và điều hướng đến thư mục gói trong giải pháp mới mà bạn đã tạo
  5. Sao chép tất cả nội dung của thư mục Packagesbằng cách chọn tất cả, Lưu ý KHÔNG sao chép chính thư mục Gói chỉ nội dung bên trong thư mục
  6. Dán nó vào giải pháp trước đó của bạn (giải pháp với các gói bị thiếu), trong Packagesthư mục có ghi đè các mục hiện có.
  7. Đi tới thư mục gói của bạn trong trình khám phá giải pháp và mở rộng nó, sau đó nhấp vào nút làm mới để thấy rằng nhiều gói bị thiếu hiện đang hiển thị mà không có hình tam giác màu vàng
  8. Cuối cùng, bạn sẽ kết thúc với một vài gói bị thiếu, không được bao gồm theo mặc định khi bạn tạo giải pháp mới, bạn cần xóa chúng khỏi tệp package.config của mình (tệp mà trình quản lý gói nuget) đọc để xác định các gói đã cài đặt và cài đặt chúng như mới bằng cách sử dụng trình quản lý gói nuget.

Lưu ý rằng các vấn đề như vậy liên quan đến các tệp bị thiếu từ các dự án luôn khó sửa và phụ thuộc vào kinh nghiệm của nhà phát triển, vì vậy đừng mong đợi một giải pháp dễ dàng cho vấn đề này.

Về nguyên nhân gây ra lỗi, Microsoft cho biết đây là một lỗi, nhưng nó có thể xảy ra trên bất kỳ phiên bản nào của Visual Studio.


1
Về các dự án, việc khởi động lại Visual Studio (2019) dường như đã khắc phục được sự cố cho tôi.
Steve Smith

không có gói nào
.coinfig

6

Chỉ cho mục đích tài liệu cho người mới với vấn đề này, hãy thử cái này và bạn sẽ nhớ: D

Nếu bạn đi tới: Công cụ> Quản trị viên NuGet> Cấu hình. và bạn đã đánh dấu "Allow nuget ...." và "tự động kiểm tra ....".

Điều duy nhất bạn phải làm là nhấp vào nút "Xóa tất cả (các) bộ nhớ đệm NuGet"

Vậy là xong, bạn không cần phải chỉnh sửa thủ công nghĩ rằng có thể nguy hiểm, tin tôi đi, tôi cần phải thực hiện một số bước hơn là mô tả ở đây rất nhiều thời gian và hãy thử hơn 5 bước của tài liệu microsoft tư pháp cho vấn đề đó bạn có thể kiểm tra tại đây: https://docs.microsoft.com/es-es/nuget/consume-packages/package-restore#restore-packages-automatically-using-visual-studio

Nhưng chỉ cần làm sạch bộ nhớ cache là giải quyết được tất cả các vấn đề


4

Nếu bạn có biểu tượng cảnh báo nhưng không có cảnh báo và không có gì thực sự là sai, hãy nhấp chuột phải vào dự án> Dỡ dự án> nhấp chuột phải vào dự án một lần nữa> Tải lại dự án. Biểu tượng xuất hiện trong giây lát và sau đó được xóa cho tôi trong Visual Studio 2019. Điều này tránh khởi động lại Visual Studio đầy đủ.


2

Thật kỳ lạ, dự án .Net Core 3 của tôi cần tôi chỉ cần nhấp vào "Tải phụ thuộc dự án" từ ngữ cảnh của dự án, sau đó biểu tượng cảnh báo biến mất.

Ảnh chụp màn hình hữu ích:

nhập mô tả hình ảnh ở đây


1

Tôi vừa cập nhật Visual studio lên 16.4.4 và sự cố đã được giải quyết. Tham chiếu được cố định và không còn hình tam giác màu vàng. Cảm ơn.


1

Tôi gặp phải lỗi này khi tôi sao chép dự án. nguyên nhân chính là do các gói Nuget không thể khôi phục và tôi tìm ra giải pháp bằng cách đặt nuget.org chỉ là tài nguyên hoạt động.

nhập mô tả hình ảnh ở đây

Đảm bảo rằng bạn chọn Nuget.org làm tài nguyên hoạt động duy nhất.

Hy vọng nó giúp


1

Dấu chấm than màu vàng thường là do thiếu tham chiếu hoặc dll không được hỗ trợ. Nếu bạn sao chép một kho lưu trữ thì có khả năng nhiều gói nugget sẽ hiển thị dấu chấm than màu vàng. Nếu bạn đã xác minh phiên bản dự án là phù hợp và vẫn còn sự cố, bạn có thể thử giải pháp bên dưới.

Trong bảng điều khiển trình quản lý gói, hãy chọn dự án mà bạn đang gặp phải sự cố này rồi nhập lệnh sau.

Update-Package -Reinstall

Điều này sẽ buộc cài đặt lại tất cả các gói. Lệnh này sẽ không cập nhật phiên bản của các gói NuGet, nó chỉ buộc cài đặt lại chúng.

Giải pháp này đã hoạt động trong trường hợp của tôi. Tôi đang sử dụng VS2019. Hy vọng điều này cũng sẽ giúp những người khác.


0

Có thể có 1 gói có thể khiến tất cả các gói khác không được tải. cố gắng nhận xét từng gói từ .csproj và tìm ra vấn đề nào để thu hẹp nó.


0

Nếu tôi cố gỡ cài đặt Microsoft.NETCore.Platformsnhư đã nêu trong câu trả lời đã đánh dấu, tôi gặp lỗi sau:

Không thể gỡ cài đặt 'Microsoft.NETCore.Platforms.1.1.0' vì 'NETStandard.Library.2.0.3' phụ thuộc vào nó.

Tôi đã gỡ cài đặt các gói khác nhưng vẫn gặp NETSDK1023lỗi:

PackageReference cho 'NETStandard.Library' đã được đưa vào dự án của bạn. Gói này được tham chiếu ngầm bởi .NET SDK và bạn thường không cần tham chiếu nó từ dự án của mình. Để biết thêm thông tin, hãy xem https://aka.ms/sdkimplicitrefs

Bây giờ tôi đã chỉnh sửa .csproj của mình và xóa phần sau

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

như đã nêu trong https://aka.ms/sdkimplicitrefs trong Đề xuất :

Khi nhắm mục tiêu .NET Core hoặc .NET Standard, không bao giờ có tham chiếu rõ ràng đến Microsoft.NETCore.Apphoặc các NETStandard.Librarygói siêu thông qua một <PackageReference>mục trong tệp dự án của bạn.

Bây giờ cảnh báo đã biến mất!


0

Không có điều nào ở trên phù hợp với tôi. Tôi có một dự án trong giải pháp với các tam giác cảnh báo về sự phụ thuộc vào các dự án khác trong giải pháp gây ra rất nhiều lỗi màu đỏ trong VS. Tuy nhiên, nó sẽ xây dựng, chạy và gỡ lỗi tốt. Cuối cùng tôi đã dỡ bỏ dự án bằng một cú nhấp chuột phải vào tên dự án trong cây giải pháp, sau đó tải lại dự án và tất cả đều hạnh phúc. Cảm ơn Visual Studio, smh. Tôi đang sử dụng VS 2019 16.7.1


-3

Nếu không có vấn đề gì với bạn, hãy cập nhật tất cả các gói NuGet có thể giải quyết vấn đề này.

Menu Tools -> NuGet Package Manager -> Manage Nuget Packages for Solution . Khi menu này xuất hiện, nhấp vào tab Cập nhật và nhấp vào nút Cập nhật Tất cả .


4
Điều đó sẽ không cập nhật tất cả các gói lên phiên bản mới nhất? Điều này có thể không mong muốn nếu yêu cầu phiên bản cụ thể (không phải mới nhất) của một hoặc nhiều gói.
Gertsen

Nếu bạn đang sử dụng các gói mới nhất thì đây là một giải pháp tuyệt vời. Đã khắc phục sự cố của tôi ngay lập tức.
n4rzul

1
Đây không phải lúc nào cũng là giải pháp. Đôi khi có những gói trong dự án không nên được cập nhật.
caras
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.