Apa arti segitiga peringatan kuning pada ketergantungan di Visual Studio 2017?

110

Saya baru saja mengonversi pustaka PCL saya ke pustaka .Net Standard baru dan saya memiliki beberapa segitiga Peringatan Kuning pada Ketergantungan saya yang ditunjukkan di bawah ini:

masukkan deskripsi gambar di sini

Selama konversi itu membawa semua paket nuget termasuk dependensi sehingga bisa menjadi dulicates.

Bagaimana cara mengetahui apa yang diwakili oleh segitiga peringatan Kuning?

EDIT

Bangun Log:

Untuk mencegah NuGet memulihkan paket selama pembuatan, buka dialog Opsi Visual Studio, klik pada simpul Manajer Paket dan hapus centang 'Izinkan NuGet untuk mengunduh paket yang hilang selama pembuatan.' NU1605: Deteksi paket downgrade: NUnit dari 3.8.1 ke 2.6.4. Referensikan paket langsung dari proyek untuk memilih versi yang berbeda.
MyProj.UI.Tests -> MyProj.Core.Tests -> NUnit (> = 3.8.1)
MyProj.UI.Tests -> NUnit (> = 2.6.4) NU1605: Mendeteksi penurunan versi paket: NUnit dari 3.8.1 ke 2.6.4. Referensikan paket langsung dari proyek untuk memilih versi yang berbeda. MyProj.UI.Tests.iOS -> MyProj.UI.Tests -> MyProj.Core.Tests -> NUnit (> = 3.8.1) MyProj.UI.Tests.iOS -> NUnit (> = 2.6.4) NU1605: Penurunan paket yang terdeteksi: NUnit dari 3.8.1 ke 2.6.4. Referensikan paket langsung dari proyek untuk memilih versi yang berbeda.
MyProj.UI.Tests.Android -> MyProj.UI.Tests -> MyProj.Core.Tests -> NUnit (> = 3.8.1) MyProj.UI.Tests.Android -> NUnit (> = 2.6.4)

pengguna1
sumber
59
@Nkosi mengarahkan kursor ke mereka tidak menunjukkan apa-apa untuk saya
pengguna1
1
Periksa jendela Kesalahan kemudian
Nkosi
3
Referensi ini digunakan saat Anda membangun program Anda. Tapi mereka juga penting bagi IDE, itu perlu menyelesaikannya untuk menyediakan IntelliSense. Jika gagal maka Anda mendapatkan segitiga peringatan. Gunakan Build> Build untuk mendapatkan pesan kesalahan.
Hans Passant
34
Saat ini terjadi pada saya, tidak ada peringatan versi build. Ikon peringatan baru saja tertahan di UI. Membongkar dan memuat ulang proyek memperbaikinya.
StackOverthrow
1
@TKK: Saya pikir ini hanya berlangsung selama beberapa menit, kemudian segitiga peringatan apperar di UI. Setidaknya itulah yang terjadi pada saya setelah membuka kembali solusinya. Saya pikir itu sudah diperbaiki pada awalnya tetapi kemudian segitiga peringatan tiba-tiba muncul kembali.
PussInBoots

Jawaban:

78

Kedengarannya basi, coba bangun kembali lalu mulai ulang VS - dan lanjutkan hari Anda :)

Tim Tyler
sumber
5
Terima kasih telah mengingatkan saya tentang solusi klasik "coba mulai ulang" :). Menghabiskan satu jam terakhir bertanya-tanya mengapa VS menghapus paket saya ketika saya membangun solusi saya. Saya memulai ulang VS dan semuanya bekerja seperti yang diharapkan. / ugh
Ryan E.
1
Kata "shut down" yang klasik tidak selalu merupakan solusi dari semua kejahatan dunia: /
sgrysoft
Saya baru saja memperbarui Visual Studio 2019 saya dengan versi terbaru (16.5.1) tepatnya. Dan masalahnya masih ada tetapi solusi ini masih berfungsi :)
Willy David Jr
Matikan dan nyalakan lagi :-D
Don Ch
63

dijalankan dotnet restoresebelum Anda melakukan manipulasi yang rumit, Anda akan diberikan lebih banyak info daripada di jendela kesalahan atau penjelajah solusi.

Anda dapat menjalankan perintah ini di Package Manager Console:

Alat> Pengelola Paket NuGet> Konsol Pengelola Paket

AlexandreG
sumber
4
Hanya membuka kembali solusi alih-alih memulai ulang VS juga berfungsi untuk saya.
Quido
mengapa saya melakukan pemulihan dotnet? bukankah bangunan harus melakukan itu?
pabram
12

Di build Log saya kebetulan melihat ini:

C: \ Program Files \ dotnet \ sdk \ 2.0.2 \ Sdks \ Microsoft.NET.Sdk \ build \ Microsoft.NET.Sdk.DefaultItems.t Target (199,5): peringatan: PackageReference untuk 'NETStandard.Library' sebelumnya termasuk dalam proyek Anda. Paket ini secara implisit direferensikan oleh .NET SDK dan Anda biasanya tidak perlu mereferensikannya dari proyek Anda. Untuk informasi lebih lanjut, lihat https://aka.ms/sdkimplicitrefs

