Der Kauf der MVC3-Lösung lief gut, es ist jedoch ein Fehler im Browser aufgetreten:
Compiler-Fehlermeldung: CS0234: Der Typ- oder Namespace-Name 'Html' ist im Namespace 'System.Web.Mvc' nicht vorhanden (fehlt Ihnen eine Assembly-Referenz?)
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" />
Ich habe Pakete für die Lösung mit installiert NuGet
und für alle Projekte eingerichtet MVC3
. Does MVC3
gehören Bibliotheken System.Web.Mvc.Ajax
, System.Web.Mvc.Html
und andere? Warum erhalte ich den Fehler?
Im Ordner "Referenzen" habe ich 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 der System.Web.Mvc-Namespace
Datei 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
quelle
quelle
System.Web.MVC
nicht inbin
Ordner kopiert seit MS14-059Antworten:
Bereinigen Sie Ihre Lösung und setzen Sie die Eigenschaft dieser Dateien auf
Copy Local = True
.So setzen Sie die Copy Local-Eigenschaft auf True oder False
Klicken Sie im Projektmappen-Explorer auf die Schaltfläche Alle Dateien anzeigen, um den Knoten Referenzen anzuzeigen.
quelle
System.Web.Mvc
Aus irgendeinem Grund haben ZWEI meiner Lösungen Webprojekte, die asp.net MVC spontan irgendwie deinstalliert haben. Ich habe es von Nuget installiert und jetzt funktionieren beide wieder. Dies geschah nach einer Reihe von Windows-Updates, die .NET Framework-Updates für die von mir verwendete Version (4.5.1) enthielten.
Bearbeiten: Aus dem .Net Web Development and Tools-Blog:
Microsoft Asp.Net MVC-Sicherheitsupdate MS14-059 hat meinen Build beschädigt!
quelle
Dieser fängt mich normalerweise auf, wenn ich von IIS aus laufe und der App-Pool für die Standardwebsite auf .NET Version 2.0 eingestellt ist. Bei Verwendung von IIS aus Visual Studio wird ein virtuelles Verzeichnis erstellt, das jedoch weiterhin im App-Pool der Standardwebsite ausgeführt wird. Wenn Sie den integrierten Webserver verwenden, klicken Sie mit der rechten Maustaste auf Ihr Webprojekt, gehen Sie zu Eigenschaften und stellen Sie sicher, dass Sie es unter der richtigen Version von .NET ausführen. Überprüfen Sie unter IIS die .NET-Version in Ihrem App-Pool.
Nach meinem letzten Kommentar zur Erstellung des Projekts - schließen Sie die Assemblys wie folgt korrekt ein (entnommen aus der Standarddatei web.config, die von der MVC3-Projektvorlage in VS10 generiert wurde):
quelle
Sie müssen MVC aktualisieren.
quelle
Ich hatte das gleiche Problem - mein Szenario war, dass ich auf die neue System.Web.Mvc.dll aus einem lib-Ordner verwies und "Copy Local" nicht auf "true" gesetzt hatte. Die Anwendung kehrte dann zu der Version im GAC zurück, die nicht die richtigen Namespaces (HTML, Ajax usw.) enthielt, und gab mir den Laufzeitfehler.
quelle
Meine Lösung befand sich unter Verwalten von Nuget-Paketen für Lösung ... - Ich musste unzählige Updates für einige Pakete durchführen.
Lassen Sie mich einen halben Schritt zurückgehen und sagen, dass ich mich selbst verarscht habe, weil ich die Lösung und die Projekte von einem Ordner in einen anderen verschoben habe. Alles lief gut, aber anscheinend wird Nuget verwirrt, es sei denn, Sie verwenden einen anderen Ansatz als ich.
Zurück zur Lösung ... Ich ging einfach zu Nuget-Pakete für Lösung verwalten ... >> Updates >> Microsoft und .NET und klickte auf die Schaltfläche Alle aktualisieren .
Alles war wieder normal und glücklich.
quelle
Ich habe ein MVC 5-Projekt heruntergeladen und das betreffende Problem darauf hingewiesen
Mit dieser Fehlermeldung:
-> in dem ich auf diese Webseite gekommen bin und ein sauberes und ein paar Dinge oben versucht habe etc ...
Was für mich funktionierte war nur zu
quelle
Das Ausführen des folgenden Befehls im Nuget-Paketmanager hat das Problem für mich behoben:
quelle
Diese Antwort ist angesichts des Fragendatums ziemlich spät, aber jemand kann sie nützlich finden.
Keine der oben genannten Lösungen funktionierte in Visual Studio 2012 für ein lokales Projekt, Net Framework 4.5 MVC 4. Für den Kontext folgte ich einem Tutorial zum Erstellen einer Barebone-Web-API auf CodeProject ( http://www.codeproject.com/). Artikel / 615805 / Erstellen eines sauberen minimalen Footprints (ASP-NET-WebAPI ), als ich auf dieses Problem stieß.
Was für mich funktioniert hat, war das explizite Hinzufügen von "System.Web.Mvc" zu den Referenzen meiner Anwendung, obwohl die Anwendung bereits auf "System.Web" verwiesen hat.
quelle
Ich hatte das gleiche Problem, aber keines der oben genannten Probleme hat bei mir funktioniert. Sie haben mich jedoch in die richtige Richtung gebracht.
Wenn ich beispielsweise "Copy Local" für die System.Web.Mvc-Referenz auf "true" setze, wird sie automatisch auf "False" zurückgesetzt.
Ich habe mehrere Projekte, die von der System.Web.Mvc-Referenz in meiner Lösung abhängen, aber nur eines hat dieses Problem verursacht. In VS 2012 ist diese Referenz mit dem gelben Aufmerksamkeitsdreieck gekennzeichnet.
Finden Sie diese Referenz => entfernen Sie sie => fügen Sie sie erneut hinzu
Das hat es für mich behoben. Hoffe das hilft
quelle
Zeigen Sie die Referenzpfade in Ihrem csproj an und überprüfen Sie sie.
Ich hatte Verweise auf System.Web.Mvc (und andere) entfernt und sie in einen benutzerdefinierten Pfad eingelesen.
C:\Project\OurWebReferences
Danach änderte sich jedoch der Referenzpfad im stillen csproj nicht. WAR
Geändert zu manuell
Pfade sind nur ein Beispiel.
quelle
Für mich bestand die Lösung darin, sicherzustellen, dass alle Projekte für dieselbe CPU erstellt wurden - in meinem Fall x86
quelle
Copy Local = True wurde für eines meiner Projekte gelöst. Aber in einem anderen Projekt erhalte ich den gleichen Fehler, habe versucht, Copy Local = true zu setzen, aber es löst mein Problem nicht. Das Ändern des Ziel-Frameworks von 4.5.1 auf 4.5 in den Projekteigenschaften half dabei.
quelle
Ich habe etwas wirklich Dummes getan (und vielleicht hast du es auch getan).
Ich habe versucht anzurufen
System.Web.Mvc.Html.Partial("<Partial Page>")
System.Web.Mvc.Html ist ein Namespace und keine Klasse. Ich habe meine Fehlermeldung nicht so gut gelesen und meinen Fehler als Klasse interpretiert
Html
im Namespace System.Web.Mvc nicht vorhanden ist, und so habe ich geendet hier oben (dumm, ich weiß).Alles, was ich tun musste, war
@using System.Web.Mvc.Html
, meiner Seite eine using-Anweisung hinzuzufügen und dann@Html.Partial
wie erwartet zu arbeiten.quelle
Wenn eines der oben genannten Probleme Ihr Problem nicht löst, legen Sie einfach die Eigenschaften von System.Web.Mvc.dll fest, um die lokale Struktur zu kopieren.
es wird sich lösen
quelle
Ich hatte das gleiche Problem, aber in meinem Fall wurde durch einen anderen Faktor verursacht. Ich schreibe dies, um anderen Menschen mit dem gleichen Problem zu helfen. Ich habe eine Lösung mit mehreren Projekten. Zwei von ihnen arbeiten mit System.Web.Mvc. Normalerweise zeigte unsere Referenz auf externe Pakete, in denen wir die verwendete Version kontrollierten. Aus irgendeinem Grund geht eine der Projektreferenzen zu GAC und zeigt auf die GAC-DLL (Version 4.0.0.1), und das Programm hat den Fehler erhalten. Um es zu korrigieren:
Einfache Überprüfung, ob die Verweise auf System.Web.Mvc auf dieselbe DLL im selben Verzeichnispfad verweisen.
Ich hoffe das hilft.
quelle
Ich habe System.Web.dll aus dem Bin-Frolder meiner Site gelöscht.
quelle
Ich hatte dieses Problem, das Ein- und Ausschalten der lokalen Kopie usw. funktionierte nicht. Das Projekt verwendete kein Nuget, daher kamen auch Korrekturen nicht in Frage.
Das Update für mich war die Installation von MVC 3 (was ich über das Webplattform-Installationsprogramm getan habe).
Ich vermute, dass dies eher eine Lösung für Leute sein wird, da das .net-Framework weiter voranschreitet und die Leute das ältere MVC-Zeug nicht installiert haben.
quelle
Es ist wahrscheinlich, dass das Setzen Ihrer DLL auf CopyLocal / true oder eine der anderen wichtigen Korrekturen Ihr Problem behebt, aber hier ist ein weiterer Randfall, der mich 20 Minuten lang verschwendet hat.
Wenn Sie Ihre Namespaces zu Views / Web.config hinzufügen, stellen Sie sicher, dass sie korrekt in Groß- und Kleinschreibung geschrieben sind:
quelle
Ok, so viele Leute scheinen dieses Problem zu haben. Mein Problem wurde durch Verweise mit Pfaden zu den Bin-Ordnern anderer Projekte oder durch Verweise auf DLLs aus Systemordnern verursacht. Das Projekt war ungefähr 6 Jahre alt und die vorherigen Entwickler hatten entschieden, dass sie auf diese Weise auf ihre Bibliotheken verweisen würden.
Die Lösung bestand darin, jede Referenz durchzugehen und die Pfade zu überprüfen, dann die Referenz zu entfernen und sie mit NuGet hinzuzufügen. Für jedes Paket, das nicht auf NuGet war, habe ich neben Paketen einen weiteren Ordner erstellt und die DLL dort im gleichen Layout wie NuGet abgelegt.
Ich musste auch die Konfigurationsdateien durchgehen und sicherstellen, dass die richtige Version der Pakete verwendet wurde. Ein langer und schmerzhafter Prozess!
quelle
Ich habe ein Projekt, das dies immer dann tut, wenn ich mit geöffneter Ansicht baue. Sobald ich die Ansicht geschlossen habe, verschwindet der Fehler und der Build ist erfolgreich. Sehr eigenartig.
quelle
Ich hatte das gleiche Problem, keine der Lösungen funktionierte für mich. Schließlich entfernte ich die
System.Web.MVC
und fügte wieder hinzu. Dann war alles wieder normal und mein Problem gelöst.quelle