Dosya veya montaj yüklenemedi 'Newtonsoft.Json, Sürüm = 4.5.0.0, Kültür = nötr, PublicKeyToken = 30ad4fe6b2a6aeed'


233

Hata alıyorum

System.IO.FileLoadException: Dosya veya derleme 'Newtonsoft.Json, Sürüm = 4.5.0.0, Kültür = nötr, PublicKeyToken = 30ad4fe6b2a6aeed' veya bağımlılıklarından biri yüklenemedi. Konumlandırılan derlemenin bildirim tanımı derleme başvurusuyla eşleşmiyor. (HRESULT istisnası: 0x80131040)

CI yapım için

Denediğim çözüm

<dependentAssembly>
    <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed"
        culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
</dependentAssembly>

Ayrıca işe yaramadı


Hata, .NET'in Json.NET kitaplığını bulamadığı anlamına gelir . Yüklediniz mi?
TypeIA

22
Tam aynı problenm - beni deli ediyor. Bir çözüm bulursanız bana bildirin
Dean Chalk

Aslında, benim denediklerinizi eklemek benim için sorunu çözdü.
h.alex

Sürümlerin dağılmamasını sağlamak için NuGet paket yöneticisindeki birleştirme seçeneğini kullanın.
niico

Benim için işe yarayan
RichC

Yanıtlar:


237

Paket yöneticisi konsolunda yürütün: Update-Package –reinstall Newtonsoft.Json.

GÜNCELLEME

Başlangıçta bu bir yorum olarak gönderdi ama @OwenBlacker önerdiğim gibi ben sadece buraya koyacağım:

Bunu yaptıktan sonra hala bir hata alırsanız, o zaman benim için işe yarayan şey, Json.Net'in <dependentAssembly>bölümünü dosyamdan sildiğimdir .config. Yeniden yükle, orada değilse geri getirir ve görünüşe göre silmeniz gerekir. Paketin kendisinde normal bir çözüm olana kadar, korkarım ki bu manuel adım bir zorunluluktur.

Not: Bunu yapmadan önce lütfen aşağıdaki yorumları okuyun.

René'nin aşağıdaki yorumuna göre , cevapta verilen komutun çözümü çözümünüzdeki her projeye yeniden yükleyeceğine dikkat edin. Bu nedenle, birkaç projede Newtonsoft.Json paketini kullanır ve belki de farklı sürümleri kullanırsanız, yukarıdaki komutu yürütmenin istenmeyen sonuçları olabilir.


7
Bunu okuyan herkes uğruna: Bunu yaptım ve hala hatayla karşılaştım. Sonra bir şekilde çözdüm : Şaşırtıcı bir şekilde, Json.Net'in bölümünü dosyamdan silmek zorunda kaldım . Yeniden yükle, orada değilse geri getirir ve görünüşe göre silmeniz gerekir. Paketin kendisinde normal bir çözüm olana kadar, korkarım ki bu manuel adım bir zorunluluktur. <dependentAssembly>.config
Ofer Zelig

@OferZelig Bunu ayrı bir cevap olarak yayınlamalısınız, böylece yukarı oyları alabilir (ve daha da önemlisi, artan ilgi). En azından benim için de işe yaradığı için :)
Owen Blacker

@OwenBlacker teşekkürler. Ama zaten çok sayıda cevap olduğu için benimki kaybolacak. Ve bu cevap oldukça iyi, eğer işe yaramazsa yorumum bunu "tamamlar". Biliyor musun? Sanırım orijinal cevabı düzenleyeceğim. Kendi temsilcisi olmaktan daha önemli.
Ofer Zelig

43
Cevaba gönderilen komutun , çözümü çözümünüzdeki her projeye yeniden yükleyeceğini unutmayın. Bu nedenle, birkaç projede Newtonsoft.Json paketini kullanır ve belki de farklı sürümleri kullanırsanız, yukarıdaki komutu yürütmenin istenmeyen sonuçları olabilir.
René

Çözüldü! Benim için, bir projede v6 yükledim, paket yöneticisinden yeniden yüklemek v7'ye getirdi.
jv-dev

123

Newtonsoft.Json v4.5 sürümünde sorun yaşayan herkes için bunu web.config veya app.config dosyasında kullanmayı deneyin:

<runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
       <dependentAssembly>
           <assemblyIdentity name="Newtonsoft.Json"
               publicKeyToken="30AD4FE6B2A6AEED" culture="neutral"/>
           <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0"/>
       </dependentAssembly>
    </assemblyBinding>
</runtime>

