Dosya veya montaj 'Newtonsoft.Json' veya bağımlılıklarından biri yüklenemedi. Bildirim tanımı montaj başvurusuyla eşleşmiyor


216

Aradıktan sonra denediğim şeyler:

  1. Web.Config dosyasında eski sürüme bir bağlayıcı koyun:

    <dependentAssembly>
        <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.1.0" />
    </dependentAssembly>
    
  2. Yalnızca bir Newtonsoft referansı olduğundan emin olmak için .csproj dosyamı düzenle

    <Reference Include="Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
       <HintPath>..\packages\Newtonsoft.Json.6.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
       <SpecificVersion>False</SpecificVersion>
       <Private>True</Private>
    </Reference>
    
  3. Bilgisayarımda her Newtonsoft.Json.dll dosyasını arayın ve 6.0.1 dışındaki tüm sürümleri silin ve temp klasörünün içeriğini silin

  4. Paketi nuget manager konsoluna onarma / yeniden yükleme

Binada başarılı olur, ancak siteye giderken hatayı alır.

DÜZENLE

Tamam, bu yüzden her nuget paketi gibi yeniden yüklemeye çalıştım ve newtonsoft.json.dll dosyasının 4.5 sürümünü ekledim, ama aynı hatayı alıyorum. Projemin Hedef freamework .NET 4.5.1 ve şimdi aldığım yığın izleme:

'/' Uygulamasında Sunucu Hatası

Dosya veya montaj Newtonsoft.Jsonveya bağımlılıklarından biri yüklenemedi . Konumlandırılan derlemenin bildirim tanımı derleme başvurusuyla eşleşmiyor. (HRESULT durum: 0x80131040)

Açıklama: Geçerli web isteğinin yürütülmesi sırasında işlenmeyen bir özel durum oluştu. Hata ve kodun nereden kaynaklandığı hakkında daha fazla bilgi için lütfen yığın izlemesini inceleyin.

Özel Durum Ayrıntıları:: System.IO.FileLoadExceptionDosya veya montaj Newtonsoft.Jsonveya bağımlılıklarından biri yüklenemedi . Konumlandırılan derlemenin bildirim tanımı derleme başvurusuyla eşleşmiyor. (HRESULT durum: 0x80131040)

Kaynak Hatası:

Geçerli web isteğinin yürütülmesi sırasında işlenmeyen bir özel durum oluşturuldu. Kural dışı durumun kaynağı ve yeri ile ilgili bilgiler aşağıdaki kural dışı durum yığını izlemesi kullanılarak tanımlanabilir.

Montaj Yükü İzi: Aşağıdaki bilgiler, montajın neden Newtonsoft.Jsonyüklenemediğini belirlemek için yardımcı olabilir.

=== Pre-bind state information ===
LOG: DisplayName = Newtonsoft.Json
(Partial)
WRN: Partial binding information was supplied for an assembly:
WRN: Assembly Name: Newtonsoft.Json | Domain ID: 2
WRN: A partial bind occurs when only part of the assembly display name is provided.
WRN: This might result in the binder loading an incorrect assembly.
WRN: It is recommended to provide a fully specified textual identity for the assembly,
WRN: that consists of the simple name, version, culture, and public key token.
WRN: See whitepaper http://go.microsoft.com/fwlink/?LinkId=109270 for more information and common solutions to this issue.
LOG: Appbase = file:///c:/users/user/documents/visual studio 2013/Projects/foo/bar/
LOG: Initial PrivatePath = c:\users\user\documents\visual studio 2013\Projects\foo\bar\bin
Calling assembly : (Unknown).
 ===
