2010-04-22 8 views
9

Nach dem Konvertieren einer hybriden ASP.NET MVC1-Anwendung in MVC2 erhalte ich den folgenden Fehler, wenn ich die Anwendung ausprobiere und ausfühle:Der Typ oder Namespacename 'Mvc' existiert nicht im Namespace 'System.Web'

der Typ oder Namespace-Name ‚Mvc‘ im Namensraum nicht ‚System.Web‘ existiert (? Sie sind eine Montage Referenz fehlt)

der allegeded Täter in der Datei web.config ist System.Web.Mvc:

Bisher scheint meine Untersuchung zu der Annahme zu führen, dass Version 2 o f System.Web.Mvc ist nicht installiert oder wurde nicht abgeholt.

Ich habe versucht, eine Datei> Neues Projekt basierend auf MVC 2 zu erstellen und das ist die neue (v2) Version von MVC abholen. Ich habe auch einige andere Projekte (die keine Hybride waren) konvertiert und sie haben ohne Probleme zu MVC2 konvertiert.

Ich habe auch MVC1 deinstalliert, um zu versuchen, Referenzen aus dem GAC zu entfernen. Nichts davon hat jedoch funktioniert.

Irgendwelche Ideen?

Antwort

9

Stellen Sie sicher, dass die Bindung in Web.config umleiten:

<runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
     <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35"/> 
     <bindingRedirect oldVersion="1.0.0.0" newVersion="2.0.0.0"/> 
     </dependentAssembly> 
     <dependentAssembly> 
     <assemblyIdentity name="Microsoft.Web.Mvc" /> 
     </dependentAssembly> 
    </assemblyBinding> 
    </runtime> 

Dies zwingt MVC 2 selbst wenn MVC 1 auf der Maschine.

auch: MVC 1 hat einen System.Web.Mvc Namespace, so stellen Sie sicher, dass Sie auch haben:

<assemblies> 
    <add assembly="System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
+7

Es war Ihr zweiter Vorschlag, den System.Web.Mvc-Namespace explizit unter Assemblys zu deklarieren, die das getan haben. Danke Craig - dankbar! – Guy

2

ich über somthing kam ähnlich und die Lösung wurde der Verweis auf Microsoft.Web.Mvc zu ändern, so kopieren Lokale wurde auf Wahr gesetzt.

0

Ich hatte den gleichen Fehler und klicken Sie auf die detaillierte Kompilierung Fehler Link auf der Seite zeigte Probleme mit System.Web.Helpers, .Http, und .WebPages.

Nach dem Sichern des Systems lief ich update-package -reinstall 'und zwang eine Deinstallation/Neuinstallation aller Pakete. Dadurch wurde die Datei web.config korrekt neu erstellt, und die Abschnitte dependentAssembly wurden ordnungsgemäß erstellt.

Nach dem Wiederaufbau der Lösung lief es erstmals.

Beachten Sie, dass der folgende Abschnitt providers der Datei web.config hinzugefügt wurde.

<contexts> 
    <context type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" /> 
</contexts> 
<providers> 
    <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" /> 
</providers> 

Dies erzeugt nur eine Build-Warnung, aber ich habe es sich für das contexts Element vorhergehenden entfernen.