Rozwiązanie Buiding MVC3 poszło dobrze, ale wystąpił błąd w przeglądarce:
Komunikat o błędzie kompilatora: CS0234: Typ lub nazwa przestrzeni nazw „Html” nie istnieje w przestrzeni nazw „System.Web.Mvc” (brakuje odniesienia do zestawu?)
Source Error:
Line 25: <add namespace="System.Web.Mvc" />
Line 26: <!--<add namespace="System.Web.Mvc.Ajax" />-->
Line 27: <add namespace="System.Web.Mvc.Html" />
Line 28: <add namespace="System.Web.Routing" />
Line 29: <add namespace="System.Web.WebPages" />
Zainstalowałem pakiety dla rozwiązania NuGet
i skonfigurowałem dla wszystkich projektów MVC3
. Czy MVC3
to biblioteki System.Web.Mvc.Ajax
, System.Web.Mvc.Html
i innych? Dlaczego dostaję błąd?
W folderze References mam System.Web.Mvc
Runtime version: v4.0.30319
,
Version: 3.0.0.0
Web.config
<?xml version="1.0" encoding="utf-8"?>
<!--
For more information on how to configure your ASP.NET application, please visit
http://go.microsoft.com/fwlink/?LinkId=152368
-->
<configuration>
<configSections>
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<appSettings>
<add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" />
<add key="webpages:Version" value="1.0.0.0" />
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
</appSettings>
<system.web>
<compilation debug="true" targetFramework="4.5" />
<authentication mode="Forms">
<forms loginUrl="~/Account/LogOn" timeout="2880" />
</authentication>
<pages>
<namespaces>
<add namespace="System.Web.Helpers" />
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Routing" />
<add namespace="System.Web.WebPages" />
</namespaces>
</pages>
<httpRuntime targetFramework="4.5" encoderType="System.Web.Security.AntiXss.AntiXssEncoder, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<machineKey compatibilityMode="Framework45" />
<profile defaultProvider="DefaultProfileProvider">
<providers>
<add name="DefaultProfileProvider" type="System.Web.Providers.DefaultProfileProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" applicationName="/" />
</providers>
</profile>
<membership defaultProvider="DefaultMembershipProvider">
<providers>
<add name="DefaultMembershipProvider" type="System.Web.Providers.DefaultMembershipProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/" />
</providers>
</membership>
<roleManager defaultProvider="DefaultRoleProvider">
<providers>
<add name="DefaultRoleProvider" type="System.Web.Providers.DefaultRoleProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" applicationName="/" />
</providers>
</roleManager>
<sessionState mode="InProc" customProvider="DefaultSessionProvider">
<providers>
<add name="DefaultSessionProvider" type="System.Web.Providers.DefaultSessionStateProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" />
</providers>
</sessionState>
</system.web>
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
</system.webServer>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="3.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
</entityFramework>
<connectionStrings>
<add name="EFDbContext" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=SportStore;Integrated Security=True;Pooling=False;" providerName="System.Data.SqlClient" />
</connectionStrings>
</configuration>
MSDN przestrzeń nazw System.Web.Mvc
plik packages.config
:
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="EntityFramework" version="5.0.0-rc" />
<package id="jQuery" version="1.7.2" />
<package id="jQuery.UI.Combined" version="1.8.11" />
<package id="jQuery.Validation" version="1.9" />
<package id="Microsoft.AspNet.Mvc" version="3.0.20105.1" />
<package id="Microsoft.AspNet.Providers.Core" version="1.0" />
<package id="Microsoft.AspNet.Providers.LocalDB" version="1.0" />
<package id="Microsoft.AspNet.Razor" version="1.0.20105.408" />
<package id="Microsoft.AspNet.WebPages" version="1.0.20105.408" />
<package id="Microsoft.Web.Infrastructure" version="1.0.0.0" />
<package id="Modernizr" version="2.0.6" />
<package id="Moq" version="4.0.10827" />
<package id="Ninject" version="3.0.1.10" />
</packages>
c#
asp.net-mvc-3
J.Olufsen
źródło
źródło
System.Web.MVC
nie skopiowano dobin
folderu od MS14-059Odpowiedzi:
Wyczyść swoje rozwiązanie, a następnie ustaw właściwość tych plików na
Copy Local = True
.Aby ustawić właściwość Kopiuj lokalnie na Prawda lub Fałsz
W Eksploratorze rozwiązań kliknij przycisk Pokaż wszystkie pliki, aby wyświetlić węzeł Odwołania.
źródło
System.Web.Mvc
Z jakiegokolwiek powodu DWIE moje rozwiązania mają projekty internetowe, które spontanicznie odinstalowały asp.net MVC. Zainstalowałem go z Nuget i teraz oba znów działają. Stało się tak po ostatniej partii aktualizacji systemu Windows, które obejmowały aktualizacje frameworku .net dla używanej przeze mnie wersji (4.5.1).
Edycja: Z bloga .Net Development and Tools Blog:
Aktualizacja zabezpieczeń MS14-059 Microsoft Asp.Net MVC złamała moją wersję!
źródło
Ten zwykle łapie mnie, gdy uruchamiam z IIS, a pula aplikacji dla domyślnej witryny jest ustawiona na .NET w wersji 2.0. Podczas korzystania z IIS ze Visual Studio tworzy katalog wirtualny, ale nadal działa w ramach domyślnej puli aplikacji serwisu. Jeśli używasz wbudowanego serwera internetowego, kliknij prawym przyciskiem myszy swój projekt internetowy, przejdź do właściwości i upewnij się, że używasz go w odpowiedniej wersji .NET. W usługach IIS sprawdź wersję .NET w puli aplikacji.
Zgodnie z moim ostatnim komentarzem na temat tego, jak projekt został utworzony - czy poprawnie dołączasz zestawy, jak poniżej (wzięte z domyślnego pliku web.config wygenerowanego przez szablon projektu MVC3 w VS10):
źródło
Musisz zaktualizować MVC.
źródło
Miałem ten sam problem - mój scenariusz polegał na tym, że odwoływałem się do nowego System.Web.Mvc.dll z folderu lib i nie ustawiłem „Kopiuj lokalnie” na „prawda”. Aplikacja następnie powracała do wersji w GAC, która nie zawierała poprawnych przestrzeni nazw (HTML, Ajax itp.) I dawała mi błąd czasu działania.
źródło
Moje rozwiązanie było w obszarze Zarządzaj pakietami Nuget dla rozwiązania ... - Miałem wiele aktualizacji do zrobienia dla kilku pakietów.
Pozwól mi cofnąć się o pół kroku i powiedzieć, że spieprzyłem się, ponieważ przeniosłem rozwiązanie i projekty z jednego folderu do drugiego ... więc sprawy były już nie do zniesienia w porównaniu z tym, co projekty wymyśliły. Wszystko poszło dobrze, ale najwyraźniej Nuget jest zdezorientowany, chyba że zastosujesz inne podejście niż ja.
Powrót do rozwiązania ... Po prostu poszedłem do Zarządzaj pakietami Nuget dla rozwiązania ... >> Aktualizacje >> Microsoft i .NET i nacisnąłem przycisk Aktualizuj wszystko .
Wszystko wróciło do normy i było szczęśliwe.
źródło
Pobrałem projekt mvc 5, a problem dotyczący przestępstw wskazuje
Z tym komunikatem o błędzie:
-> w którym wszedłem na tę stronę i wypróbowałem czyste i kilka rzeczy powyżej itp ...
To, co zadziałało, to po prostu
źródło
Uruchomienie następującego polecenia w menedżerze pakietów nuget naprawiło to dla mnie:
źródło
Ta odpowiedź jest dość późna, biorąc pod uwagę datę pytania, ale ktoś może uznać ją za przydatną.
Żadne z powyższych rozwiązań nie działało dla mnie w Visual Studio 2012 w lokalnym projekcie Net Framework 4.5 MVC 4. Dla kontekstu, podążałem za samouczkiem na temat tworzenia interfejsu API sieci Web na platformie CodeProject ( http://www.codeproject.com/) Artykuły / 615805 / Creating-a-Clean-Minimal-Footprint-ASP-NET-WebAPI ), gdy napotkałem ten problem.
Dla mnie zadziałało jawne dodanie „System.Web.Mvc” do referencji mojej aplikacji, mimo że aplikacja już zawierała odwołanie do „System.Web”.
źródło
Miałem ten sam problem, ale żadne z powyższych nie działało dla mnie. Jednak skierowali mnie w dobrym kierunku.
Na przykład, gdy ustawię „Kopiuj lokalnie” na „prawda” dla odwołania System.Web.Mvc, automatycznie ustawi to z powrotem na False.
Mam wiele projektów, które zależą od odwołania System.Web.Mvc w moim rozwiązaniu, ale tylko jeden spowodował ten problem. W VS 2012 odniesienie to jest oznaczone żółtym trójkątem uwagi.
Znajdź to odniesienie => usuń = ponownie dodaj
To naprawiło to dla mnie. Mam nadzieję że to pomoże
źródło
Wyświetl i sprawdź ścieżki referencyjne w swoim csproj.
Usunąłem odniesienia do System.Web.Mvc (i innych) i przeczytałem je na niestandardowej ścieżce.
C:\Project\OurWebReferences
Jednak po wykonaniu tej czynności ścieżka referencyjna w wciąż csproj nie zmieniła się. BYŁ
Zmieniono na ręcznie
Ścieżki są tylko przykładem.
źródło
Dla mnie rozwiązaniem było upewnienie się, że wszystkie projekty budują dla tego samego procesora - w moim przypadku x86
źródło
Kopiuj lokalnie = prawda została rozwiązana dla jednego z moich projektów. Ale w innym projekcie dostaję ten sam błąd, próbowałem ustawić Copy Local = true, ale to nie rozwiązało mojego problemu. Zmiana struktury docelowej z 4.5.1 na 4.5 we właściwościach projektu Pomogło to.
źródło
Zrobiłem coś naprawdę głupiego (a może ty też).
Próbowałem zadzwonić
System.Web.Mvc.Html.Partial("<Partial Page>")
System.Web.Mvc.Html to przestrzeń nazw, a nie klasa i nie przeczytałem tak dobrze komunikatu o błędzie, więc zinterpretowałem swój błąd jako klasę
Html
nie istnieje w przestrzeni nazw System.Web.Mvc i tak się skończyłem tutaj (głupio wiem).Wszystko, co musiałem zrobić, to dodać instrukcję użytkowania
@using System.Web.Mvc.Html
do mojej strony, a następnie@Html.Partial
działać zgodnie z oczekiwaniami.źródło
jeśli którykolwiek z powyższych problemów nie rozwiąże problemu, po prostu ustaw właściwości System.Web.Mvc.dll, aby skopiować lokalną sytuację.
rozwiąże się
źródło
Miałem ten sam problem, ale w moim przypadku powstał z innego powodu. Piszę to, aby pomóc innym ludziom z tym samym problemem. Mam rozwiązania z wieloma projektami. dwa z nich współpracują z System.Web.Mvc, zwykle naszym odniesieniem było wskazywanie na pakiety zewnętrzne, w których kontrolowaliśmy używaną wersję. Z jakiegoś powodu jedno z odniesień do projektu idzie do GAC i wskazuje na dll GAC (wersja 4.0.0.1) i program dostał błąd. Aby to poprawić:
Proste sprawdzenie, czy odwołania do System.Web.Mvc wskazują na tę samą bibliotekę DLL w tej samej ścieżce katalogu.
Mam nadzieję, że ta pomoc.
źródło
Usunąłem System.Web.dll z foldera Bin mojej witryny.
źródło
Miałem ten problem, ustawienie kopiowania lokalnego włączania i wyłączania itp. Nie działało. Projekt nie korzystał z nugetu, więc poprawki, które również były wykluczone.
Rozwiązaniem było dla mnie zainstalowanie MVC 3 (co zrobiłem za pomocą instalatora platformy internetowej).
Podejrzewam, że stanie się to bardziej rozwiązaniem dla ludzi, ponieważ platforma .net nadal się rozwija i ludzie nie mają zainstalowanych starszych wersji MVC.
źródło
Możliwe, że ustawienie DLL na CopyLocal / true lub dowolne inne główne poprawki tego problemu naprawią twój problem, ale oto inny przypadek, który złapał mnie na 20 minut straconego czasu.
Kiedy dodajesz swoje przestrzenie nazw do Views / Web.config, upewnij się, że są poprawnie rozróżniane:
źródło
Ok, więc wiele osób wydaje się mieć ten problem. Mój problem został spowodowany przez odwołania mające ścieżki do folderów bin innych projektów lub odwołania dll z folderów systemowych. Projekt miał około 6 lat, a poprzedni programiści zdecydowali, że w ten sposób będą odwoływać się do swoich bibliotek.
Rozwiązaniem było przejrzenie każdego odwołania i sprawdzenie ścieżek, a następnie usunięcie odniesienia i dodanie go za pomocą NuGet. Dla każdego pakietu, który nie był w NuGet, utworzyłem inny folder obok pakietów i umieściłem tam bibliotekę DLL w takim samym układzie, jak NuGet.
Musiałem także przejrzeć pliki konfiguracyjne i upewnić się, że używana jest poprawna wersja pakietów. Długi i bolesny proces!
źródło
Mam projekt, który robi to za każdym razem, gdy buduję przy otwartym widoku. Gdy tylko zamknąłem widok, błąd zniknął i kompilacja się powiodła. Bardzo dziwny.
źródło
Miałem ten sam problem, żadne z rozwiązań nie zadziałało, w końcu usunąłem
System.Web.MVC
i dodałem ponownie. Potem wszystko wróciło do normy i mój problem został rozwiązany.źródło