wake-up-neo.com

Der Typ- oder Namespace-Name ist im Namespace 'System.Web.Mvc' nicht vorhanden.

Die MVC3-Lösung von Buiding ist gut gelaufen, es wurde jedoch ein Fehler im Browser angezeigt:

Compiler-Fehlermeldung: CS0234: Der Typ- oder Namespace-Name 'Html' ist im Namespace 'System.Web.Mvc' nicht vorhanden (fehlt eine Assemblyreferenz?)

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 NuGet installiert und für alle Projekte MVC3 eingerichtet. Umfasst MVC3 Bibliotheken System.Web.Mvc.Ajax, System.Web.Mvc.Html und andere? Warum erhalte ich die Fehlermeldung?


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 Namespace System.Web.Mvc

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>
213
J.Olufsen

Bereinigen Sie Ihre Projektmappe und legen Sie die Eigenschaft dieser Dateien auf Copy Local = True fest.

So legen Sie die Copy Local-Eigenschaft auf True oder False fest

Klicken Sie im Projektmappen-Explorer auf die Schaltfläche Alle Dateien anzeigen, um den Knoten Verweise anzuzeigen.

  • Öffnen Sie den Knoten Verweise für das Projekt.
  • Klicken Sie mit der rechten Maustaste auf einen Verweis in der Liste Verweise, und klicken Sie auf Eigenschaften. Die mit diesem Verweis verknüpften Eigenschaften werden in einer Liste im Eigenschaftenfenster angezeigt.
  • Ändern Sie im Eigenschaftenfenster die Copy Local-Eigenschaft in True oder False.
418
Toffee

Aus zwei Gründen haben ZWEI meiner Lösungen Webprojekte, die asp.net MVC spontan deinstalliert haben. Ich habe es von Nuget installiert und jetzt funktionieren beide wieder. Dies geschah nach einer Reihe von Windows-Aktualisierungen, die .net-Framework-Aktualisierungen für die von mir verwendete Version (4.5.1) enthielten.

Edit: Aus dem Blog für .Net-Webentwicklung und -tools:

Das Microsoft Asp.Net MVC-Sicherheitsupdate MS14-059 hat meinen Build gebrochen!

60
Chris

Dieses fängt mich normalerweise, 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 in Visual Studio wird ein virtuelles Verzeichnis erstellt, es wird jedoch weiterhin unter dem App-Pool der Standard-Site ausgeführt .. Wenn Sie den eingebauten Webserver verwenden, klicken Sie mit der rechten Maustaste auf Ihr Webprojekt, und wählen Sie Eigenschaften aus Führen Sie es unter der richtigen Version von .NET aus. __ Überprüfen Sie unter IIS die .NET-Version in Ihrem App-Pool.

Nach meinem letzten Kommentar zur Erstellung des Projekts - fügen Sie die Assemblys wie unten angegeben korrekt ein (aus der Standarddatei web.config, die von der MVC3-Projektvorlage in VS10 generiert wurde):

<compilation debug="true" targetFramework="4.0">
      <assemblies>
        <add Assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add Assembly="System.Web.Helpers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add Assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add Assembly="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add Assembly="System.Web.WebPages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
      </assemblies>
</compilation>
38
BlackSpy

Sie müssen MVC aktualisieren.

  1. Gehen Sie zu Tools -> NuGet Package Manager -> NuGet Packages für Lösung verwalten
  2. Klicken Sie auf "Updates".
  3. Update "Microsoft ASP.NET MVC"
  4. Lösung neu erstellen
30
Matt

Ich hatte das gleiche Problem - mein Szenario war, dass ich die neue System.Web.Mvc.dll aus einem lib-Ordner referenzierte 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.

28
Peter Munnings

Meine Lösung war unter Nuget-Pakete für Lösung verwalten ... - Ich hatte unzählige Updates für einige Pakete.

Lassen Sie mich noch einen halben Schritt zurückgehen und sagen, dass ich mich reingelegt habe, weil ich die Lösung und die Projekte von einem Ordner in einen anderen verschoben habe ... also waren die Dinge bereits aus dem Ruder gelaufen, im Vergleich zu dem, wo die Projekte die Dinge für gedacht hielten. Alles hat sich gut bewegt, 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 drückte den Update All-Button .

