Nie można załadować pliku lub zestawu „Newtonsoft.Json” ani jednej z jego zależności. Definicja manifestu nie pasuje do odwołania do zestawu

216

Rzeczy, których próbowałem po wyszukiwaniu:

  1. w Web.Config umieść powiązanie na starej wersji:

    <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. Edytuj mój plik .csproj, aby upewnić się, że istnieje tylko jedno odwołanie do Newtonsoft

    <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. Przeszukaj mój komputer w poszukiwaniu każdego pliku Newtonsoft.Json.dll i usuń każdą wersję inną niż 6.0.1 i usuń zawartość mojego folderu tymczasowego

  4. Napraw / zainstaluj ponownie pakiet w konsoli menedżera nuget

Udaje się to przy budowaniu, ale pojawia się błąd podczas wchodzenia na stronę.

EDYTOWAĆ

ok, więc próbowałem ponownie zainstalować jak każdy pakiet nuget i wydaje się, że dodałem wersję 4.5 newtonsoft.json.dll, ale otrzymuję ten sam błąd. Docelowy freamework mojego projektu to .NET 4.5.1, a oto ślad stosu, który teraz otrzymuję:

Błąd serwera w aplikacji „/”.

Nie można załadować pliku lub zestawu Newtonsoft.Jsonani jednej z jego zależności. Definicja manifestu zlokalizowanego zespołu nie pasuje do odwołania do zespołu. (Wyjątek HRESULT: 0x80131040)

Opis: Wystąpił nieobsługiwany wyjątek podczas wykonywania bieżącego żądania internetowego. Przejrzyj dane śledzenia stosu, aby uzyskać więcej informacji o błędzie i jego źródle w kodzie.

Szczegóły wyjątku System.IO.FileLoadException: Nie można załadować pliku lub zestawu Newtonsoft.Jsonlub jednej z jego zależności. Definicja manifestu zlokalizowanego zespołu nie pasuje do odwołania do zespołu. (Wyjątek HRESULT: 0x80131040)

Błąd źródła:

Podczas obsługi bieżącego żądania sieciowego wygenerowano nieobsługiwany wyjątek. Informacje dotyczące pochodzenia i lokalizacji wyjątku można zidentyfikować za pomocą śledzenia stosu wyjątków poniżej.

Śledzenie obciążenia zestawu: Poniższe informacje mogą być pomocne w ustaleniu, dlaczego Newtonsoft.Jsonnie można załadować zestawu .

=== 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.

Ślad stosu:

