Dosya veya derleme System.Net.Http, Sürüm = 4.0.0.0 ASP.NET (MVC 4) Web API OData Ön Sürüm ile yüklenemedi


81

Sorun

Microsoft ASP.NET Web API OData paketi 5.0.0-rc1 ön sürümünü yükledikten sonra aşağıdaki özel durumla karşılaşıyorum:

Dosya veya derleme 'System.Web.Http, Version = 4.0.0.0, Culture = nötr, PublicKeyToken = 31bf3856ad364e35' veya bağımlılıklarından biri yüklenemedi. Bulunan derlemenin bildirim tanımı, derleme başvurusuyla eşleşmiyor. (HRESULT istisnası: 0x80131040)

MVC 4 projem yepyeni ve gerçekten küçük, içinde hiçbir şey fantezi değil. .NET framework 4.5'i hedefliyorum

PATCH'i Delta sınıfını kullanarak uygulamak için bu nuget paketine ihtiyacım var (Paketin 4.0.0.0 sürümünü kullandığımda, Delta sınıfı çalışmıyor).

Bunu nasıl düzeltebilirim?

System.Web.Http sürümlerim

In GAC ben sürümüne sahip 5.0.0.0 System.Web.Http arasında

gacutil -l System.Web.Http Genel Birleştirme Önbelleği aşağıdaki derlemeleri içerir: System.Web.Http, Sürüm = 5.0.0.0, Culture = nötr, PublicKeyToken = 31bf3856ad364e35, processorArchitecture = MSIL

Gelen Visual Studio , ben meclisleri gezinirken, System.Web.Http verili sürümüdür 4.0.0.0 (Neden?)

In projemde , System.Web.Http referans

  • 5.0.0.0 sürümüne sahiptir
  • Paketin \ lib \ net45 \ klasörüne işaret eder
  • CopyLocal = true vardır

Denediğim şeyler

Web.config içinde yeniden yönlendirme v 4.0.0.0'ı 5.0.0.0'a bağlamayı denedim

<dependentAssembly>
    <assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35" culture="neutral" />
    <bindingRedirect oldVersion="4.0.0.0-4.0.0.0" newVersion="5.0.0.0" />
</dependentAssembly>

Ama bana başka bir istisna veriyor:

'System.Web.Http.GlobalConfiguration.CS $ <> 9__CachedAnonymousMethodDelegate2' alanına erişmek için 'System.Web.Http.GlobalConfiguration..cctor ()' yöntemiyle girişimi başarısız oldu.

Sanırım v 4.0.0.0'ın gerçekten çekirdek Web Api motoru tarafından kullanılması gerekiyor.

Bağlantılı sorular

Kod Analizi hatası Dosya veya derleme yüklenemedi 'System.Net.Http, Sürüm = 2.0.0.0 MVC4 Web API'sinde Dosya veya derleme yüklenemedi' System.Net.Http, Sürüm = 2.0.0.0 MVC4 Web API'de


1
Belki bu cevap size yardımcı olabilir: stackoverflow.com/a/18700279/795876
fsenart

Yanıtlar:


164

Visual Studio 2013, bununla ilgilenmek için yeni bir özelliğe sahiptir. Uygulamayı oluşturduğunuzda, başvurulan bir montajın farklı sürümleri hakkında uyarılar görmelisiniz. Web.config dosyasına derleme bağlama yönlendirmeleri eklemek için uyarıya çift tıklayın.

Daha fazla ayrıntı için http://msdn.microsoft.com/en-us/library/2fc472t2.aspx adresine bakın.

jeff.eynon, VS'nin dosyayı otomatik olarak düzenlemesini sağlamak için web.config'i teslim almanız gerektiğini (TFS kaynak kontrolü kullanılıyorsa) aşağıda belirtmektedir. Bahşiş için teşekkürler!


7
Keşke bunu 10 kez yükseltebilseydim. VS'nin bunu otomatik olarak yapması güzeldi. Bahşiş için teşekkürler
Bob Horn

