Otrzymuję błąd
System.IO.FileLoadException: Nie można załadować pliku lub zestawu „Newtonsoft.Json, Version = 4.5.0.0, Culture = neutralny, PublicKeyToken = 30ad4fe6b2a6aeed” lub jednej z jego zależności. Definicja manifestu zlokalizowanego zespołu nie pasuje do odwołania do zespołu. (Wyjątek od HRESULT: 0x80131040)
dla mojej wersji CI
Rozwiązanie, które próbowałem
<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>
To też nie działało
Odpowiedzi:
W konsoli menedżera pakietów wykonać:
Update-Package –reinstall Newtonsoft.Json
.AKTUALIZACJA
Pierwotnie opublikowałem to jako komentarz, ale jak sugerował @OwenBlacker, po prostu umieszczę to tutaj:
Jeśli po wykonaniu tej czynności nadal występuje błąd, to ostatecznie działało dla mnie, że usunąłem
<dependentAssembly>
sekcję Json.Net z mojego.config
pliku. Ponowna instalacja przywraca go, jeśli go nie ma i najwyraźniej musisz go usunąć. Dopóki nie będzie normalnego rozwiązania w samym pakiecie, obawiam się, że ten ręczny krok jest koniecznością.Uwaga: przed wykonaniem tej czynności przeczytaj poniższe komentarze.
Zgodnie z komentarzem René poniżej UWAŻAJ, że polecenie opublikowane w odpowiedzi spowoduje ponowną instalację pakietu w każdym projekcie w twoim rozwiązaniu. Jeśli więc używasz pakietu Newtonsoft.Json w kilku projektach i być może używasz różnych wersji, wykonanie powyższego polecenia może mieć niepożądane konsekwencje.
źródło
<dependentAssembly>
sekcję Json.Net z mojego.config
pliku. Ponowna instalacja przywraca go, jeśli go nie ma i najwyraźniej musisz go usunąć. Dopóki nie będzie normalnego rozwiązania w samym pakiecie, obawiam się, że ten ręczny krok jest koniecznością.Wszystkim, którzy mają problemy z wersją Newtonsoft.Json v4.5, spróbuj użyć tego w web.config lub app.config:
WAŻNE : Sprawdź, czy
configuration
znacznik pliku konfiguracyjnego nie ma atrybutu przestrzeni nazw (jak sugerowano w https://stackoverflow.com/a/12011221/150370 ). W przeciwnym razieassemblyBinding
tagi zostaną zignorowane.źródło
newVersion="6.0.0.0"
należy ją zmienić nanewVersion="7.0.0.0"
dowolnąKluczowym punktem jest odwołanie się do właściwej wersji w pliku konfiguracyjnym.
Kroki;
1- Sprawdź, jaka jest wersja pliku Newtonsoft.Json.dll we właściwości odwołania do projektu, niezależnie od wersji w folderze pakietu (na przykład moja to 7.0.1, a wersja odniesienia to 7.0.0.0)
2 - zobacz, czego oczekuje projekt od ciebie w wyjątku (mój to 6.0.0.0)
3- Dodaj zależny zestaw do pliku konfiguracyjnego tak, jak powinien być ..
źródło
Nie miałem szczęścia z żadnym z przedstawionych tutaj rozwiązań (odinstalowywanie, ponowne instalowanie, usuwanie referencji, tworzenie bindRedirects itp.) Musiałem wrócić do starej wersji Newtonsoft. Wersja 5.0.6 działała wcześniej, więc wypróbowałem tę wersję. Musiałem wprowadzić te dwa polecenia w Konsoli pakietów:
uninstall-package newtonsoft.json -force
install-package newtonsoft.json -version "5.0.6"
-force
Opcja w pierwszym poleceniu jest wymagane aby wymusić odinstalowanie. Zależności od innych zestawów uniemożliwiają odinstalowanie bez niego.źródło
Rozwiązałem problem z dodawaniem tego przekierowania do mojego pliku .config:
Komunikat o błędzie informuje, że nie można znaleźć wersji 4.5.0.0, aktualna wersja Newtonsoft.Json to 6.0.0.0, więc przekierowanie powinno przejść z 4.5 do 6.0, a nie odwrotnie
źródło
Myślę, że wskazujesz niewłaściwy cel, zmień go na 4.5 zamiast 6.0
To powinno działać.
źródło
Spędziłem kilka dni, próbując rozwiązać ten frustrujący problem. Próbowałem prawie wszystkiego, co można znaleźć w Internecie. Wreszcie odkryłem, że ten błąd może być spowodowany (podobnie jak w moim przypadku) przez różne docelowe wersje projektu .Net (4.5 i 4.5.1) w jednym rozwiązaniu. Poniższe kroki naprawiły to dla mnie:
Properties
.Jeśli to możliwe, ustaw tę samą wersję .Net dla wszystkich projektów. Jeśli nie, przynajmniej spróbuj zmienić projekt startowy (dla mnie to on spowodował problemy).
Usuń wszystkie
Newtonsoft.Json
paczki z roztworu.uninstall-package newtonsoft.json -force
Zaktualizuj wszystkie
Newtonsoft.Json
wersje we wszystkichpackages.config
plikach, tak jak to<package id="Newtonsoft.Json" version="7.0.1" targetFramework="net451" />
Zainstaluj ponownie
Newtonsoft.Json
z „Konsoli menedżera pakietów” za pomocą:install-package newtonsoft.json
Odbuduj rozwiązanie
(Opcjonalnie) 7. Jeśli zmieniłeś projekt startowy, zwróć go ponownie
źródło
Zrobił dla mnie lewę :)
źródło
jeśli używasz wielu projektów w tym samym rozwiązaniu i bibliotece jednego innego czeku, czy wszystkie projekty mają tę samą wersję Newtonsoft.Json
źródło
Usuń zespół Newtonsoft.Json z odwołania do projektu i dodaj go ponownie. Prawdopodobnie przypadkowo usunąłeś lub zastąpiłeś bibliotekę DLL.
źródło
Pisałem klienta usługi WebEST REST, więc dla mnie ten błąd był spowodowany ręcznym dodawaniem odwołań do
System.Net.Http
iSystem.Net.Http.Formatting
zestawów za pomocą Add Reference, kiedy powinienem był dodaćMicrosoft.AspNet.WebApi.Client
pakiet za pośrednictwem NuGet . Zobacz także tę odpowiedź na inne pytanie .źródło
W swoim rozwiązaniu masz 2 różne wersje biblioteki JSON.NET. Aby rozwiązać ten problem, należy zaktualizować je do najnowszej wersji. Wykonaj następujące kroki:
1-Otwórz rozwiązanie eksploratora 2-Kliknij prawym przyciskiem myszy nazwę rozwiązania 3-Wybierz Zarządzaj pakietami Nuget dla rozwiązania 4-Wybierz Aktualizacje z menu 5-Aktualizuj pakiet JSON.NET
To rozwiąże problem.
link: Nie można załadować pliku lub zestawu „Newtonsoft.Json, Wersja = 7.0.0.0, Kultura = neutralny, PublicKeyToken = 30ad4fe6b2a6aeed” lub jednej z jego zależności
źródło
Wdróż poprawną wersję na komputerze CI
Oznacza to, że moduł ładujący zestaw znalazł inną wersję
Newtonsoft.Json
zestawu, która nie jest zgodna z odniesieniem utworzonym w projekcie. Aby poprawnie załadować zestaw, należy albo wdrożyć zestaw razem ze skompilowanym kodem, albo zainstalować poprawną wersję zestawu na maszynie docelowej (tj. W GAC).Alternatywnie: upewnij się, że konfiguracja zawiera poprawny plik
Jeśli chcesz zachować bieżące rozwiązanie i załadować zestaw z inną wersją, upewnij się, że opublikowana konfiguracja znajduje się we właściwym
.config
pliku. Pamiętaj, że niexpto.dll.config
, biblioteka DLL ładowana przez aplikację zawsze korzysta z pliku konfiguracyjnego uruchomionej aplikacji.źródło
Zwykle dodanie przekierowania wiązania powinno rozwiązać ten problem, ale nie działało to dla mnie. Po kilku godzinach walenia głową w ścianę zdałem sobie sprawę, że w moim pliku web.config występuje atrybut xmlns. Po usunięciu atrybutu xmlns z węzła konfiguracji w pliku Web.config przekierowania wiązania działały zgodnie z oczekiwaniami.
http://www.davepaquette.com/archive/2014/10/02/could-not-load-file-or-assembly-newtonsoft-json-version4-5-0-0.aspx
źródło
Działa dla mnie .... po prostu umieść wersję, której używasz w newVersion, tj. (NewVersion = "7.0.0.0")
źródło
Zamknij rozwiązanie.
Otwórz
packages.config
i za*.csproj
pomocą edytora tekstu i usuń dowolny wiersz mają Newtonsoft.JsonDawny:
<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>
Lub
<package id="Newtonsoft.Json" version="9.0.1" targetFramework="net40" />
Ponownie otwórz rozwiązanie i ponownie zainstaluj Newtonsoft.Json przez
Install-Package Newtonsoft.Json
To działa dla mnie.
źródło
Mieliśmy dokładnie ten sam problem, o którym wspomniałeś. Używamy nunit do uruchamiania testów przez CI, i nunit uruchamia plik o nazwie tests.nunit, który opisuje listę testowych urządzeń dll do uruchomienia.
Każde urządzenie testowe miało swój własny plik konfiguracyjny, ale po uruchomieniu przez plik „tests.nunit” przekierowania wiązania wydają się być ignorowane. Rozwiązaniem było dodanie przekierowań powiązań do nowego pliku konfiguracyjnego „tests.config”, który znajdował się obok pliku „tests.nunit”.
źródło
Mam ten sam typ problemu. Rozwiązałem to również, wykonując następujące czynności: Przejdź do NARZĘDZIA > Menedżer pakietów NuGet i wybierz Konsolę Menedżera pakietów . Na koniec wykonaj następujące dwa polecenia :)
źródło
Należy zaktualizować plik web.config na serwerze. Podczas instalacji Nuget zaktualizuj ten plik, włączając ten kod
źródło
Wystarczy sprawdzić wersję właściwości Newtonsoft.Json Newtonsoft
Następnie musisz dodać tę wersję do konfiguracji sieci (w moim przypadku 8.0.0.0) konfiguracji sieci
źródło
Popełniłem błąd, dodając plik .dll NewtonSoft dla .Net 4.5.
Mój główny projekt to 4.5, ale kiedy dodałem dodatkowy projekt do mojego rozwiązania, dziwnie dodałem go jako projekt .Net 2.0 ... i kiedy próbowałem z tym korzystać z biblioteki DLL 4.5 NewtonSoft, otrzymałem ten plik „Newtonsoft.Json” błąd „nie znaleziono”.
Rozwiązaniem (oczywiście) była zmiana tego nowego projektu z .Net 2.0 na 4.5.
źródło
W moim przypadku główny projekt wciąż odwoływał się do starej wersji Newtonsoft.Json, która już nie istniała w projekcie (oznaczona żółtym wykrzyknikiem). Usunięcie odwołania rozwiązało problem, nie było konieczne wiązanie przekierowania.
źródło
Miałem dokładnie ten sam problem z wersją 7.0.0.0, a biblioteką powodującą mój problem była Microsoft.Rest.ClientRuntime, która w jakiś sposób odnosiła się do niewłaściwej wersji (6.0.0.0) Newtonsoft.json, pomimo prawidłowego zarządzania zależnościami w modelu użytkowym ( zainstalowano właściwą wersję newtonsoft.json (7.0.0.0).
Rozwiązałem to, stosując powyższe przekierowanie z wersji 6.0.0.0 do 7.0.0.0 (z Kadir Can) w pliku konfiguracyjnym:
----> Po kilku dniach bez zmiany niczego pojawiło się to z tym samym błędem. Zainstalowałem wersję 6.0.0.0 n zaktualizowałem ją do wersji 7.0.0.0, teraz działa dobrze.
źródło
W moim przypadku po pobraniu zestawu i dodaniu odwołania do projektu rozwiązałem to poprzez „odblokowanie” biblioteki DLL przed dodaniem odwołania do projektu.
Za pomocą Eksploratora Windows przejdź do lokalizacji DLL, kliknij prawym przyciskiem myszy DLL, a następnie wybierz „właściwości”. Na jednej z kart znajdziesz przycisk „odblokuj”, a następnie możesz dodać odniesienie, a zestaw załaduje się poprawnie.
źródło
Nic z góry mi nie pomogło, ale tak naprawdę to naprawiłem:
Get-Project -All | Add-BindingRedirect
Odniesienie: http://blog.myget.org/post/2014/11/27/Could-not-load-file-or-assembly-NuGet-Assembly-Redirects.aspx
źródło
Kliknij projekt prawym przyciskiem myszy, wybierz zarządzanie pakietami Nuget, wpisz newtonsoft w polu wyszukiwania i zainstaluj najnowszą wersję. Następnie uruchom aplikację
źródło
Napotkałem ten sam błąd i zmagałem się z nim przez wiele godzin. Miałem projekt interfejsu API sieci Web korzystający z Newtonsoft.json i inny projekt UnitTest dla projektu interfejsu API sieci Web. Projekt testu jednostkowego wymagał również odwołania Newtonsoft.json. Ale po dodaniu linku otrzymałem powyższy wyjątek.
W końcu rozwiązałem ten problem, dodając poniższy fragment kodu w app.config projektu testu jednostkowego:
źródło
Innym podstępnym problemem jest to, że wydaje się, że przekierowania wiązania mogą po prostu dyskretnie zakończyć się niepowodzeniem, jeśli element ma niepoprawną konfigurację na jakichkolwiek innych zależnych elementach zestawu.
Upewnij się, że pod każdym elementem znajduje się tylko jeden element.
W niektórych przypadkach VS generuje to:
Zamiast
Długo zajęło mi uświadomienie sobie, że to był problem!
źródło
Poniżej sekcji dodaj do pliku web.config
źródło
Jeśli błąd znika lokalnie i nadal pojawia się na serwerze, rozwiązaniem, które ze mną współpracuje, jest usunięcie folderu bin i pakietów .config i web.config i ponowne załadowanie tych plików
źródło