ÖNEMLİ : configurationYapılandırma dosyanızın etiketinin ad alanı özelliği olmadığından emin olun ( https://stackoverflow.com/a/12011221/150370'de önerildiği gibi ). Aksi takdirde, assemblyBindingetiketler yok sayılır.


3
benim için, bin klasörünün içeriğini temizledikten sonra manuel olarak silmek (boş bırakmayan) bu cevabı uyguladıktan sonra hile yaptı.
Mikaël Mayer

Bunun için bir ton teşekkürler! :)
Kamron K.

Harika çalışıyor! 7/4/15 itibariyle Newtonsoft.Json'un mevcut sürümü 7.0.0'dır, bu nedenle newVersion="6.0.0.0"kullandığınız newVersion="7.0.0.0"veya kullandığınız herhangi bir sürümle değiştirilmelidir
Moses Machua

3
İsim alanındaki not ... Sana sarılabilirim. Bağlayıcı yönlendirmelerin bu yüzden göz ardı edildiğini bilmeden saatlerce yandım.
Brian

1
Ad alanı ile ilgili not o kadar önemlidir ki, kendi başına bir cevap olabilir. Çok teşekkür ederim.
beawolf

42

Önemli nokta, yapılandırma dosyanızdaki doğru sürüme başvurmaktır.

Adım;

1- paket klasörünüzdeki sürüm ne olursa olsun proje başvuru özelliğinde Newtonsoft.Json.dll sürümünüzün ne olduğuna bakın (Örneğin benimki 7.0.1 ve referans Sürümü 7.0.0.0'dır)

2- Projenin istisnada sizden ne beklediğine bakın (benimki 6.0.0.0)

3- Yapılandırma dosyanıza olması gerektiği gibi bağımlı montaj ekleyin.

  <dependentAssembly>
    <assemblyIdentity name="Newtonsoft.Json"  publicKeyToken="30AD4FE6B2A6AEED" culture="neutral"/>
    <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="7.0.0.0"/>
  </dependentAssembly>

Maalesef puanınıza yalnızca bir oy verebilir (Örneğin benimki 7.0.1 ve referans Sürüm 7.0.0.0) büyük bir fark yarattı. Ben daha fazla verirdi ..... Teşekkürler :)
Zaker

Bu benim için çalıştı. Sürümü 7 olarak güncelledim, ancak gerçekten 8 sürümünü çalıştırıyordu, bu yüzden yeni sürümü 8.0 olarak değiştirdim, teşekkürler!
Keith

8.0.3 yüklemesine rağmen (nuget paket yöneticisinde söylendiği gibi), referanslardaki .dll hala 8.0.0'dır. Bu yüzden web.config dosyamda 8.0.0.0 olarak değiştirdim. Wierd, dün her şeyi yayınladığımda nasıl çalıştığını ve bu sabah artık çalışmıyor.
CularBytes

24

Burada sunulan (kaldırma, yeniden yükleme, referansları silme, ciltlemeRedirects oluşturma) herhangi bir çözüm ile şansım yoktu. Newtonsoft eski bir sürümüne geri dönmek zorunda kaldı. Sürüm 5.0.6 daha önce çalışıyordu, bu yüzden denedim. Paket Konsolunda şu iki komutu girmek zorunda kaldım:

uninstall-package newtonsoft.json -force

install-package newtonsoft.json -version "5.0.6"

İlk -forcekomuttaki seçenek, kaldırmayı zorlamak için gereklidir. Diğer montajlardaki bağımlılıklar, onsuz kaldırmayı engeller.


Bir cazibe gibi çalıştı. MVC 4 projemde hata vardı. Neredeyse yerel serileştiriciye geçti.
Kees C. Bakker

teşekkürler, ben sadece -pre: install-package newtonsoft.json -pre -version "5.0.6" değiştirmek için gerekli
thiago.adriano26

22

Bu bağlama yönlendirme .config dosyama ekleme sorunu düzeltildi:

<runtime>
    . . . 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
        <dependentAssembly>
            <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed"
                culture="neutral" />
            <bindingRedirect oldVersion="4.5.0.0" newVersion="6.0.0.0" />
        </dependentAssembly>
    </assemblyBinding>
</runtime>

Hata iletisi, sürüm 4.5.0.0'ın bulunmamasından şikayet ediyor, Newtonsoft.Json'un geçerli sürümü 6.0.0.0'dır, bu nedenle yönlendirme viceversa yerine 4.5'ten 6.0'a gitmelidir.


Evet bu sorunumu çözdü. JSON.NET'in neden olduğu sorunların miktarı çok garip .. ama bir kez giderken bir rüya makinesi. Teşekkürler +1
Piotr Kula