4
Maalesef her zaman işe yaramıyor. Aslında, sık sık söyleyeceğim, bu uyarıya çift tıklamanın hiçbir şey yapmadığını.
Trevor de Koekkoek

3
Değiştirilmekte olan web / uygulama yapılandırmasına göz atmanız gerekir. Her ne sebeple olursa olsun, VS bu durumda dosyayı sizin için teslim almaya istekli görünmüyor.
jeff.eynon

39

NuGet kullanarak WebApi paketini yayın öncesi sürümüne yükselterek çalışmasını sağladım:

PM> Microsoft.AspNet.WebApi -Pre

Projeyi WebApi'nin en son sürümünü kullanarak zorlamak için, kök Web.config dosyasında bazı değişiklikler gerekliydi:

1) 2.0.0.0'dan 3.0.0.0'a Web Sayfaları Sürümü

<appSettings>
    <add key="webpages:Version" value="3.0.0.0" />
</appSettings>

2) System.Web.Http ve System.Net.Http.Formatting için 5.0.0.0'a bağlama yeniden yönlendirmesi

<dependentAssembly>
    <assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.0.0.0" />
</dependentAssembly>
<dependentAssembly>
    <assemblyIdentity name="System.Net.Http.Formatting" publicKeyToken="31bf3856ad364e35" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.0.0.0" />
</dependentAssembly>

bence bu kadar

Not: WebAPI OData 5.0 Beta'dan büyük ölçüde esinlenen çözüm - GlobalConfiguration'a erişim Güvenlik Hatası verir


3
bu benim için çalıştı - güncellenmiş system.net.http bağımlılığı nedeniyle en son CORS web api paketini yüklerken aynı sorunla karşılaştım.
sandeep talabathula

1
harikasın adamım, çok teşekkürler Benim durumumda web yapılandırması nuget geri yüklemesi tarafından güncellenmedi, dağıtımdan sonra manuel olarak yapıyorum.
Leandro

Aynı şekilde, bu da +1 alır çünkü VS bunu sizin için yapmazsa, bağlama işlemini kendiniz yapabilmek için bu yanıta ihtiyacınız vardır.
Michael Blackburn

11

Aynı problemle karşılaştım ve aşağıdaki kitaplıklar için CopyLocal'ı true olarak ayarlayarak çözdüm:

System.Web.Http.dll
System.Web.Http.WebHost.dll
System.Net.Http.Formatting.dll

MVC4 ve NET 4 kullandığımı eklemeliyim


1
bu benim için de çözdü - ancak bunun gerçekte ne anlama geldiğini gerçekten bilmek isterim?
serup

11

Bu sorunu, 10/23/2013 itibariyle proje şablonundan bir Sıcak Havlu Projesini güncellemeye çalıştığımda ve boş bir proje oluşturup nuget aracılığıyla HotTowel'i VS 2012'de kurduğumda yaşadım.

Düzeltmek için Nuget aracılığıyla Web Api Web Host ve Web API paketlerini şu anda NuGet'teki mevcut sürüm olan 5.0'a (10/23/2013) güncelledim.

Daha sonra bağlama yönlerini ekledim:

<dependentAssembly>
  <assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35" culture="neutral" />
  <bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.0.0.0" />
</dependentAssembly>
<dependentAssembly>
  <assemblyIdentity name="System.Net.Http.Formatting" publicKeyToken="31bf3856ad364e35" culture="neutral" />
  <bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.0.0.0" />
</dependentAssembly>

8

Veya bunu NuGet Paket Yöneticisi Konsolu'ndan yapabilirsiniz

 Install-Package Microsoft.AspNet.WebApi -Version 5.0.0

Ve sonra referansı System.Web.Http.WebHost 5.0'a ekleyebileceksiniz.


4

System.Web.Http ve System.Net.Http.Formatting'i referanslarınızdan kaldırın ve bin klasörünüze göz atarak referansları tekrar ekleyin (nuget tarafından kopyalandıkları yer) Şimdi dosya sürümü 5.0.0.0 diyor