Karena itu saya pergi dan menghapus semua paket yang terdaftar sebagai dependensi untuk .Net Standard nuget yang tercantum di sini:

.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.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)

Dan peringatan kuning menghilang.

Dari sini: https://blogs.msdn.microsoft.com/dotnet/2017/08/14/announcing-net-standard-2-0/

Saya juga menemukan Anda dapat menggunakan properti NoWarn seperti di bawah ini:

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

Segitiga kuning berarti bahwa file fisik paket telah hilang dan tidak lagi tersedia di Hard Drive.

Ini biasanya terjadi saat mengeluarkan get latest versionpermintaan pada kontrol sumber di TFS, terutama saat menggunakan mesin baru, dan Anda ingin mendapatkan kode proyek dari server TFS.

Ini juga bisa disebabkan oleh low quality internet connectionyang hampir selalu akan mengakibatkan hilangnya data, atau file unduhan yang rusak.

masukkan deskripsi gambar di sini

Jika masalah kehilangan beberapa paket, Anda dapat memodifikasi packages.configfile dan menghapus paket-paket ini dari packages.configdan menginstal ulang paket yang hilang melalui manajer paket nuget.

Tetapi jika masalah kehilangan lebih dari beberapa paket, cara terbaik dan cepat yang saya gunakan untuk mengambil paket yang hilang adalah dengan:

  1. Membuka studio visual baru
  2. Buat solusi proyek baru dengan jenis proyek yang sama seperti yang ada paket yang hilang (Contoh: ASP.Net MVC dengan Akun Pengguna Individual)
  3. Perbarui paket proyek baru ke yang terbaru agar sesuai dengan versi paket dari solusi proyek sebelumnya
  4. Buka file explorer dan navigasikan ke folder paket di solusi baru yang Anda buat
  5. Salin semua konten folder Packagesdengan memilih semua, Catatan JANGAN menyalin folder Paket itu sendiri hanya konten di dalam folder
  6. Tempelkan di solusi Anda sebelumnya (solusi dengan paket yang hilang), di Packagesfolder dengan menimpa item yang ada.
  7. Buka folder paket Anda di penjelajah solusi dan perluas, lalu klik tombol segarkan untuk melihat bahwa banyak paket yang hilang sekarang ditampilkan tanpa segitiga kuning
  8. Terakhir Anda akan mendapatkan beberapa paket yang hilang, yang tidak disertakan secara default saat Anda membuat solusi baru, Anda perlu menghapusnya dari file packages.config Anda (file yang dibaca oleh manajer paket nuget) untuk menentukan paket yang diinstal, dan instal yang baru menggunakan manajer paket nuget.

Perhatikan masalah yang terkait dengan file yang hilang dari proyek selalu sulit diperbaiki, dan bergantung pada pengalaman pengembang, jadi jangan berharap solusi mudah untuk yang satu ini.

Tentang penyebab kesalahan, Microsoft mengatakan itu adalah bug, tetapi bisa terjadi pada versi Visual Studio apa pun.

Ashraf Abusada
sumber
1
Mengenai proyek, memulai ulang Visual Studio (2019) sepertinya memperbaikinya untuk saya.
Steve Smith
tidak ada packages.coinfig
pabram
7

Hanya untuk tujuan dokumentasi bagi orang baru dengan masalah ini coba ini dan Anda akan mengingat saya: D

Jika Anda pergi ke: Tools> NuGet Administrator> Configurations. dan Anda memiliki cek "Izinkan nuget ...." dan "otomatis memeriksa ....".

Satu-satunya hal yang harus Anda lakukan adalah mengklik tombol con "Hapus Semua NuGet Cache (s)"

Itu saja, Anda tidak perlu mengedit secara manual berpikir daripada bisa berbahaya, percayalah, saya biasanya perlu melakukan beberapa langkah daripada menjelaskan di sini banyak waktu, dan mencoba lebih dari 5 langkah dokumentasi resmi microsoft untuk masalah itu, Anda dapat memeriksanya di sini: https://docs.microsoft.com/es-es/nuget/consume-packages/package-restore#restore-packages-automatically-using-visual-studio

Tetapi hanya membersihkan cache akan menyelesaikan semua masalah

sgrysoft.dll
sumber
Ini harus dipilih lebih jauh di rantai jawaban ..
GregD
7

Jika Anda memiliki ikon peringatan tetapi tidak ada peringatan dan tampaknya tidak ada yang salah, klik kanan proyek> Bongkar Proyek> klik kanan proyek lagi> Muat Ulang Proyek. Ikon muncul sejenak dan kemudian dihapus untuk saya di Visual Studio 2019. Ini menghindari restart Visual Studio penuh.

xr280xr
sumber
2

Anehnya, proyek .Net Core 3 saya mengharuskan saya untuk mengklik "Muat ketergantungan proyek" dari konteks proyek, lalu ikon peringatan menghilang.

