Peringatan: Semua proyek yang mereferensikan MyProject.csproj harus menginstal paket nuget Microsoft.Bcl.Build

90

Saya memiliki aplikasi ASP.NET MVC 4 yang dikembangkan pada VS 2012. Aplikasi ini terdiri dari proyek utama (MyProject), proyek uji unit (MyProject.Tests), proyek penyebaran Azure (MyProject.Azure), dan beberapa proyek perpustakaan tujuan umum.

Ketika saya mengklik kanan pada solusi atau proyek utama dan memilih Kelola Paket NuGet, saya melihat banyak pembaruan Microsoft yang tampaknya tersedia dalam sebulan terakhir ini. Jika saya mengklik tombol Perbarui Semua maka pembaruan tampaknya diinstal tanpa masalah yang jelas, tetapi ketika saya membangun solusi, saya mendapatkan pesan kesalahan ini DUA KALI:

warning : All projects referencing MyProject.csproj must install nuget package Microsoft.Bcl.Build

Ok, jadi saya punya dua proyek yang mereferensikan MyProject: MyProject.Tests dan MyProject.Azure. Saya dapat mengklik kanan MyProject.Tests, pilih ManageNuGet Packages, dan tambahkan Microsoft.Bcl.Build. Itu menghilangkan salah satu dari dua peringatan. Tetapi VS tidak memberi saya pilihan untuk mengelola paket NuGet untuk proyek MyProject.Azure .

Bagaimana cara menambahkan paket Microsoft.Bcl.Build ke proyek penyebaran Azure?

EDIT:

Berkat pembengkakan pengguna , saya sekarang tahu bahwa masalah Microsoft Connect untuk masalah ini telah dibuka di sini .

Bob.at.Indigo.Health
sumber
2
Terima kasih atas referensi untuk masalah koneksi, ini adalah masalah yang mengganggu.
Paul Keister
1
Terkait peringatan saat membangun proyek penerapan, ada juga bug yang menyebabkan peringatan palsu saat mempublikasikan proyek. Bug terkait publikasi juga dilaporkan di Connect . Saya tidak tahu cara mengatasinya.
Edward Brey
3
Masalah yang sama terjadi pada saya untuk proyek WiX yang memiliki referensi ke proyek lain (untuk tujuan memanen keluaran proyek alias "panas"). Tidak masuk akal untuk proyek penginstal WiX untuk menginstal paket NuGet! Argh !!
Jaans
2
Tautan ke masalah koneksi sekarang mengembalikan 404 connect.microsoft.com/VisualStudio/feedback/details/789839/…
Ryan Gates

Jawaban:

54

Jika Anda mengklik dua kali peringatan itu memberi Anda instruksi untuk menonaktifkan peringatan.

Aman untuk menonaktifkan referensi proyek dari proyek yang belum mendukung Nuget.

Lihat bagian di bawah dengan huruf tebal disalin dari Microsoft.Bcl.Build.t target.

BclBuildValidateNugetPackageReferences

Target ini dapat dinonaktifkan untuk referensi proyek dengan menyetel SkipValidatePackageReferences = true untuk referensi:

<ProjectReference Include="..\pcl\pcl.csproj">
  <Project>{664a9e98-fac7-4567-a046-0dde95fddb48}</Project>
  <Name>pcl</Name>
  <Properties>SkipValidatePackageReferences=true</Properties>
</ProjectReference>
TheESJ
sumber
4
Arthur, dapatkah Anda mencoba menyetel nilai metadata AdditionalPropertes daripada Properties?
TheESJ
5
@TheESJ Saya mengalami masalah ini dengan proyek WiX dan sepertinya menyetel AdditionalProperties alih-alih Properties bekerja. Saya tertarik untuk mengetahui mengapa
lc.
3
Ini berfungsi hanya untuk membangun solusi, tetapi ketika Anda benar-benar menggunakan 'Run' dengan proyek azure sebagai proyek startup Anda, Anda akan melihat peringatan lagi.
eoleary
2
Jangan bekerja bahkan saat membangun. VS Edisi Komunitas 2015.
Artyom
2
Tidak bekerja di VS2015 Professional. Saya memiliki masalah yang sama saat menambahkan baris ini.
aclalex
63

Jawaban yang diberikan oleh TheESJ benar, namun kata-katanya tidak jelas bagi saya. Karena saya tidak bisa mengomentari jawabannya, saya akan memberikan detail lebih lanjut di sini. Secara khusus, saya mengalami masalah ini dengan proyek Azure dan solusi berikut diperlukan untuk menghilangkan peringatan:

