Problem
Po zainstalowaniu pakietu Microsoft ASP.NET Web API OData 5.0.0-rc1 prerelease kończy się następującym wyjątkiem:
Nie można załadować pliku lub zestawu „System.Web.Http, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35” lub jednej z jego zależności. Definicja manifestu zlokalizowanego zestawu nie jest zgodna z odwołaniem do zestawu. (Wyjątek od HRESULT: 0x80131040)
Mój projekt MVC 4 jest zupełnie nowy i naprawdę mały, nie ma w nim nic nadzwyczajnego. Celuję w .NET Framework 4.5
Potrzebuję tego pakietu NuGet, aby zaimplementować PATCH przy użyciu klasy Delta (gdy używam wersji 4.0.0.0 pakietu, klasa Delta nie działa).
Jak mogę to naprawić?
Moje wersje System.Web.Http
W GAC mam wersję 5.0.0.0 System.Web.Http
gacutil -l System.Web.Http Globalna pamięć podręczna zestawów zawiera następujące zestawy: System.Web.Http, Version = 5.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35, processorArchitecture = MSIL
W programie Visual Studio podczas przeglądania zestawów dana wersja System.Web.Http to 4.0.0.0 (dlaczego?)
W moim projekcie odniesienie do System.Web.Http
- Ma wersję 5.0.0.0
- Wskazuje folder \ lib \ net45 \ pakietu
- Ma CopyLocal = true
Rzeczy, których próbowałem
Próbowałem powiązać przekierowanie v 4.0.0.0 z 5.0.0.0 w Web.config
<dependentAssembly>
<assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="4.0.0.0-4.0.0.0" newVersion="5.0.0.0" />
</dependentAssembly>
Ale daje mi kolejny wyjątek:
Próba dostępu metody „System.Web.Http.GlobalConfiguration..cctor ()” do pola „System.Web.Http.GlobalConfiguration.CS $ <> 9__CachedAnonymousMethodDelegate2” nie powiodła się.
Wydaje mi się, że wersja 4.0.0.0 naprawdę musi być używana przez podstawowy silnik Web Api.
Powiązane pytania
Błąd analizy kodu Nie można załadować pliku lub zestawu „System.Net.Http, wersja = 2.0.0.0 w interfejsie API sieci Web MVC4 Nie można załadować pliku lub zestawu” System.Net.Http, wersja = 2.0.0.0 w interfejsie API sieci Web MVC4
Odpowiedzi:
Visual Studio 2013 ma nową funkcję, która tym zajmuje się. Podczas kompilowania aplikacji należy zobaczyć ostrzeżenia dotyczące różnych wersji zestawu, do którego się odwołuje. Kliknij dwukrotnie ostrzeżenie, aby dodać przekierowania powiązań zestawu do pliku web.config.
Zobacz http://msdn.microsoft.com/en-us/library/2fc472t2.aspxWięcej informacji pod .
jeff.eynon zauważa poniżej, że musisz mieć wyewidencjonowany plik web.config (jeśli używasz kontroli źródła TFS), aby VS mógł automatycznie edytować plik. Dzięki za wskazówkę!
źródło
Zrobiłem to, aktualizując pakiet WebApi do wersji wstępnej przy użyciu nuget:
Aby wymusić na projekcie korzystanie z najnowszej wersji WebApi, konieczne były pewne modyfikacje w głównym pliku Web.config:
1) Wersja stron internetowych od 2.0.0.0 do 3.0.0.0
<appSettings> <add key="webpages:Version" value="3.0.0.0" /> </appSettings>
2) Przekierowanie powiązania do 5.0.0.0 dla System.Web.Http i System.Net.Http.Formatting
<dependentAssembly> <assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.0.0.0" /> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="System.Net.Http.Formatting" publicKeyToken="31bf3856ad364e35" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.0.0.0" /> </dependentAssembly>
Myślę, że to wszystko
PS: Rozwiązanie zainspirowane WebAPI OData 5.0 Beta - dostęp do GlobalConfiguration generuje błąd bezpieczeństwa
źródło
Spotkałem ten sam problem i rozwiązałem go, ustawiając CopyLocal na true dla następujących bibliotek:
System.Web.Http.dll
System.Web.Http.WebHost.dll
System.Net.Http.Formatting.dll
Muszę dodać, że używam MVC4 i NET 4
źródło
Wystąpił ten problem, gdy próbowałem zaktualizować projekt Hot Towel z szablonu projektu i kiedy utworzyłem pusty projekt i zainstalowałem HotTowel za pośrednictwem nuget w VS 2012 od 23.10.2013.
Aby to naprawić, zaktualizowałem za pośrednictwem Nuget Web Api Web Host i pakiety Web API do wersji 5.0, bieżącej wersji w NuGet w tej chwili (23.10.2013).
Następnie dodałem wiążące wskazówki:
<dependentAssembly> <assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.0.0.0" /> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="System.Net.Http.Formatting" publicKeyToken="31bf3856ad364e35" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.0.0.0" /> </dependentAssembly>
źródło
Lub możesz to zrobić z konsoli Menedżera pakietów NuGet
Install-Package Microsoft.AspNet.WebApi -Version 5.0.0
Następnie będziesz mógł dodać odwołanie do System.Web.Http.WebHost 5.0
źródło
Usuń System.Web.Http i System.Net.Http.Formatting z odniesień i Dodaj odniesienia z powrotem, przechodząc do folderu bin (gdzie zostały skopiowane przez nuget) Teraz wersja pliku to 5.0.0.0
źródło
Ten błąd pojawił się kilka razy w kilku różnych projektach.
W końcu doszedłem do wniosku, że kiedy będę budował, w moim folderze bin znajdowała się już kopia zestawu binarnego system.web.mvc.
Aby to naprawić, kliknij prawym przyciskiem myszy zespół na liście odniesień i wybierz „Właściwości”. Sprawdź, czy jest to najnowsza wersja, patrząc na właściwość „Wersja”. Jeśli tak, przełącz opcję „Copy Local” na true.
Pozwoli to upewnić się, że wersja, do której odwołuje się projekt, jest wersją, która trafi do folderu plików binarnych.
Jeśli nadal pojawia się błąd, spróbuj uruchomić nuGet, aby pobrać najnowszą wersję, a następnie spróbuj ponownie wykonać powyższe czynności.
Powodzenia - ten błąd jest uciążliwy!
źródło
Napotkałem ten sam błąd. Kiedy zainstalowałem Unity Framework for Dependency Injection, w mojej konfiguracji zostały dodane nowe odwołania do Http i HttpFormatter. Oto kroki, które wykonałem.
Uruchomiłem następującą komendę w konsoli nuGet Package Manager: PM> Install-Package Microsoft.ASPNet.WebAPI -pre
Dodano fizyczne odniesienie do biblioteki dll w wersji 5.0
źródło
rozwiązuję w drodze nuget. pierwszy, który zainstalujesz nuget. sekundę, której używasz.
ilustracja poniżej:
po trzecie: sprawdź, czy jest to najnowsza wersja, patrząc na właściwość „Wersja”.
Na koniec: ponownie sprawdzasz, czy projekt ma najnowszą wersję.
źródło
Napotkałem problem tego samego typu i wykonałem poniższe kroki, aby rozwiązać problem
Przejdź do Narzędzia -> Menedżer pakietów bibliotecznych -> Konsola Menedżera pakietów i uruchom poniższe polecenie
Zainstaluj pakiet Microsoft.ASPNet.WebAPI -pre
źródło
Po zmodyfikowaniu odwołań w
Web.config
pliku, jak wspomniano powyżej, rozwiązaliśmy odniesienia.Miałem podobny problem.
Dla nas mamy odniesienie
Microsoft.Data.Edm.dll
iOData.dll
oraz inne zespoły z Program Files:C:\Program Files (x86)\Microsoft WCF Data Services\5.0 \bin\.NETFramework\Microsoft.Data.Edm.dll
i
C:\Program Files (x86)\Microsoft WCF Data Services\5.0 \bin\.NETFramework\Microsoft.Data.OData.dll
a wersja to 5.6.4 .
Po zmianie odniesienia obu zestawów
C:\....Project\packages\Microsoft.Data.Edm.5.6.0
na problem został rozwiązanyźródło
Wszedłem do menedżera pakietów NuGet i zaktualizowałem moje pakiety. Teraz działa. Głównym, który zaktualizowałem, był Microsoft.AspNet.WebApi.Core. Może być konieczne zrobienie tego w przypadku obu projektów, aby zsynchronizować odpowiednie odwołania.
źródło
Jeśli ten problem wystąpi, sprawdź plik web.config w poniższej sekcji
Poniższa sekcja zawiera wersję używanej biblioteki DLL
po sprawdzeniu tej sekcji w web.config otwórz eksplorator rozwiązań i wybierz odniesienie z drzewa projektu, jak pokazano. Eksplorator rozwiązań-> Odniesienie
Po rozwinięciu odwołania znajdź bibliotekę dll, która spowodowała błąd. Kliknij prawym przyciskiem myszy odniesienie dll i sprawdź wersję, jak pokazano na powyższym obrazku.
Jeśli zarówno wersja config dll, jak i plik DLL, do którego się odwołuje, są różne, otrzymasz ten wyjątek. Upewnij się, że oba są w tej samej wersji, która może pomóc.
źródło