1

Bu hata, birkaç farklı projede birkaç kez ortaya çıktı.

Sonunda anladığım şey, inşa ettiğimde, bin klasörümde system.web.mvc ikili derlemesinin bir kopyası olduğuydu.

Bunu düzeltmek için, referanslar listesindeki montaja sağ tıklayın ve "özellikler" i seçin. "Sürüm" özelliğine bakarak bunun en son sürüm olup olmadığını kontrol edin. Öyleyse, "Yerel Kopyala" yı true olarak değiştirin.

Bu, projenizde atıfta bulunulan sürümün ikili dosyalar klasörünüzde sona erecek sürüm olduğundan emin olmanızı sağlayacaktır.

Hala hatayı alıyorsanız, en son sürümü almak için nuGet'i çalıştırmayı ve ardından yukarıda belirtilenleri tekrar deneyin.

İyi şanslar - bu hata bir acıdır!


1

Ben de aynı hatayla karşılaştım. Unity Framework for Dependency Injection'ı kurduğumda, Http ve HttpFormatter'ın yeni referansları konfigürasyonuma eklendi. İşte izlediğim adımlar.

NuGet Paket Yöneticisi Konsolunda şu komutu çalıştırdım: PM> Install-Package Microsoft.ASPNet.WebAPI -pre

Ve 5.0 sürümüyle dll'ye fiziksel referans eklendi


1

nuget ile çözerim. nuget'i ilk kurduğunuzda. Kullandığınız saniye.
örnek takip edin:

üçüncü: "Sürüm" özelliğine bakarak bunun en son sürüm olup olmadığını kontrol edin.

Son olarak: projenin en son sürüme sahip olup olmadığını kontrol edin.


0

Aynı tür sorunla karşılaştım ve sorunu çözmek için aşağıdaki adımları izledim

Araçlar -> Kitaplık Paket Yöneticisi -> Paket Yöneticisi Konsolu'na gidin ve aşağıdaki komutu çalıştırın

Yükleme Paketi Microsoft.ASPNet.WebAPI -pre


0

Web.configDosyadaki Referansları yukarıda belirtildiği gibi değiştirdikten sonra referansları çözdük.

Ben de benzer bir sorunla karşı karşıyaydım.

Bizim için biz referansı olan Microsoft.Data.Edm.dllve OData.dllve Program Files diğer meclisleri:

C:\Program Files (x86)\Microsoft WCF Data Services\5.0
                          \bin\.NETFramework\Microsoft.Data.Edm.dll

ve

C:\Program Files (x86)\Microsoft WCF Data Services\5.0
                        \bin\.NETFramework\Microsoft.Data.OData.dll

ve sürüm 5.6.4'tü .

Her iki derlemenin referansını olarak değiştirdiğimde C:\....Project\packages\Microsoft.Data.Edm.5.6.0sorun çözüldü


0

Nuget paket yöneticisine girdim ve paketlerimi güncelledim. Şimdi çalışıyor. Güncellediğim ana Microsoft.AspNet.WebApi.Core. Uygun referansları senkronize etmek için bunu her iki projeyle yapmanız gerekebilir.


0

Bu sorun ortaya çıkarsa, lütfen aşağıdaki bölümde web.config'i kontrol edin

Aşağıdaki bölüm, kullanılan belirli dll'nin sürümünü verir

web.config'de bu bölümü kontrol ettikten sonra, çözüm gezginini açın ve gösterildiği gibi proje ağacından referans seçin. Çözüm Gezgini-> Başvuru

Referansı genişlettikten sonra, hataya neden olan dll'yi bulun. Dll referansına sağ tıklayın ve yukarıdaki resimde gösterildiği gibi sürümü kontrol edin.

Hem yapılandırma dll sürümü hem de başvurulan dll farklıysa, bu istisnayı alırsınız. Her ikisinin de yardımcı olabilecek aynı sürüm olduğundan emin olun.

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.