Tangkapan layar yang berguna:

masukkan deskripsi gambar di sini

Coruscate5
sumber
1

Saya baru saja memperbarui Visual studio ke 16.4.4 dan masalah telah teratasi. Referensi tetap dan tidak ada lagi segitiga kuning. Terima kasih.

Ali Keserwan
sumber
1

Saya menghadapi kesalahan ini ketika saya mengkloning proyek. alasan utamanya adalah paket Nuget tidak dapat memulihkan dan saya menemukan solusi dengan menjadikan nuget.org hanya sumber daya aktif.

masukkan deskripsi gambar di sini

Pastikan Anda memilih Nuget.org sebagai sumber daya aktif saja.

Semoga membantu

Shervin Ivari
sumber
1

Tanda seru kuning biasanya karena referensi yang hilang atau dll yang tidak didukung. Jika Anda mengkloning repositori maka ada kemungkinan banyak paket nugget akan menampilkan tanda seru berwarna kuning. Jika Anda telah memverifikasi versi proyek sudah sesuai dan masih ada masalah, Anda dapat mencoba solusi di bawah ini.

Di konsol manajer paket, pilih proyek di mana Anda menghadapi masalah ini dan kemudian ketik perintah berikut.

Update-Package -Reinstall

Ini akan memaksa menginstal ulang semua paket. Perintah ini tidak akan memperbarui versi paket NuGet, itu hanya akan memaksa menginstal ulang.

Solusi ini berhasil dalam kasus saya. Saya menggunakan VS2019. Semoga ini bisa membantu orang lain juga.

Cerah
sumber
0

Mungkin ada 1 paket yang dapat menyebabkan yang lainnya tidak dapat dimuat. coba untuk mengomentari paket dari .csproj satu per satu dan cari tahu mana yang menjadi masalah untuk mempersempitnya.

Guven Sezgin Kurt
sumber
0

Jika saya mencoba menghapus instalan Microsoft.NETCore.Platformsseperti yang dinyatakan dalam jawaban yang ditandai, saya mendapatkan kesalahan berikut:

Tidak dapat mencopot 'Microsoft.NETCore.Platforms.1.1.0' karena 'NETStandard.Library.2.0.3' bergantung padanya.

Saya mencopot paket lain, tetapi saya masih mendapatkan NETSDK1023kesalahan:

PackageReference untuk 'NETStandard.Library' disertakan dalam proyek Anda. Paket ini secara implisit direferensikan oleh .NET SDK dan Anda biasanya tidak perlu mereferensikannya dari proyek Anda. Untuk informasi lebih lanjut, lihat https://aka.ms/sdkimplicitrefs

Sekarang saya mengedit .csproj saya dan menghapus bagian berikut

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

sebagaimana dinyatakan dalam https://aka.ms/sdkimplicitrefs di bawah Rekomendasi :

Saat menargetkan .NET Core atau .NET Standard, jangan pernah memiliki referensi eksplisit ke Microsoft.NETCore.Appatau NETStandard.Librarymetapackages melalui <PackageReference>item dalam file proyek Anda.

Sekarang peringatan itu hilang!

pengujian
sumber
0

Semua hal di atas tidak berhasil untuk saya. Saya punya satu proyek dalam solusi dengan segitiga peringatan pada ketergantungan ke proyek lain dalam solusi yang menyebabkan banyak kesalahan merah di VS. Namun, itu akan membangun, menjalankan, dan men-debug dengan baik. Saya akhirnya membongkar proyek dengan klik kanan pada nama proyek di pohon solusi, dan kemudian memuat ulang proyek dan semuanya senang sekarang. Terima kasih Visual Studio, smh. Saya menggunakan VS 2019 16.7.1

pengguna2178025
sumber
0

Mulai Ulang Mesin

Saya percaya bahwa situasi saya adalah bahwa beberapa proses tidak merilis dll tertentu setelah cache flush dan kemudian akuisisi dll gagal karena kunci itu (?).

Dengan me-restart mesin saya dan donet restoremenyelesaikan masalah dan saya dapat membangun lagi tanpa kesalahan paket yang hilang.

ΩmegaMan
sumber
-4

Jika tidak ada masalah dengan Anda untuk memperbarui semua paket NuGet yang dapat menyelesaikan masalah ini.

Menu Tools -> NuGet Package Manager -> Kelola Paket Nuget untuk Solusi . Ketika menu ini muncul, klik pada tab Update dan klik tombol Update All .

Sistem Teratas
sumber
5
Bukankah itu akan memperbarui semua paket ke versi terbaru? Ini mungkin tidak diinginkan jika versi tertentu (tidak terbaru) dari satu atau lebih paket diperlukan.
Gertsen
Jika Anda sudah menggunakan paket terbaru, ini adalah solusi yang sangat baik. Memperbaiki masalah saya segera.
n4rzul
1
Ini tidak selalu menjadi solusi. Terkadang ada paket dalam proyek yang tidak boleh diperbarui.
caras