LOG: This bind starts in default load context.
LOG: Using application configuration file: c:\users\user\documents\visual studio 2013\Projects\foo\bar\web.config
LOG: Using host configuration file: C:\Users\user\Documents\IISExpress\config\aspnet.config
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config.
LOG: Policy not being applied to reference at this time (private, custom, partial, or location-based assembly bind).
LOG: Attempting download of new URL file:///C:/Users/user/AppData/Local/Temp/1/Temporary ASP.NET Files/root/48686d37/9d7a6572/Newtonsoft.Json.DLL.
LOG: Attempting download of new URL file:///C:/Users/user/AppData/Local/Temp/1/Temporary ASP.NET Files/root/48686d37/9d7a6572/Newtonsoft.Json/Newtonsoft.Json.DLL.
LOG: Attempting download of new URL file:///c:/users/user/documents/visual studio 2013/Projects/foo/bar/bin/Newtonsoft.Json.DLL.
LOG: Using application configuration file: c:\users\user\documents\visual studio 2013\Projects\foo\bar\web.config
LOG: Using host configuration file: C:\Users\user\Documents\IISExpress\config\aspnet.config
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config.
LOG: Redirect found in application configuration file: 4.5.0.0 redirected to 6.0.1.0.
LOG: Post-policy reference: Newtonsoft.Json, Version=6.0.1.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed
LOG: Attempting download of new URL file:///C:/Users/user/AppData/Local/Temp/1/Temporary ASP.NET Files/root/48686d37/9d7a6572/Newtonsoft.Json.DLL.
LOG: Attempting download of new URL file:///C:/Users/user/AppData/Local/Temp/1/Temporary ASP.NET Files/root/48686d37/9d7a6572/Newtonsoft.Json/Newtonsoft.Json.DLL.
LOG: Attempting download of new URL file:///c:/users/user/documents/visual studio 2013/Projects/foo/bar/bin/Newtonsoft.Json.DLL.
WRN: Comparing the assembly name resulted in the mismatch: Major Version
ERR: Failed to complete setup of assembly (hr = 0x80131040). Probing terminated.

Yığın izleme:

[FileLoadException: Could not load file or assembly 'Newtonsoft.Json' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)]

[FileLoadException: Could not load file or assembly 'Newtonsoft.Json, Version=6.0.1.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)]
       System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +0
       System.Reflection.RuntimeAssembly.nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +34
       System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +152
       System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean forIntrospection) +77
       System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection) +16
       System.Reflection.Assembly.Load(String assemblyString) +28
       System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) +38

[ConfigurationErrorsException: Could not load file or assembly 'Newtonsoft.Json, Version=6.0.1.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)]
       System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) +752
       System.Web.Configuration.CompilationSection.LoadAllAssembliesFromAppDomainBinDirectory() +218
       System.Web.Configuration.CompilationSection.LoadAssembly(AssemblyInfo ai) +130
        System.Web.Compilation.BuildManager.GetReferencedAssemblies(CompilationSection compConfig) +170
       System.Web.Compilation.BuildManager.GetPreStartInitMethodsFromReferencedAssemblies() +91
       System.Web.Compilation.BuildManager.CallPreStartInitMethods(String preStartInitListPath, Boolean& isRefAssemblyLoaded) +285
       System.Web.Compilation.BuildManager.ExecutePreAppStart() +153
       System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters, PolicyLevel policyLevel, Exception appDomainCreationException) +516

