uyarı: MyProject.csproj'a başvuran tüm projeler Microsoft.Bcl.Build nuget paketini yüklemelidir


90

VS 2012'de geliştirilmiş bir ASP.NET MVC 4 uygulamam var. Uygulama bir ana proje (MyProject), bir birim test projesi (MyProject.Tests), bir Azure dağıtım projesi (MyProject.Azure) ve birkaç genel amaçlı kütüphane projeleri.

Çözüme veya ana projeye sağ tıkladığımda ve NuGet Paketlerini Yönet'i seçtiğimde, görünüşe göre geçen ay içinde kullanıma sunulan bir grup Microsoft güncellemesi görüyorum. Tümünü Güncelle düğmesine tıklarsam, güncellemeler görünürde herhangi bir sorun olmadan yüklenir, ancak çözümü oluşturduğumda bu hata mesajını İKİ KEZ:

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

Tamam, bu yüzden Projem'e başvuran iki projem var: MyProject.Tests ve MyProject.Azure. MyProject.Tests'e sağ tıklayıp ManageNuGet Packages'ı seçip Microsoft.Bcl.Build'i ekleyebilirim. Bu, iki uyarıdan birini ortadan kaldırır. Ancak VS, MyProject.Azure projesi için NuGet paketlerini yönetme seçeneği sunmuyor .

Microsoft.Bcl.Build paketini Azure dağıtım projesine nasıl eklerim?

DÜZENLE:

Kullanıcı şişkinliği sayesinde , artık bu sorun için bir Microsoft Connect sorununun burada açıldığını biliyorum .


2
Bağlantı sorununa referans için teşekkürler, bu can sıkıcı bir sorundur.
Paul Keister

1
Dağıtım projesini oluştururken oluşan uyarı ile ilgili olarak, proje yayınlanırken sahte uyarıya neden olan bir hata da vardır . Yayınla ilgili hata ayrıca Connect'te de rapor edilir . Bir çözüm bilmiyorum.
Edward Brey

3
Aynı sorun, diğer projelere referansları olan WiX projelerinde de başıma geliyor (proje çıktısını toplamak amacıyla "ısı"). Bir WiX yükleyici projesinin NuGet paketlerini yüklemesinin hiçbir anlamı yoktur! Argh !!
Jaans

Yanıtlar:


54

Uyarıyı çift tıklarsanız, size uyarıyı devre dışı bırakmanız için talimatlar verir.

Henüz Nuget'i desteklemeyen projelerden gelen proje referansları için devre dışı bırakmak güvenlidir.

Microsoft.Bcl.Build.targets'dan kopyalanmış kalın yazıyla aşağıdaki bölüme bakın .

BclBuildValidateNugetPackageReferences

Bu hedef, referans için SkipValidatePackageReferences = true ayarlanarak bir proje referansı için devre dışı bırakılabilir :

<ProjectReference Include="..\pcl\pcl.csproj">
  <Project>{664a9e98-fac7-4567-a046-0dde95fddb48}</Project>
  <Name>pcl</Name>
  <Properties>SkipValidatePackageReferences=true</Properties>
</ProjectReference>

4
Arthur, Özellikler yerine AdditionalPropertes meta veri değerini ayarlamayı deneyebilir misin?
TheESJ

5
@TheESJ Bir WiX projesinde bu sorunu yaşıyordum ve Özellikler yerine Ek Özellikler ayarlanıyor gibi görünüyor. Nedenini bilmekle ilgileniyorum
lc.

3
Bu, yalnızca çözümü oluşturmak için çalışır, ancak başlangıç ​​projeniz olarak gerçekten 'Run' ile Azure projesini kullandığınızda uyarıları tekrar göreceksiniz.
eoleary

2
Yapı üzerinde bile çalışmayın. VS 2015 Community Edition.
Artyom

2
VS2015 Professional'da çalışmadı. Bu satırı eklerken aynı sorunu yaşıyorum.
aclalex

63

TheESJ tarafından verilen cevap doğru, ancak ifade benim için net değildi. Cevap hakkında yorum yapamayacağım için burada daha fazla ayrıntı vereceğim. Özellikle, bir Azure projesinde bu sorunu yaşıyordum ve uyarının ortadan kalkması için aşağıdaki geçici çözüm gerekiyordu:

VisualStudio'daki uyarıyı çift tıklattığınızda, Microsoft.BclBuild.targets dosyasındaki BclBuildValidateNugetPackageReferences hedefine yönlendirilirsiniz. Gerçek hedef öğenin üzerinde, proje referans kontrollerinin devre dışı bırakılmasından bahseden büyük bir yorum bloğu bulmalısınız. Azure projelerinin herhangi bir kitaplık başvurusu olamayacağından, bu Azure projelerinin bu belirli derleme hedefinin gereksinimlerini karşılaması imkansızdır.