[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
noobieDev
źródło
2
Ok, myślę, że mam teraz działać. Usunąłem każdy plik Newtonsoft.Json.dll na mojej maszynie, który nie był najnowszą wersją, którą mogłem znaleźć, upewniłem się, że mam najnowszą wersję w NuGet, zbudowałem ją i upewniłem się, że jest to najnowsza wersja w folderze bin, i Pozostawiłem zmiany w pliku web.config i .csproj. Teraz
przechodzę
1
Dodaj odpowiedź do swojego pytania, aby inni mogli zobaczyć, że zostało rozwiązane?
Oznacz
2
Mam wersję tego problemu nawet dzisiaj (3/1/2016) z wersją 8.0.2. Próbuje załadować wersję 6.0.0. Brak pliku w moim rozwiązaniu odwołuje się do wersji 6.0.0. Nie ma wersji 6.0.0. .dll w dowolnym obszarze mojego rozwiązania. Mam na komputerze wiele kopii pliku newtonsoft.json.dll, w różnych wersjach, są one używane przez zainstalowane oprogramowanie innych firm, z którym nie chcę zadzierać. Oprócz usunięcia wszystkich tych kopii wypróbowałem wszystkie rozwiązania wymienione w tym wątku i nic nie działało.
Shavais
1
Napotkałem również ten komunikat o błędzie newtonsoft-json, gdy dodałem odwołanie do jednego projektu do innego projektu, ale .Net Framework w projektach był inny po zrobieniu tego samego .Net Framework na oba problemy naprawione. Ale nie mogłem zrozumieć zamiast komunikatu o błędzie Framework, dlaczego pokazuje błąd związany z newtonsoft-json.
Sameer
1
Zainstaluj tę samą wersję Newtonsoft.Json we wszystkich swoich projektach, nawet jeśli ich nie używają.
rubStackOverflow

Odpowiedzi:

274

Aby rozwiązać ten problem, upewniłem się, że wszystkie moje projekty używają tej samej wersji, uruchamiając następujące polecenie i sprawdzając wyniki:

update-package Newtonsoft.Json -reinstall

I na koniec usunąłem następujące elementy z mojego pliku web.config:

  <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>

Jeśli chcesz mieć pewność, że wszystkie pakiety Newtonsoft.Json są tej samej wersji, możesz określić wersję w następujący sposób:

update-package Newtonsoft.Json -version 6.0.0 -reinstall
użytkownik1477388
źródło
17
Właśnie uruchomienie polecenia reinstalacji działało dla mnie. Nie musiałem modyfikować pliku web.config.
Keith,
4
Po prostu musiałem dodać tag <dependentAssembly>, aby pozbyć się tego błędu.
Nicklas Møller Jepsen
3
Musiałem podać opcję -version, ale pominąłem flagę -reinstall, aby działała w moim przypadku.
2015
1
Korzystam z najnowszej wersji 9.0.1, ale wyświetlał ten sam błąd. Następnie sprawdziłem wersję w pliku csproj i była to wersja 9.0.0.0, dodałem ją do mojego pliku web.config i problem został rozwiązany. 1. Upewnij się, że wersja w csproj jest taka sama jak w web.config 2. Uważaj na numery wersji, może powiedzieć x.0.1, gdy rzeczywista wersja to x.0.0.0, x może być 6 lub 9 lub cokolwiek to jest .
Eugene
7
Pamiętaj, że aby uruchomić polecenie w VS2017, możesz przejść do Narzędzia -> Menedżer pakietów Nuget -> Konsola Menedżera pakietów
Rose
83

Korzystam z Newtonsoft.Json v6.0.3, ale to właśnie musiałem zrobić w moim pliku Web.config:

<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>

Pamiętaj, że mimo że korzystam z wersji 6.0.3, musiałem to zainstalować newVersion="6.0.0.0"

W moim pliku Package.config mam:

<package id="Newtonsoft.Json" version="6.0.3" targetFramework="net45" />
CraigV
źródło
1
Dla przypomnienia próbowałem odinstalować / usunąć / usunąć wszystko, co mogłem znaleźć, co miało związek z Newtonsoft.Json, a następnie użyć Nuget do ponownej instalacji, ale nadal pojawiał się powyższy błąd. Dopiero po wprowadzeniu zmian, o których wspomniałem, udało mi się sprawić, aby działał poprawnie.
CraigV
Wystąpił ten problem i skorzystałem z Przeglądarki dziennika wiązania zestawu, aby go zdiagnozować. Segregator składania zgłasza plik v6.0.3 Newtonsoft.Json.dll jako v6.0.0.0, więc przekierowanie nie powiedzie się, gdy skonfiguruję go jako 6.0.3.
Jason Slocomb
Pomóż mi wiersz „Uwaga”. Początkowo miałem 9.0.1.19813 jako newVersion w bindRedirect, ponieważ tak mówi DLL. Oto, co teraz mam: <Reference Include = "Newtonsoft.Json, Version = 9.0.0.0, Culture = neutralny, PublicKeyToken = 30ad4fe6b2a6aeed, ProcessorArchitecture = MSIL"> <SpecificVersion> False </SpecificVersion> </Reference> <dependentAssembly> <assemblyIdentity name = "Newtonsoft.Json" culture = "neutralny" publicKeyToken = "30ad4fe6b2a6aeed" /> <bindingRedirect oldVersion = "0.0.0.0-9.0.0.0" newVersion = "9.0.0.0" /> </dependentAssembly>
Mark Seefeldt
62

Próbowałem następujących po upewnieniu się, że mój komputer ma tę samą wersję we wszystkich lokalizacjach i że wszystkie moje projekty wskazują tę samą ścieżkę referencyjną. Upewniłem się również, że powiązanie starej wersji było powiązane z bieżącą wersją biblioteki DLL, którą miałem.

Pracuję w środowisku o ścisłej strukturze, a zespół frameworka często denerwuje wersję różnymi bibliotekami dll.

Rozwiązałem ten problem, uruchamiając konsolę menedżera pakietów w Visual Studio (2013). Stamtąd uruchomiłem następujące polecenie:

update-package Newtonsoft.Json -reinstall

śledzony przez

update-package Newtonsoft.Json

To przeszło i zaktualizowało wszystkie moje pliki konfiguracyjne i odpowiednie pliki projektu. Zmuszając ich wszystkich do tej samej wersji dll. Która była początkowo wersją 4.5 przed aktualizacją, aby uzyskać najnowszą.

Samuel
źródło
To była aktualizacja, która rozwiązała problem. Mój projekt został zaktualizowany do wersji Newtonsoft 7.0.
id.ot
Pracował dla mnie. Po wykonaniu tej czynności należy pamiętać, aby upewnić się, że pliki package.config i web.config mają pasujące wersje.
TheValyreanGroup
Działa dla mnie po zakończeniu z konsoli NuGet Package Manager dzięki!
Kbdavis07
25

Miałem ten sam komunikat o błędzie i, jak wspomniałeś, było to spowodowane odwołaniem się do różnych wersji Newtonsoft.Json.dll.

Niektóre projekty w moim rozwiązaniu MVC korzystały z pakietu NuGet dla wersji 4 tej biblioteki DLL.

Następnie dodałem pakiet NuGet (w moim przypadku dla Salesforce), który przyniósł Newtonsoft.Json w wersji 6 jako zależność od jednego z projektów. To właśnie spowodowało problem.

Aby to wyczyścić, użyłem sekcji Aktualizacje w Menedżerze pakietów NuGet dla rozwiązania (poza menu Narzędzia lub prawym przyciskiem myszy rozwiązanie), aby zaktualizować pakiet Json.Net w całym rozwiązaniu, więc była to ta sama wersja dla wszystkich projektów.

Następnie sprawdziłem tylko pliki aplikacji App Config, aby upewnić się, że wszelkie wiążące linie przekierowujące będą przechodzić do mojej wybranej wersji, jak poniżej.

<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
S__
źródło
Co się stanie, jeśli biblioteki DLL mają zależności dla różnych wersji Newtonsoft.Json dla tej samej aplikacji MVC? Tu utknąłem.
Jeremy Ray Brown
Użyj opcji Konsoliduj w menedżerze pakietów NuGet, aby upewnić się, że wersje się nie rozpadają.
niico
17

Ok, myślę, że mam teraz działać. Usunąłem każdy plik Newtonsoft.Json.dll na mojej maszynie, który nie był najnowszą wersją, którą mogłem znaleźć, upewniłem się, że mam najnowszą wersję w NuGet, zbudowałem ją i upewniłem się, że jest to najnowsza wersja w folderze bin, i Pozostawiłem zmiany w pliku web.config i .csproj. Teraz mam inny błąd, więc musi działać.

noobieDev
źródło
2
Jak poszedłeś szukać wszystkich lokalizacji na swoim komputerze?
obaylis
dostałem błąd również podczas pobierania projektu przez serwer fundacji zespołu na mój komputer. dodałem odniesienie do newtonsoft do mojego rozwiązania. to nie działało. następnie instaluję json.net (newtonsoft.json) poprzez menedżera pakietów nuget. pracować w porządku.
Mohammad Sadiqur Rahman
znajduje się w nazwie pliku folderu bin - Newtonsoft.Json.dll Usuń ten plik i zainstaluj ponownie pakiet lub po prostu zainstaluj niższą wersję i zainstaluj ponownie prawidłową wersję za pomocą NuGet-Solution
maddy
7

Komentując to w tej części na moim web.config rozwiązałem mój problem:

<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>

Ale oczywiście musisz upewnić się, że dokonałeś aktualizacji lub masz odpowiednią wersję, robiąc to w konsoli menedżera pakietów:

update-package Newtonsoft.Json -reinstall
Willy David Jr
źródło
4

Wypróbowałem kroki Olega, które działały w tej samej sytuacji.

Kroki:

  1. Uruchom update-package Newtonsoft.Json -reinstallw Menedżerze pakietów.

  2. Usuń swoje bin, włączając przeglądanie ukrytych plików i usuwanie binfolderu.

  3. Zamknij program Visual Studio i otwórz go ponownie.

  4. Teraz uruchom ponownie swój projekt. Uważam, że powinno być ok!

Matthew Cavallo
źródło
4

Możesz rozwiązać problem, dodając poniższe wiersze w pliku 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-8.0.0.0" newVersion="8.0.0.0"/>
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
Jineesh Uvantavida
źródło
3

W moim przypadku chodziło tylko o:

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

Problem został spowodowany, gdy ponownie mapowałem folder TFS.

Daniloquio
źródło
3

Pomogło mi to wyłączyć kompilację Resharper i użyć opcji Re-build VisualStudio w moim projekcie.

Shaulian
źródło
Jak to zrobiłeś?
Naomi
1
W opcjach Resharpera: Narzędzia -> ReSharper Build -> Build Engine - wybierz „Visual Studio”
Shaulian
Zainstalowałem wersję próbną jakiś czas temu (chyba około miesiąca), a potem również wyłączyłem rozszerzenie. Nie widzę tego w Narzędziach, więc mam nadzieję, że nic mi nie jest.
Naomi,
3

z Narzędzia >> Menedżer pakietów NuGet >> Zarządzaj pakietem do aktualizacji rozwiązania Newtonsoft.Json wszystkich rozwiązań do najnowszej wersji

Goda Kotb
źródło
2

jeśli pracujesz z jakimś rodzajem subversion: usuń projekt i pobierz go ponownie, działało dla mnie: S

ch2o
źródło
Długa droga, ale musiałem to zrobić, ponieważ żadne inne rozwiązanie nie działało dla mnie
Mike Resoli
2

Miałem ten sam problem z projektem testowym, który miał odniesienie do projektu MVC 5. Stało się to po połączeniu z projektem MVC 5. Naprawiłem to, instalując aktualizacje Visual Studio 2012, jak wyjaśniono tutaj w odpowiedzi Andre.

  • W swoim studio wizualnym przejdź do
    1. Narzędzia> Rozszerzenia i aktualizacje
    2. Wybierz „Aktualizacje” z listy akordeonów po lewej stronie.
    3. Wybierz „Aktualizacje produktu”.
    4. Zaktualizuj do najnowszej wersji
Michael Kassa
źródło
Chociaż ten link może odpowiedzieć na pytanie, lepiej jest dołączyć tutaj istotne części odpowiedzi i podać link w celach informacyjnych. Odpowiedzi zawierające tylko łącze mogą stać się nieprawidłowe, jeśli połączona strona ulegnie zmianie
abarisone
Dzięki temu rozwiązaniu mój problem został rozwiązany! Mam zainstalowaną wersję 8.0.1 i nie działała, dopóki nie zaktualizowałem do wersji 5 VS2013 5
Devin Prejean
2

Nie wiem dlaczego, ale w moim przypadku, nawet jeśli usunę folder bin z projektu, kiedy buduję projekt, kopiuje on starą wersję pliku newtonsoft.json, skopiowałem dll nowej wersji z folderu pakietów i na razie rozwiązuje się.

mesut
źródło
Miałem podobny problem. W moim rozwiązaniu mam projekt testowy. Projekt testowy pobierał wersję 9 do kosza, ale projekt, który testowałem, miał wersję 12. Skopiowałem wersję 12 z projektu w folderze bin testu do folderu bin testu.
Josh Jay
2

W niektórych przypadkach usunięcie folderu Bini Objspowoduje rozwiązanie tego problemu.

Ivan Ruski
źródło
2

W porządku, więc myślę, że należy dodać moją odpowiedź tutaj do tej długiej listy, a nie utworzyć duplikat pytania ...

Jeśli otrzymujesz to w 2019 roku, używając .NET Core 3.0 (obecnie wersja zapoznawcza), rozwiązaniem jest upewnienie się, że wszystkie projekty są ukierunkowane na tę samą wersję .NET Core (w moim przypadku 3.0). Myślę, że miałem jeden projekt w rozwiązaniu ukierunkowanym na 2.1, a reszta miała 2.2, więc prawdopodobnie mogłem utknąć w 2.2 ...

Nie mam nawet zainstalowanego Newtonsoft.Json w żadnym z projektów i oczywiście dodanie go do nich nie rozwiązało problemu.

Jeśli masz biblioteki klas .NET Standard lub w / e w swoim rozwiązaniu, nie muszą one być w tej samej wersji, chociaż prawdopodobnie powinny być najnowszą wersją, którą możesz pobrać. Na przykład, moje biblioteki klas .NET Standard są w wersji 2.2, ponieważ jeszcze nie ma wersji .NET Standard 3.0.

jspinella
źródło
1

Żadna z odpowiedzi, w tym zaznaczona, nie działała dla mnie.

Rozwiązanie było o wiele prostsze. Najpierw usunąłem referencje z mojej warstwy BUS. Następnie usunął biblioteki DLL z projektu (aby upewnić się, że go nie ma), a następnie ponownie zainstalował JSON.NET z pakietów nuget. A trudną częścią było „wyłączenie i ponowne włączenie”.

Właśnie uruchomiłem ponownie studio wizualne i działało!

Tak więc, jeśli spróbujesz wszystkiego, co możliwe i nadal nie możesz rozwiązać problemu, po prostu wyłącz i włącz ponownie studio wizualne, może to pomóc.

Zafer Sernikli
źródło
2
Myślę, że Simple to sarkazm.
Worthy7
1

Jeśli żaden z tych elementów nie działa, sprawdź tę odpowiedź:

https://stackoverflow.com/a/12011221/150370

( TL; DR : Usuń przestrzeń nazw xml ze configurationznacznika w pliku konfiguracyjnym. W przeciwnym razie przekierowania wiązania zostaną zignorowane)

Niemiecki Latorre
źródło
1

Rozwiązałem go, usuwając niższą wersję Newtonsoft.json.dll z folderu bin i dodałem Newtonsoft.json.dll V6.0.0.0 i usunąłem następujące elementy web.config

<dependentAssembly>
    <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed"/>
    <bindingRedirect oldVersion="0.0.0.0-4.5.0.0" newVersion="5.0.8"/>
</dependentAssembly>
Alok Kumar
źródło
1

Mam ten sam problem z rdzeniem dotnet i udało mi się go naprawić, czyszcząc pamięć podręczną NuGet.

Otwórz PowerShell i wprowadź następujące polecenie.

dotnet nuget locals all --clear

Następnie zamknąłem Visual Studio, otworzyłem go ponownie i wprowadziłem następujące polecenie w konsoli Menedżera pakietów:

Update-Package

NuGet powinien teraz przywrócić wszystkie pakiety i ponownie zapełni pamięć podręczną nuget.

Potem mogłem zbudować i uruchomić webapi dotnet core w kontenerze Linuksa.

datoml
źródło
1

rozwiązaniem, które rozwiązało mój problem, jest

goto referencje-> kliknij prawym przyciskiem myszy Newtonsoft.json - właściwości goto i sprawdź wersję

ta sama wersja powinna być w

<dependentAssembly>
    <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-YourDllVersion" newVersion="YourDllVersion" />
</dependentAssembly>
Er.Imran Shaikh
źródło
1

Po wielu godzinach zmagania się z tym ... Wykonałem następujące czynności:

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>

Kluczem do wprowadzenia poprawnego numeru newVersion i oldVersion jest otwarcie projektu Referencesznajdź pakiet przejdź do jego właściwości lub kliknijalt + enter

Znajdziesz sekcję, Versionktóra w moim przypadku była 12.0.0.0podczas jej 12.0.3eksploracji za pomocą Manage NuGet.

Musisz więc wybrać wersję pakietu z właściwości referencyjnych (w moim przypadku 12.0.0.0)

Wreszcie cleani rebuildprojekt (możesz chcieć wcześniej usunąć foldery bini obj).

Możesz napotkać inne problemy z zależnościami pakietów, zrobiłem to dla wszystkich i zadziałały.

Ali Kleit
źródło
0

Proste kroki (1) Uruchom „update-package Newtonsoft.Json -reinstall” w menedżerze pakietów.

(2) Usuń bin, umożliwiając przeglądanie ukrytych plików i usuwanie folderu bin.

(3) Zamknij swoje studio wizualne i otwórz je ponownie.

(4) Teraz uruchom ponownie swój projekt. Uważam, że powinno być dobrze

Odeyinka Olubunmi
źródło
0

Wystąpił ten problem, ponieważ miałem: projekt A (plik .exe na komputery) odnosi się do projektu B (przenośny plik .dll). A i B miały różne wersje JSON.Net, więc wystąpił konflikt programu ładującego. Gdy wszystkie wersje JSON.net były takie same, działało. (Tak właśnie działają niektóre powyższe rozwiązania - po prostu wołam, dlaczego to działa)

Mike S.
źródło
0

Walczyłem ostatnio z tym i ze starszym projektem.

Udało mi się wyśledzić problem po sprawdzeniu, która wersja biblioteki DLL faktycznie znajduje się w folderze bin.

Miałem skrypt po kompilacji, który kopiował zależne zestawy z folderu biblioteki dll do folderu bin. Wspólna konfiguracja sprzed kilku dni.

Za każdym razem, gdy budowałem skrypt po kompilacji, zastępowałem poprawną wersję Json.net starszą

Fredrik Stolpe
źródło
0

Miałem dokładnie ten sam problem, a domyślną biblioteką Visual Studio 13 była dla mnie 4.5, więc mam 2 rozwiązania, z których jedno zawiera odniesienie do tego w pliku webconfig. To jest ostateczność i działa.

Komunikat o błędzie informuje o problemie w tej lokalizacji /Projects/foo/bar/bin/Newtonsoft.Json.DLL. gdzie jest DLL! Podstawowa kontrola właściwości powiedziała mi, że jest to wersja 4.5.0.0 lub podobna, więc zmieniłem konfigurację webconfig na lookto 4.5 i używam 4.5.

Mcole1976
źródło
0

Żadna z tych opcji nie działała dla mnie, w końcu była;

Test> Ustawienia testu> * .testrunconfig

Musiałem dodać nową linię

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

Upewnij się, że ścieżka i wersja są prawidłowe dla konfiguracji.

Daniel Haselden
źródło
0

Miałem ten sam problem. Utworzyłem projekt interfejsu API sieci Web, a następnie zaktualizowałem go z .net 4.5.1 do .net 4.6.1. Zamknięcie IDE, zatrzymanie IIS i usunięcie zawartości katalogu C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Temporary ASP.NET Files \ dir naprawiło problem.

HTH

CaffeineDrivenDevelopment
źródło
0

Ten problem nie został dla mnie rozwiązany poprzez odświeżenie pakietów NuGet lub wykonanie „Wyczyść” w projekcie. Zostało to rozwiązane poprzez ręczne wyczyszczenie folderu „obj”.

Alexander P. Brown
źródło
0

Oto moje rozwiązanie tego problemu, upewnij się, że numer wersji w appconfig lub packageconfig jest taki sam jak wersja referencyjna w twoich referencjach. Zobacz tutaj


źródło