[HttpException (0x80004005): Could not load file or assembly 'Newtonsoft.Json, Version=6.0.1.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)]
       System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +9913572
       System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +101
       System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +254

Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.18408

2
Tamam, sanırım şimdi işe başladım. Bulabildiğim en son sürüm olmayan makinemdeki her Newtonsoft.Json.dll dosyasını sildim, NuGet'te en son sürüme sahip olduğumdan emin oldum ve onu oluşturdum ve bin klasöründeki en son sürüm olduğundan emin oldum ve Web.config ve .csproj'daki değişiklikleri bıraktım. Şimdi başka bir hataya devam ediyorum, bu yüzden çalışıyor olmalı ...
noobieDev

1
İnsanların sorunun çözüldüğünü görebilmesi için sorunuzun yanıtını eklensin mi? Ve çözüm olarak işaretleyin
Per Hornshøj-Schierbeck

2
Bu sorunun bazı sürümlerini bugün bile (3/1/2016) 8.0.2 sürümü ile yaşıyorum. 6.0.0 sürümünü yüklemeye çalışıyor. Çözüm referansımda dosya yok 6.0.0. 6.0.0 sürümü yok. .dll çözüm alanımın herhangi bir yerinde. Bilgisayarımdaki newtonsoft.json.dll dosyasının birçok kopyasına, çeşitli sürümlere sahibim, karışıklık istemediğim 3. taraf yazılımlar tarafından kullanılıyorlar. Tüm bu kopyaları kaldırmanın yanı sıra, bu iş parçacığında belirtilen her çözümü denedim ve hiçbir şey işe yaramadı.
Shavais

1
Bir projeye başka bir projeye referans eklediğimde newtonsoft-json'un bu hata mesajıyla da karşılaştım, ancak her iki problemde de aynı .Net Framework yaptıktan sonra .Net Framework farklıydı. Ama neden newtonsoft-json ile ilgili hata gösteriyor Framework hata mesajı yerine anlayamadım.
Sameer

1
Tüm projelerinizde Newtonsoft.Json'un aynı sürümünü kullanmasalar bile yükleyin.
rubStackOverflow

Yanıtlar:


274

Bunu çözmek için, aşağıdaki komutu çalıştırarak ve sonuçları kontrol ederek tüm projelerimin aynı sürümü kullanmasını sağladım:

update-package Newtonsoft.Json -reinstall

Ve son olarak aşağıdakileri web.config dosyamdan kaldırdı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>

Tüm Newtonsoft.Json paketlerinizin aynı sürüm olduğundan emin olmak istiyorsanız, sürümü şu şekilde belirtebilirsiniz:

update-package Newtonsoft.Json -version 6.0.0 -reinstall

17
Yeniden yükle komutunu çalıştırmak benim için çalıştı. Web.config dosyasını değiştirmem gerekmedi.
Keith

4
Sadece bu hatadan kurtulmak için <dependentAssembly> etiketini eklemek zorunda kaldım.
Nicklas Møller Jepsen

3
-Version sağlamak zorunda, ama benim durumumda çalışması için -reinstall bayrağı atlamak.
anre

1
Son 9.0.1 sürümünü kullanıyorum ama aynı hatayı gösteriyordu. Daha sonra csproj dosyasındaki sürümü kontrol ettim ve 9.0.0.0 idi, bunu web.config dosyasına ekledim ve sorun çözüldü. 1. csproj'daki sürümün web.config ile aynı olduğundan emin olun 2. Sürüm numaralarına dikkat edin, gerçek sürüm x.0.0.0 olduğunda x.0.1, x 6 veya 9 veya her neyse olabilir .
Eugene

7
Komutu VS2017'de çalıştırmak için Araçlar -> Nuget Paket Yöneticisi -> Paket Yöneticisi Konsolu
Rose

83

Newtonsoft.Json v6.0.3 kullanıyorum, ancak Web.config dosyamda yapmam gereken buydu:

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

6.0.3 kullansam da, newVersion="6.0.0.0"

Benim Packages.config dosyasında:

<package id="Newtonsoft.Json" version="6.0.3" targetFramework="net45" />

1
Bir not olarak, Newtonsoft.Json ile ilgili olduğunu düşündüğüm her şeyi kaldırmayı / kaldırmayı / silmeyi denedim, sonra yeniden yüklemek için Nuget'i kullandım, ancak yine de yukarıdaki hatayı alıyordum. Bahsettiğim değişiklikleri yapana kadar düzgün çalışmasını sağlayamadım.
CraigV

Bu sorunu yaşadım ve tanıya yardımcı olması için Assembly Binding Log Viewer'ı kullandım. Derleme bağlayıcı v6.0.3 Newtonsoft.Json.dll v6.0.0.0 olarak bildirir, böylece 6.0.3 olarak yapılandırdığınızda yeniden yönlendirme başarısız olur.
Jason Slocomb

"Not" satırı bana yardımcı olur. Başlangıçta 9.0.1.19813, DLLR'in söylediği bu yana, printingRedirect içinde newVersion olarak vardı. Bu şimdi var: <Reference Include = "Newtonsoft.Json, Sürüm = 9.0.0.0, Kültür = nötr, PublicKeyToken = 30ad4fe6b2a6aeed, işlemciArchitecture = MSIL"> <SpecificVersion> Yanlış </SpecificVersion> </Reference> <dependentAssembly> <assemblyIdentity name = "Newtonsoft.Json" kültür = "nötr" publicKeyToken = "30ad4fe6b2a6aeed" /> <bağlamaRedirect oldVersion = "0.0.0.0-9.0.0.0" newVersion = "9.0.0.0" /> </dependentAssembly>
Mark Seefeldt

62

Bilgisayarımın tüm konumlarda aynı sürüme sahip olduğundan ve projelerimin hepsinin aynı referans yolunu gösterdiğinden emin olduktan sonra aşağıdakileri denedim. Ayrıca eski sürümünün bağlanma onların vardı ve sahip olduğum dll geçerli sürümüne bağlı olduğundan emin olmuştu.

Ben sıkı bir çerçeve ile bir ortamda çalışmak ve çerçeve ekibi genellikle farklı dll en sürümleme üzgün.

Bu sorunu nasıl düzelttiğimi visual studio (2013) içinde paket yöneticisi konsolunu çalıştırmak oldu. Oradan aşağıdaki komutu çalıştırdım:

update-package Newtonsoft.Json -reinstall

bunu takiben

update-package Newtonsoft.Json

Bu, tüm yapılandırma dosyalarımı ve ilgili proje dosyalarımı güncelledi. Hepsini aynı dll sürümüne zorlamak. Hangi en son sürümünü almak için tekrar güncelleme önce başlangıçta sürüm 4.5 oldu.


Sorunu benim için çözen güncelleme oldu. Projem Newtonsoft 7.0 sürümüne güncellendi.
id.ot

Benim için çalıştı. Bunu yaptıktan sonra, package.config ve web.config dosyanızın eşleşen sürümlere sahip olduğundan emin olmak için önemli.
TheValyreanGroup

NuGet Paket Yöneticisi Konsolu'ndan tamamlandığında benim için çalıştı teşekkürler!
Kbdavis07

25

Aynı hata iletisini aldım ve bahsettiğiniz gibi Newtonsoft.Json.dll dosyasının farklı sürümlerinden kaynaklanıyordu.

MVC çözümümdeki bazı projeler, bu dll sürüm 4 için NuGet paketini kullandı.

Sonra bir NuGet paketi (benim durumumda Salesforce için) ekledim, bu projelerden birine bağımlılık olarak Newtonsoft.Json sürüm 6'yı getirdi. Sorunu benim için tetikleyen buydu.

Bazı şeyleri temizlemek için JG.Net paketini tüm projeler için aynı sürüm olacak şekilde güncellemek için çözüm için NuGet Paket Yöneticisi'ndeki (Araçlar menüsü veya çözüm sağ tıklatma) Güncellemeler bölümünü kullandım.

Bundan sonra, herhangi bir bağlayıcı yönlendirme çizgisinin aşağıdaki gibi seçilen sürümüme gittiğinden emin olmak için App Config dosyalarını kontrol ettim.

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

DLL'lerin aynı MVC uygulaması için farklı Newtonsoft.Json sürümleri için bağımlılıkları varsa ne olur? Burada sıkışıp kaldım.
Jeremy Ray Brown

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

17

Tamam, sanırım şimdi işe başladım. Bulabildiğim en son sürüm olmayan makinemdeki her Newtonsoft.Json.dll dosyasını sildim, NuGet'te en son sürüme sahip olduğumdan emin oldum ve onu oluşturdum ve bin klasöründeki en son sürüm olduğundan emin oldum ve Web.config ve .csproj'daki değişiklikleri bıraktım. Şimdi başka bir hataya devam ediyorum, bu yüzden çalışıyor olmalı ..


2
Makinenizdeki tüm yerleri nasıl buldunuz?
obaylis

benim pc takım vakıf sunucusu tarafından proje alırken de hata aldım. benim çözümü için newtonsoft referans ekleyin. işe yaramadı. o zaman nuget paket yöneticisi aracılığıyla json.net (newtonsoft.json) yükleyin. şimdi iyi çalışıyor.
Mohammad Sadiqur Rahman

bin klasör dosya adı içinde - Newtonsoft.Json.dll Bu dosyayı silin ve paketi yeniden yükleyin veya sadece daha düşük sürümü yükleyin ve NuGet-Solution
maddy

7

Web.config dosyamda bu kısmı yorumlayarak sorunumu çö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>

Ancak elbette, bunu paket yöneticisi konsolunuzda yaparak güncellediğinizden veya doğru sürüme sahip olduğunuzdan emin olmanız gerekir:

update-package Newtonsoft.Json -reinstall

4

Oleg'in adımlarını denedim ve aynı durumum için çalıştılar.

Adımlar:

  1. update-package Newtonsoft.Json -reinstallPaket Yöneticisi'nde çalıştırın .

  2. Silme bingizli dosyaları görüntüleme sağlayan ve silerek binklasörü.

  3. Visual Studio'yu kapatın ve yeniden açın.

  4. Şimdi projenizi tekrar çalıştırın. Tamam olması gerektiğine inanıyorum!


4

Web.config dosyasına aşağıdaki satırları ekleyerek sorunu çözebilirsiniz.

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

3

Benim durumumda sadece bir mesele oldu:

Tools -> NuGet Package Manager -> Package Manager Settings -> Clear Cache

TFS klasörünü yeniden eşleştirdiğimde sorun oluştu.


3

Aslında bana yardımcı olan Resharper derlemesini kapatmak ve projemde VisualStudio Yeniden Oluştur seçeneğini kullanmaktı.


Bunu nasıl yaptın?
Naomi

1
Resharper'ın seçeneklerinde: Araçlar -> ReSharper Build -> Build Engine - "Visual Studio"
yu

Bir süre önce bir deneme sürümü yükledim (yaklaşık bir ay, sanırım) ve sonra uzantıyı devre dışı bıraktım. Bunu Araçlar'da görmüyorum, umarım iyiyimdir.
Naomi

3

Araçlar >> NuGet Paket Yöneticisi >> Çözüm güncellemesi için Paketi Yönet Newtonsoft.Json tüm çözümlerin son sürümüne


2

bir çeşit yıkımla çalışıyorsanız: projeyi silin ve yeniden indirin, benim için çalıştı: S


Uzun bir yol ama başka bir çözüm benim için çalışmadığı için bunu yapmak zorunda kaldım
Mike Resoli

2

Aynı sorunu MVC 5 projesine referans veren bir Test Projesi'nde de yaşadım. Bu, bir MVC 5 projesiyle birleştikten sonra oldu. Ben açıklandığı gibi Visual Studio 2012 güncelleştirmelerini yükleyerek düzelttim burada Andre'nin yanıt olarak.

  • Görsel stüdyosunda şu adrese gidin:
    1. Araçlar> Uzantılar ve Güncellemeler
    2. Soldaki akordeon listesinden "Güncellemeler" i seçin.
    3. "Ürün Güncellemeleri" ni seçin.
    4. En yeni sürüme güncelleme

Bu bağlantı soruyu cevaplayabilse de, cevabın temel kısımlarını buraya eklemek ve bağlantıyı referans olarak sağlamak daha iyidir. Bağlantı verilen sayfa değişirse yalnızca bağlantı yanıtları geçersiz olabilir
abarisone

Sorunum bu çözüm sayesinde düzeltildi! 8.0.1 sürümünü yükledim ve VS2013 güncellemesi 5'e güncellenene kadar çalışmadı
Devin

2

Neden bilmiyorum, ama benim durumumda, bin klasörünü projeden kaldırsam bile, projeyi oluşturduğumda newtonsoft.json'un eski sürümünü kopyalar, yeni sürümün dll'sini paketleri klasöründen kopyaladım ve şimdilik çözüyor.


Benzer bir sorunum vardı. Benim çözümümde bir test projem var. Test projesi bölmedeki sürüm 9'u alıyordu, ancak test ettiğim projenin sürüm 12'si vardı. Sürüm 12'yi testin bin klasörü altındaki projeden testin bin klasörüne kopyaladım.
Josh Jay

2

Bazı durumlarda sildiğinizde Binve Objklasörleriniz bu sorunu çözecektir.


2

Tamam, sanırım yapacağım şey, bu uzun listeye yinelenen bir soru oluşturmak yerine cevabımı buraya eklemek ...

Bunu 2019'da alıyorsanız, .NET Core 3.0'ı (şu anda Önizleme) kullanarak çözüm, tüm projelerin aynı .NET Core sürümünü (benim durumumda 3.0) hedeflemesini sağlamaktır. Bence çözüm hedef 2.1 bir hedef vardı ve geri kalanı 2.2 idi, bu yüzden muhtemelen 2.2 ile sıkışmış olabilir ...

Hiçbir projede Newtonsoft.Json yüklü bile değil ve doğal olarak onlara eklemek sorunu çözmedi.

Çözümünüzde .NET Standard sınıf kitaplıkları veya w / e varsa, aynı sürümde olmaları gerekmez, ancak gidebileceğiniz en son sürüm olmalıdır. Örneğin, henüz bir .NET Standard 3.0 olmadığı için .NET Standard sınıf kütüphanelerim 2.2 üzerinde.


1

İşaretli olan dahil cevapların hiçbiri benim için işe yaramadı.

Çözüm çok daha basitti. İlk olarak BUS katmanımdan referansları kaldırdım. Daha sonra (gittiğinden emin olmak için) projeden dll's sildi, sonra JSON.NET nuget packeges yeniden yükleyin. Zor olan kısım ise, "kapatıp tekrar açmak" idi.

Görsel stüdyosu yeni başladım ve işe yaradı!

Bu nedenle, mümkün olan her şeyi denerseniz ve yine de sorunu çözemezseniz, görsel stüdyoyu kapatıp tekrar açmayı deneyin, yardımcı olabilir.


2
Bence Simple iğnelendi.
16:13


1

Bin klasöründeki Newtonsoft.json.dll dosyasının alt sürümünü kaldırarak çözdüm ve Newtonsoft.json.dll V6.0.0.0'ı ekledim ve aşağıdaki web.config öğelerini kaldırdım

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

1

Dotnet core ile aynı sorunu aldım ve NuGet önbelleğini temizleyerek düzeltmeyi başardım.

Powershell'i açın ve aşağıdaki komutu girin.

dotnet nuget locals all --clear

Sonra Visual Studio'yu kapattım, tekrar açtım ve Package Manager Console'a aşağıdaki komutu girdim:

Update-Package

NuGet artık tüm paketleri geri yüklemeli ve külçe önbelleğini yeniden doldurmalıdır.

Bundan sonra bir Linux kapsayıcısında dotnet core webapi'mi oluşturabilir ve başlatabilirim.


1

bunun için sorunumu çözen çözüm

referanslara git-> sağ tıklayın Newtonsoft.json - özelliklere git ve sürümü kontrol et

aynı sürüm

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

1

Saatlerce bununla mücadele ettikten sonra ...

web.config

<runtime>

  <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">

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

    <!-- other assemblies... -->

  </assemblyBinding>
</runtime>

Doğru newVersion ve oldVersion numarasını girmenin anahtarı, projenin Referencespaketini bulup özelliklerine gitmesi veya tıklamasıdır.alt + enter

NuGet'i yönetirken Versionbenim durumumda olan bir bölüm bulacaksınız .12.0.0.012.0.3

Yani paketin sürümünü referans özelliklerinden seçmeniz gerekiyor (benim durumumda 12.0.0.0)

Son olarak cleanve rebuildproje (daha önce binve objklasörlerini silmek isteyebilirsiniz ).

Diğer paketler bağımlılık sorunları ile karşılaşabilirsiniz, ben herkes için yaptım ve onlar çalıştı.


0

Kolay adımlar. (1) Paket yöneticisinde "update-package Newtonsoft.Json -reinstall" komutunu çalıştırın.

(2) Gizli dosyaları görüntülemeyi etkinleştirip bin klasörünü silerek bölmenizi silin.

(3) Görsel stüdyonuzu kapatın ve tekrar açın.

(4) Şimdi projenizi tekrar yürütün. İyi olması gerektiğine inanıyorum


0

Ben vardı çünkü bu sorunu vurdu: proje A (bir masaüstü .exe) proje B (taşınabilir bir .dll) bakın. A & B'nin JSON.Net'in farklı sürümleri vardı ve bu nedenle bir yükleyici çakışması vardı. JSON.net'in tüm sürümlerini aynı yaptığımda işe yaradı. (Bu aslında yukarıdaki çözümlerden bazılarının yaptığı şeydir - neden işe yaradığını söylüyorum)


0

Bununla son zamanlarda ve daha eski bir projeyle mücadele ettim.

Ben gerçekten bin klasöründe hangi dll sürümünü kontrol ettikten sonra sorunu izlemeyi başardı.

Bir dll kitaplığı klasöründen bin klasörüne bağımlı derlemeler kopyalanan bir post-build komut dosyası vardı. Nuget'ten önceki günlerden ortak bir kurulum.

Bu yüzden post-build betiğini her oluşturduğumda Json.net'in doğru sürümünü eski olanla değiştirdim


0

Ben tam olarak aynı sorunu vardı ve benim için Visual Studio 13 varsayılan kütüphane 4.5 oldu, bu yüzden bir webconfig dosyasında bu referans almak 2 çözüm var. Bu son çare ve işe yarıyor.

Hata iletisi, bu konumda /Projects/foo/bar/bin/Newtonsoft.Json.DLL bir sorun olduğunu belirtir. DLL nerede! Temel özellik denetimi 4.5.0.0 veya benzer olduğunu söyledi bu yüzden 4.5 kadar bakmak ve 4.5 kullanmak için webconfig değiştirdi.


0

Bu seçeneklerin hiçbiri benim için işe yaramadı, sonunda;

Test> Test Ayarları> * .testrunconfig

Yeni bir satır eklemek zorunda kaldım

<DeploymentItem filename="packages\Newtonsoft.Json.4.5.8\lib\net40\Newtonsoft.Json.dll" />

Yolun ve sürümün kurulumunuz için doğru olduğundan emin olun.


0

Aynı sorunu yaşadım. Bir web api projesi oluşturdum ve daha sonra .net 4.5.1'den .net 4.6.1'e yükselttim. IDE'nin kapatılması, IIS'nin durdurulması ve C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Temporary ASP.NET Files \ dir içeriğinin silinmesi sorunu çözdü.

HTH


0

Bu sorun benim için NuGet Paketleri yenilenerek veya projede bir "Temiz" gerçekleştirilerek çözülmedi. "Obj" klasörü el ile temizlenerek çözüldü.


0

İşte bu sorunun çözümü, appconfig veya packageconfig içindeki sürüm numarasının referanslarınızdaki referans sürümle aynı olduğundan emin olun. Buraya bakın

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.