Rzeczy, których próbowałem po wyszukiwaniu:
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>
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>
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
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.Json
ani 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 zestawuNewtonsoft.Json
lub 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.Json
nie 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
źródło
Odpowiedzi:
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:
I na koniec usunąłem następujące elementy z mojego pliku web.config:
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:
źródło
Korzystam z Newtonsoft.Json v6.0.3, ale to właśnie musiałem zrobić w moim pliku Web.config:
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:
źródło
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:
śledzony przez
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ą.
źródło
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.
źródło
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ć.
źródło
Komentując to w tej części na moim web.config rozwiązałem mój problem:
Ale oczywiście musisz upewnić się, że dokonałeś aktualizacji lub masz odpowiednią wersję, robiąc to w konsoli menedżera pakietów:
źródło
Wypróbowałem kroki Olega, które działały w tej samej sytuacji.
Kroki:
Uruchom
update-package Newtonsoft.Json -reinstall
w Menedżerze pakietów.Usuń swoje
bin
, włączając przeglądanie ukrytych plików i usuwaniebin
folderu.Zamknij program Visual Studio i otwórz go ponownie.
Teraz uruchom ponownie swój projekt. Uważam, że powinno być ok!
źródło
Możesz rozwiązać problem, dodając poniższe wiersze w pliku web.config.
źródło
W moim przypadku chodziło tylko o:
Problem został spowodowany, gdy ponownie mapowałem folder TFS.
źródło
Pomogło mi to wyłączyć kompilację Resharper i użyć opcji Re-build VisualStudio w moim projekcie.
źródło
z Narzędzia >> Menedżer pakietów NuGet >> Zarządzaj pakietem do aktualizacji rozwiązania Newtonsoft.Json wszystkich rozwiązań do najnowszej wersji
źródło
jeśli pracujesz z jakimś rodzajem subversion: usuń projekt i pobierz go ponownie, działało dla mnie: S
źródło
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.
źródło
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ę.
źródło
W niektórych przypadkach usunięcie folderu
Bin
iObj
spowoduje rozwiązanie tego problemu.źródło
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.
źródło
Ż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.
źródło
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
configuration
znacznika w pliku konfiguracyjnym. W przeciwnym razie przekierowania wiązania zostaną zignorowane)źródło
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
źródło
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.
Następnie zamknąłem Visual Studio, otworzyłem go ponownie i wprowadziłem następujące polecenie w konsoli Menedżera pakietów:
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.
źródło
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
źródło
Po wielu godzinach zmagania się z tym ... Wykonałem następujące czynności:
web.config
Kluczem do wprowadzenia poprawnego numeru newVersion i oldVersion jest otwarcie projektu
References
znajdź pakiet przejdź do jego właściwości lub kliknijalt + enter
Znajdziesz sekcję,
Version
która w moim przypadku była12.0.0.0
podczas jej12.0.3
eksploracji za pomocą Manage NuGet.Wreszcie
clean
irebuild
projekt (możesz chcieć wcześniej usunąć folderybin
iobj
).Możesz napotkać inne problemy z zależnościami pakietów, zrobiłem to dla wszystkich i zadziałały.
źródło
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
źródło
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)
źródło
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ą
źródło
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.
źródło
Żadna z tych opcji nie działała dla mnie, w końcu była;
Test> Ustawienia testu> * .testrunconfig
Musiałem dodać nową linię
Upewnij się, że ścieżka i wersja są prawidłowe dla konfiguracji.
źródło
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
źródło
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”.
źródło
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