Kod snippet'inizde "assemblyBinding" öğesi eksik olduğunu fark ettim. Teşekkürler
Riga

21

Sanırım yanlış hedefi işaret ediyorsunuz, 6.0 yerine 4.5 olarak değiştirin

<dependentAssembly>
    <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed"
        culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="4.5.0.0" />
</dependentAssembly>

Bu çalışmalı.


1
Umbraco 7 4.5.0.0 gerektirdi, bu yüzden bu işe
koyulmasına

19

Bu sinir bozucu sorunu çözmek için birkaç gün geçirdim. Web'de bulunan hemen hemen her şeyi denedim. Son olarak, bu hatanın (benim durumumda olduğu gibi) tek bir çözümde farklı hedef .Net proje sürümlerinden (4.5 ve 4.5.1) kaynaklanabileceğini buldum. Aşağıdaki adımlar benim için düzeltti:

  1. Çözümünüzdeki her projenin .Net sürümünü iki kez kontrol edin. Sadece projeye sağ tıklayın ve gidin Properties.

resim açıklamasını buraya girin

  1. Mümkünse tüm projeler için aynı .Net sürümünü ayarlayın . En azından Başlangıç ​​projesini değiştirmeye çalışmayın (benim için sorunlara neden olan buydu).

  2. Tüm Newtonsoft.Jsonpaketleri solüsyondan çıkarın .

    uninstall-package newtonsoft.json -force

  3. Newtonsoft.JsonTüm packages.configdosyalardaki tüm sürümleri güncelleyin , böyle

    <package id="Newtonsoft.Json" version="7.0.1" targetFramework="net451" />

  4. Newtonsoft.Json"Paket Yöneticisi Konsolu" ndan yeniden yükleyin :

    install-package newtonsoft.json

  5. Çözümü yeniden oluştur

(İsteğe bağlı) 7. Başlangıç ​​projesini değiştirdiyseniz, tekrar gönderin


12
uninstall-package newtonsoft.json -force
install-package newtonsoft.json

Benim için hile yaptı :)


1
bu benim için hile yaptı. webconfig dosyasını otomatik olarak doğru sürüme güncelledi.
Shaakir

Ben de, bu gerçekten yardımcı oldu.
Mike Malter

11

aynı çözümde ve bir diğerinin kütüphanesinde birden fazla proje kullanıyorsanız, tüm projelerin Newtonsoft.Json sürümü aynıdır


Bu benim sorunumdu. Yukarıdaki tüm yanıtlardan geçerek ve sonuç almayan çok sinir bozucu. Sonunda benim Build klasöründe .dll sürümünü kontrol etmek için rahatsız anladım.

10

Newtonsoft.Json derlemesini proje başvurusundan kaldırın ve yeniden ekleyin. Muhtemelen yanlışlıkla dll sildi veya değiştirildi.


Bu yaklaşım, NuGet paketini bırakıp yeniden eklediğim bir Xamarin Forms iOS projesine karşı çalışıyor. Teşekkürler.
Senatör

9

Öyle benim için bu hata başvurular eklenerek neden oldu, bir WebAPI DİNLENME servis istemcisi yazıyordu System.Net.Httpve System.Net.Http.Formattingben ilave gerekirken, elle Add Reference yoluyla meclisleri Microsoft.AspNet.WebApi.Clientaracılığıyla paket Nuget . Başka bir soruya verilen bu cevaba da bakınız .


8

Çözümünüzde 2 farklı JSON.NET kitaplığı sürümü var. Bunu çözmek için en son sürüme yükseltmelisiniz. Bu adımları takip et:

1-Açık çözüm gezgini 2-Çözüm adına sağ tıklayın 3-Çözüm için Nuget Paketlerini Yönetin 4-Güncelleme menüsünden 5-Güncelleme JSON.NET paketini seçin

Bu, sorununuzu çözecektir.

bağlantı: Dosya veya montaj 'Newtonsoft.Json, Sürüm = 7.0.0.0, Kültür = nötr, PublicKeyToken = 30ad4fe6b2a6aeed' veya bağımlılıklarından biri yüklenemedi


Bu sorunu çözmenin en kolay ve en güvenli yolu. Thanks @mohammad
deanwilliammills

7

CI makinesine doğru sürümü dağıtın