Alles war wieder normal und glücklich.

16
azarc3

Ich habe ein mvc 5-Projekt und das betreffende Problem heruntergeladen 

<add namespace="System.Web.Mvc.Ajax" />  

Mit dieser Fehlermeldung:

CS0234: The type or namespace name 'Ajax' does not exist in the namespace 'System.Web.Mvc' (are you missing an Assembly reference?)

-> in dem ich zu dieser Webseite gekommen bin und ein sauberes und ein paar Dinge oben ... 

Was für mich funktionierte, war einfach zu 

Manage Nuget and Update all the packages.  Then it worked fine.
9
Tom Stickel

Durch Ausführen des folgenden Befehls im Nuget-Paketmanager wurde es für mich behoben:

update-package Microsoft.aspnet.mvc -reinstall
6
user1477388

Diese Antwort ist angesichts des Datums der Fragestellung eher spät, kann aber für jemanden nützlich sein.

Keine der oben genannten Lösungen funktionierte für mich in Visual Studio 2012 für ein lokales Projekt, Net Framework 4.5 MVC 4. Im Kontext folgte ich einem Lernprogramm zum Erstellen einer Barebones-Web-API für CodeProject ( http: //www.codeproject. de/Articles/615805/Erstellen eines a-Clean-Minimal-Footprint-ASP-NET-WebAPI ) als ich auf dieses Problem gestoßen bin.

Was für mich funktionierte, war das explizite Hinzufügen von "System.Web.Mvc" zu den Referenzen meiner Anwendung, obwohl die Anwendung bereits auf "System.Web" verwies. 

6
Sean

Ich hatte das gleiche Problem, aber keiner der oben genannten Punkte funktionierte für mich. Sie haben mich jedoch in die richtige Richtung gebracht.

Wenn ich beispielsweise für "System.Web.Mvc" den Verweis "Lokal kopieren" auf "true" setze, wird er automatisch auf "False" gesetzt.

Ich habe mehrere Projekte, die von der System.Web.Mvc-Referenz in meiner Lösung abhängen, aber nur eines verursachte dieses Problem. In VS 2012 ist diese Referenz mit dem gelben Aufmerksamkeitsdreieck gekennzeichnet.

Finde diese Referenz => entferne sie => füge sie erneut hinzu

Das hat es für mich behoben. Hoffe, das hilft 

4
bohem.be

Zeigen Sie die Referenzpfade in Ihrem csproj an und überprüfen Sie sie.

Ich hatte Verweise auf System.Web.Mvc (und andere) entfernt und in einen benutzerdefinierten Pfad eingelesen. C:\Project\OurWebReferences

Danach hat sich der Referenzpfad im still csproj jedoch nicht geändert. WAR

<Reference Include="System.Web.Mvc, Version=4.0.0.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
  <SpecificVersion>False</SpecificVersion>
  <HintPath>..\..\..\..\OurWebProject\bin\Debug\System.Web.Mvc.dll</HintPath>
</Reference>

Manuell geändert

<Reference Include="System.Web.Mvc, Version=4.0.0.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
  <SpecificVersion>False</SpecificVersion>
        <HintPath>..\..\..\..\OurWebReferences\System.Web.Mvc.dll</HintPath>
</Reference>

Pfade sind nur ein Beispiel.

3
Valamas

Für mich bestand die Lösung darin, sicherzustellen, dass alle Projekte für dieselbe CPU erstellt wurden - in meinem Fall x86

3
Rob Bowman

Copy Local = True wurde für eines meiner Projekte gelöst. In einem anderen Projekt wurde jedoch derselbe Fehler angezeigt. Es wurde versucht, "Copy Local" = "true" festzulegen, aber es löst mein Problem nicht. Das Ändern des Target-Frameworks von 4.5.1 auf 4.5 in den Projekteigenschaften half dabei.

2

Ich habe etwas wirklich Dummes gemacht (und vielleicht haben Sie es auch getan). 

Ich habe versucht, System.Web.Mvc.Html.Partial("<Partial Page>") anzurufen.

System.Web.Mvc.Html ist ein Namespace und keine Klasse. Ich habe meine Fehlermeldung nicht so gut gelesen. Daher habe ich meinen Fehler interpretiert, da die Klasse Html nicht im Namespace System.Web.Mvc vorhanden ist endete hier (dumm ich weiß). 

Ich musste nur eine using-Anweisung @using System.Web.Mvc.Html zu meiner Seite hinzufügen und @Html.Partial funktionierte wie erwartet.

2
Jared Beach

Ich hatte das gleiche Problem, aber in meinem Fall ging es um andere Faktoren. Ich schreibe dies, um anderen Menschen mit dem gleichen Problem zu helfen ... Ich habe Lösungen mit mehreren Projekten. Zwei davon arbeiten mit System.Web.Mvc. Normalerweise verweist unsere Referenz auf externe Pakete, in denen wir die verwendete Version kontrollierten. Aus irgendeinem Grund wird eine der Projektreferenzen an GAC gerichtet und zeigt auf die GAC-DLL (Version 4.0.0.1), und das Programm hat den Fehler erhalten. Um es zu korrigieren:

Überprüfen Sie einfach, ob die Verweise auf System.Web.Mvc auf dieselbe DLL im selben Verzeichnispfad verweisen.

Ich hoffe das hilft.

1
freedeveloper

wenn einer der obigen Punkte Ihr Problem nicht löst, legen Sie einfach die Eigenschaften von System.Web.Mvc.dll fest, um die lokale Datei zu kopieren.

es wird lösen

1
Ramakrishna

Ich hatte dieses Problem, die Einstellung der lokalen Ein/Aus-Einstellung usw. funktionierte nicht. Das Projekt verwendete kein Nuget, also wurden Korrekturen in der Umgebung durchgeführt, die ebenfalls nicht in Frage kamen.

Die Lösung für mich bestand darin, MVC 3 zu installieren (was ich über das Installationsprogramm für die Webplattform getan habe). 

Ich gehe davon aus, dass dies eine Lösung für Menschen werden wird, da das .NET-Framework immer weiter voranschreitet und die älteren MVC-Mitarbeiter nicht installiert sind.

1
4imble

Ich habe System.Web.dll aus dem Bin-Ordner meiner Website gelöscht.

1
andre719mv

Es ist wahrscheinlich, dass das Problem durch das Setzen von DLL auf CopyLocal/true oder einer der anderen wichtigen Korrekturen behoben wird. Hier ist jedoch ein weiterer Edge-Fall, der mich 20 Minuten lang verschwendet hat.

Wenn Sie Ihre Namespaces zu Views/Web.config hinzufügen, stellen Sie sicher, dass sie richtig gehäuschen:

  <system.web.webPages.razor>
    <Host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <pages pageBaseType="System.Web.Mvc.WebViewPage">
      <namespaces>
        <add namespace="THE.NameSpace" />
        <add namespace="THE.Namespace" />
      </namespaces>
    </pages>
  </system.web.webPages.razor>
1

Okay, viele Leute scheinen dieses Problem zu erleben. Mein Problem wurde durch Verweise verursacht, die Pfade zu den Bin-Ordnern anderer Projekte enthalten oder auf DLLs aus Systemordnern verweisen. Das Projekt war etwa 6 Jahre alt und die früheren Entwickler hatten entschieden, dass dies die Art und Weise sei, auf die sie ihre Bibliotheken referenzieren würden. 

Die Lösung bestand darin, jede Referenz durchzugehen, die Pfade zu überprüfen, die Referenz zu entfernen und sie mit NuGet hinzuzufügen. Für jedes Paket, das sich nicht in NuGet befand, habe ich neben Paketen einen weiteren Ordner erstellt und die DLL dort in demselben Layout wie NuGet eingefügt.

Ich musste auch die Konfigurationsdateien durchgehen und sicherstellen, dass die korrekte Version der Pakete verwendet wurde. Ein langer und schmerzlicher Prozess!

1
John

Ich habe ein Projekt, das dies bei jeder Erstellung mit geöffneter Ansicht ausführt. Sobald ich die Ansicht geschlossen habe, verschwindet der Fehler und der Build ist erfolgreich. Sehr eigenartig.

0
Mark Good

Ich hatte das gleiche Problem, keine der Lösungen funktionierte für mich. Schließlich entfernte ich das System.Web.MVC und fügte erneut hinzu. 

0
Sirwan Afifi