Saat Anda mengklik dua kali peringatan di VisualStudio, Anda akan dibawa ke target BclBuildValidateNugetPackageReferences di file Microsoft.BclBuild.t target. Di atas elemen target sebenarnya, Anda harus menemukan blok komentar besar yang berbicara tentang menonaktifkan pemeriksaan referensi proyek. Karena proyek Azure tidak dapat memiliki referensi pustaka apa pun, tidak mungkin bagi proyek Azure tersebut untuk memenuhi persyaratan target pembuatan khusus ini.

Solusinya? Nonaktifkan pemeriksaan referensi dari proyek Azure karena tidak mungkin untuk benar-benar menambahkan referensi paket nuget.

CONTOH

Jadi, asumsikan kita memiliki dua proyek: MyAzureProject.ccproj yang mereferensikan MyProject.csproj . Ikuti langkah ini:

  1. Klik kanan pada "MyAzureProject" di Solution Explorer dan pilih "Edit Project File."
  2. Temukan referensi proyek untuk "MyProject." Ini akan terlihat seperti:

    <ProjectReference Include="..\MyProject\MyProject.csproj">
      <Name>MyProject</Name>
      <Project>{1d99490e-d140-4897-9890-238e673a5864}</Project>
      ...
    </ProjectReference>
    
  3. Tambahkan elemen berikut di dalam elemen ProjectReference:

      <Properties>SkipValidatePackageReferences=true</Properties>
    
  4. Referensi proyek Anda sekarang akan terlihat seperti ini:

    <ProjectReference Include="..\MyProject\MyProject.csproj">
      <Name>MyProject</Name>
      <Project>{1d99490e-d140-4897-9890-238e673a5864}</Project>
      ...
      <Properties>SkipValidatePackageReferences=true</Properties>
    </ProjectReference>
    
  5. Klik kanan pada "MyAzureProject" di Solution Explorer dan pilih "Reload Project."

Anda sekarang harus dapat membangun kembali dan kesalahan harus hilang.

AggieEric
sumber
17
Dalam versi VS saya, saya harus mengklik kanan dan "Unload Project" terlebih dahulu sebelum saya dapat mengklik kanan untuk mengedit file proyek
pius
2
Apakah maksud Anda MyAzureProject.ccprojbukan MyAzureProject.csproj?
Edward Brey
Ini hanya berfungsi jika saya menambahkan '<Properties> SkipValidatePackageReferences = true </Properties>' ke file proyek * .csproj yang direferensikan. Hanya mengedit * .ccproj tidak berhasil.
alexey
1
@pius Ini adalah fitur kecil, tetapi ada opsi menu kontekstual 'Edit File Proyek' di bawah 'Perintah Daya' di Productivity Power Tools , tersedia untuk beberapa edisi VS. Ini akan membongkar proyek dan membuka file proyek untuk Anda dalam satu klik.
Jeff
16

Saya menghadapi masalah yang sama dan mencoba memperbarui Microsoft.Bcl.Build.t target; yang tidak membantu.

Setelah beberapa penyelidikan menemukan bahwa file .csproj dari proyek Layanan Azure harus dimodifikasi untuk disertakan <Properties>SkipValidatePackageReferences=true</Properties>.

Ini tidak terlihat dari jawaban @TheESJ dan memutuskan untuk memposting jawaban terpisah. Terima kasih untuk @TheESJ.

Santosh
sumber
2

Saya mengalami masalah ini beberapa kali, dan metode Properties memang berfungsi, tetapi ketika berurusan dengan proyek Wix, saya harus melakukan hal berikut:

<AdditionalProperties>SkipValidatePackageReferences=true</AdditionalProperties>

Ketika saya menggunakan node Properties Xml, saya mendapat kesalahan baru:

Properti OutputPath tidak disetel untuk proyek 'MyInstallerProject.csproj'. Harap periksa untuk memastikan bahwa Anda telah menentukan kombinasi yang valid dari Konfigurasi dan Platform untuk proyek ini. Konfigurasi = 'Debug' Platform = 'x86'. Kesalahan ini juga dapat muncul jika beberapa proyek lain mencoba mengikuti referensi proyek-ke-proyek untuk proyek ini, proyek ini telah dibongkar atau tidak termasuk dalam solusi, dan proyek referensi tidak dibangun menggunakan yang sama atau setara Konfigurasi atau Platform.

ozz
sumber
0

Setelah gagal menyelesaikan masalah dengan salah satu jawaban di atas, saya cukup mengikuti instruksi yang terdapat dalam file Microsoft.Bcl.Build.t target (ditampilkan setelah mengklik dua kali pada kesalahan di jendela build output). Saya membongkar proyek saya (merujuk paket Azure), mengalami kesalahan. Mengedit file proyek dan memasukkan yang berikut ...

<PropertyGroup>
      <SkipValidatePackageReferences>true</SkipValidatePackageReferences>
</PropertyGroup>

... di bagian atas file proyek sebelum PropertyGroup pertama.

Mick
sumber