Bu, montaj yükleyicinin Newtonsoft.Json, projenizde oluşturduğunuz referansla eşleşmeyen farklı bir montaj sürümü bulduğunu gösterir . Montajı doğru şekilde yüklemek için montajı derlenmiş kodunuzla yan yana yerleştirmeniz veya montajın doğru sürümünü hedef makineye (yani GAC'ye) yüklemeniz gerekir.

Alternatif: yapılandırmanın doğru dosyada olduğundan emin olun

Geçerli çözümü korumak ve farklı bir sürüme sahip bir derleme yüklemek istiyorsanız, gönderdiğiniz yapılandırmanın doğru .configdosyada olduğundan emin olun . Hayır olduğunu unutmayın, xpto.dll.configbir uygulama tarafından yüklenen bir DLL her zaman çalışan uygulamanın yapılandırma dosyasını kullanır.


6

Normalde bağlayıcı yönlendirmeyi eklemek bu sorunu çözmelidir, ancak benim için çalışmadı. Kafamı duvara çarptıktan birkaç saat sonra, web.config dosyamda sorunlara neden olan bir xmlns özelliği olduğunu fark ettim. Web.config dosyasındaki yapılandırma düğümünden xmlns özniteliğini kaldırdıktan sonra, ciltleme yönlendirmeleri beklendiği gibi çalıştı.

http://www.davepaquette.com/archive/2014/10/02/could-not-load-file-or-assembly-newtonsoft-json-version4-5-0-0.aspx


5
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
  <dependentAssembly>
    <assemblyIdentity name="Newtonsoft.Json"
        publicKeyToken="30AD4FE6B2A6AEED" culture="neutral"/>
    <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="7.0.0.0"/>
  </dependentAssembly>
</assemblyBinding>

Benim için çalışıyor .... sadece newVersion'da kullandığınız sürümü yani ie (newVersion = "7.0.0.0")


Bu sorunu bir süre önce yaşadım ve bu bir vuruşta giderildi. Çok teşekkür ederim.
GutierrezDev

5

Çözümü kapatın.

Açık packages.configve *.csprojmetin editörü ile herhangi bir satırı silmek Newtonsoft.Json var

Ör:
<Reference Include="Newtonsoft.Json,Version=9.0.0.0,Culture=neutral,PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL"> <HintPath>..\packages\Newtonsoft.Json.9.0.1\lib\net40\Newtonsoft.Json.dll</HintPath> <Private>True</Private> </Reference>

Veya <package id="Newtonsoft.Json" version="9.0.1" targetFramework="net40" />

Çözümü tekrar açın ve Newtonsoft.Json'u tekrar yükleyin. Install-Package Newtonsoft.Json

Benim için çalışıyor.


bazen çalışıyor ama gelecek
yapılarda

Sorun değil güncelleme haha. Çöp projesi oluşturun ve Newtonsoft.Json.dll dosyasını yükleyin, kopyalayın (dll dosyası) ve proje referansınıza ekleyin.
Trống Quốc Khánh

4

Bahsettiğinizle aynı sorunu yaşadık. CI üzerinden testler yapmak için nunit kullanıyoruz ve çalıştırılacak test dll fikstürlerinin bir listesini açıklayan tests.nunit adlı bir dosya çalıştıran nunit var.

Her test fikstürünün kendi yapılandırma dosyası vardı, ancak "tests.nunit" dosyası üzerinden çalıştırıldığında bağlayıcı yönlendirmeler yok sayılıyor gibi görünüyor. Çözüm, "tests.nunit" dosyasının yanında bulunan yeni bir test dosyası olan "tests.config" adlı bağlayıcı yönlendirmeleri eklemekti.


detaylandırabilir misin
KirstieBallance

4

Aynı tip bir sorunum var. Ayrıca şunu da çözdüm : ARAÇLAR > NuGet Paket Yöneticisi ve Paket Yöneticisi Konsolu'nu seçin . Son olarak, aşağıdaki iki komutu yürütün :)

  1. uninstall-package newtonsoft.json -force
  2. kurulum paketi newtonsoft.json

4

Sunucudaki web.config dosyasını güncellemelisiniz. Nuget NewtonSoft'u yüklediğinde bu kodu içeren bu dosyayı güncelleyin

<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
  <dependentAssembly>
    <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
  </dependentAssembly>
</assemblyBinding>


Benim durumumda tam olarak benim çözümüm buydu, app.config dosyasına koyun. "Montaj sürümleri uygulama, yayıncı politikası veya makine yapılandırma dosyalarında yönlendirilebilir."
datps


3

Net 4.5 için bir NewtonSoft .dll dosyası ekleme hatası yaptım.

Benim asıl proje oldu 4.5, ama benim çözümü için ekstra bir projeyi eklendiğinde, bu garip bir .Net 2.0 projesi olarak eklendi ... ve bununla NewtonSoft en 4,5 dll kullanmaya çalışırken, ben hallederim "Newtonsoft.Json edemedim bulunamadı.

Çözüm (elbette) bu yeni projeyi .Net 2.0'dan 4.5'e değiştirmekti.


3

Benim durumumda, ana proje hala Newtonsoft.Json projesinde artık var olmayan eski bir versiyonuna atıfta bulunuyordu (sarı bir ünlem işaretiyle gösterilmiştir). Referansı kaldırmak sorunu çözdü, bağlamaRedirect gerekli değildi.


3

Ben sürümü 7.0.0.0 ile aynı sorun vardı ve benim soruna neden lib oldu Microsoft.Rest.ClientRuntime külçe doğru bağımlılık yönetimi rağmen bir türlü Newtonsoft.json yanlış sürümü (6.0.0.0) atıfta bulundu, ( newtonsoft.json'un (7.0.0.0) doğru sürümü yüklendi).

Yapılandırma dosyasında 6.0.0.0'dan 7.0.0.0'a (Kadir Can'tan) yukarıdaki yeniden yönlendirmeyi uygulayarak bunu çözdüm:

<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="7.0.0.0" />

----> Hiçbir şeyi değiştirmeden birkaç gün sonra tekrar aynı hatayla geldi. 6.0.0.0 sürümünü yükledim ve şimdi 7.0.0.0'a güncelledi.


Benim için çalıştı. Yüklü sürüm Newtonsoft Json 7.0.1 (beta), ancak oluşturulan yapılandırma 6.0.0.0'ı işaret ediyordu ve bu doğru değildi. Teşekkürler!
Dhanuka777

2

Benim durumumda, derleme indirdikten ve projeye başvuru ekledikten sonra, projeye başvuru eklemeden önce DLL 'engelini kaldırarak' bunu çözdü.

Windows Gezgini'ni kullanarak DLL konumuna gidin, DLL'ye sağ tıklayın ve ardından 'özellikler'i seçin. Sekmelerden birinde bir 'engellemeyi kaldır' düğmesi göreceksiniz ve daha sonra referansı ekleyebilirsiniz ve montaj düzgün bir şekilde yüklenecektir.



2

Projenize sağ tıklayın, Nuget paketlerini yönet'i seçin, arama kutusuna newtonsoft yazın ve en son sürümü yükleyin. Ardından Uygulamanızı çalıştırın


2

Aynı hatayla karşılaştım ve saatlerce uğraştım. Newtonsoft.json ve web API projesi için başka bir UnitTest projesi kullanan bir web API projesi vardı. Birim test projesi Newtonsoft.json referansına da ihtiyaç duydu. Ama bağlantıyı eklerken yukarıdaki istisnayı alıyordum.

Sonunda birim test projesinin app.config dosyasına aşağıdaki kod parçacığını ekleyerek çözdüm:

<dependentAssembly>
    <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30AD4FE6B2A6AEED" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
</dependentAssembly>

<dependentAssembly> <assemblyIdentity name = "Newtonsoft.Json" publicKeyToken = "30AD4FE6B2A6AEED" kültür = "nötr" /> <bağlamaRedirect oldVersion = "0.0.0.0-6.0.0.0" newVersion = "6.0.0.0" /> </dependentAssembly>
mukulsharma1146

Ben hala kullanırken ve WebAPI eski sürümünü kullanırken Nestwonsoft.Json yükseltmek aynı sorunu yaşıyordu ve bu çözüldü. Teşekkürler!
Gavin.Paolucci.Kleinow

2

Bir başka sinsi problem, elemanın bağımlı herhangi bir diğer montaj elemanında yanlış bir konfigürasyona sahip olması durumunda bağlama yönlendirmelerinin sessizce başarısız olabileceğidir.

Her öğenin altında yalnızca bir öğeniz olduğundan emin olun.

Bazı durumlarda VS bunu üretir:

  <dependentAssembly>
    <assemblyIdentity ...
    <assemblyIdentity ...
  </dependentAssembly>

Onun yerine

  <dependentAssembly>
    <assemblyIdentity ...
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity ...
  </dependentAssembly>

Sorunun bu olduğunu fark etmem uzun zaman aldı!


2

Aşağıdaki bölüm web.config dosyanıza ekleyin

<runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
       <dependentAssembly>
           <assemblyIdentity name="Newtonsoft.Json"
               publicKeyToken="30AD4FE6B2A6AEED" culture="neutral"/>
           <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0"/>
       </dependentAssembly>
    </assemblyBinding>
</runtime>

2

Hata yerel olarak kayboluyor ve hala sunucuda görünüyorsa, benimle çalışan çözüm bin klasörünü ve Packages.config ve web.config dosyalarını silmek ve bu dosyaları yeniden yüklemek

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.