Çözüm? Bir nuget paket başvurusu eklemek imkansız olduğundan Azure projesinden referans denetimini devre dışı bırakın.

MİSAL

Öyleyse, iki projemiz olduğunu varsayalım: MyProject.csproj'a başvuran MyAzureProject.ccproj . Bu adımları takip et:

  1. Çözüm Gezgini'nde "MyAzureProject" üzerine sağ tıklayın ve "Proje Dosyasını Düzenle" yi seçin.
  2. "Projem" için proje referansını bulun. Şunun gibi görünmelidir:

    <ProjectReference Include="..\MyProject\MyProject.csproj">
      <Name>MyProject</Name>
      <Project>{1d99490e-d140-4897-9890-238e673a5864}</Project>
      ...
    </ProjectReference>
    
  3. ProjectReference öğesinin içine aşağıdaki öğeyi ekleyin:

      <Properties>SkipValidatePackageReferences=true</Properties>
    
  4. Proje referansınız şimdi şöyle görünmelidir:

    <ProjectReference Include="..\MyProject\MyProject.csproj">
      <Name>MyProject</Name>
      <Project>{1d99490e-d140-4897-9890-238e673a5864}</Project>
      ...
      <Properties>SkipValidatePackageReferences=true</Properties>
    </ProjectReference>
    
  5. Solution Explorer'da "MyAzureProject" üzerine sağ tıklayın ve "Projeyi Yeniden Yükle" yi seçin.

Artık yeniden inşa edebilmelisiniz ve hata gitmiş olmalıdır.


17

2
Şunu mu demek istediniz MyAzureProject.ccprojyerine MyAzureProject.csproj?
Edward Brey

Yalnızca başvurulan proje * .csproj dosyasına '<Properties> SkipValidatePackageReferences = true </Properties>' eklersem çalışır. Sadece * .ccproj düzenlemek çalışmıyor.
alexey

1
@pius Bu küçük bir özellik, ancak VS'nin çeşitli sürümleri için Üretkenlik Güç Araçları'nda 'Güç Komutları'nın altında' Proje Dosyasını Düzenle 'bağlamsal menü seçeneği var . Projeyi kaldıracak ve sizin için proje dosyasını tek bir tıklamayla açacaktır.
Jeff

16

Aynı sorunla karşılaştım ve Microsoft.Bcl.Build.targets'ı güncellemeye çalışıyordum; yardımcı olmadı.

Biraz araştırma yaptıktan sonra , Azure Hizmeti projesinin .csproj dosyasının dahil edilecek şekilde değiştirilmesi gerektiği bulundu <Properties>SkipValidatePackageReferences=true</Properties>.

Bu, @ TheESJ'in cevabından anlaşılamadı ve bu yüzden ayrı bir cevap göndermeye karar verdi. @TheESJ'e teşekkürler.


2

Bu sorunla birkaç kez karşılaştım ve Özellikler yöntemi gerçekten işe yarıyor, ancak bir Wix projesiyle uğraşırken bunun yerine aşağıdakileri yapmam gerekiyordu:

<AdditionalProperties>SkipValidatePackageReferences=true</AdditionalProperties>

Özellikler Xml düğümünü kullandığımda yeni bir hata aldım:

OutputPath özelliği 'MyInstallerProject.csproj' projesi için ayarlanmadı. Lütfen bu proje için geçerli bir Yapılandırma ve Platform kombinasyonu belirttiğinizden emin olun. Yapılandırma = 'Hata Ayıklama' Platform = 'x86'. Bu hata, başka bir proje bu projeye bir projeden projeye referansı takip etmeye çalışıyorsa, bu proje kaldırılmışsa veya çözüme dahil edilmemişse ve referanslama projesi aynı veya eşdeğeri kullanılarak oluşturulmuyorsa da ortaya çıkabilir. Yapılandırma veya Platform.


0

Yukarıdaki cevaplardan herhangi biriyle sorunları çözemedikten sonra, yalnızca Microsoft.Bcl.Build.targets dosyasındaki talimatları izledim (yapı çıktı penceresinde hataya çift tıkladıktan sonra görüntülenir). Hatayla karşılaşarak projemi kaldırdım (Azure paketlerine başvurarak). Proje dosyasını düzenledi ve aşağıdakileri ekledi ...

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

... ilk PropertyGroup'tan önce proje dosyasının en üstünde.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.