2011-01-16 5 views
7

Ich versuche, Futures für Mvc3 RTM laufen zu lassen. Nach der Installation von mvc3 von webPI ist keine .dll enthalten.MVC3 RTM Futures - Installieren von Microsoft.Web.Mvc

ich die Quelle heruntergeladen haben und versucht haben, es selbst zu bauen, aber wenn ich es in meine Lösung fallen und den Namespace auf die web.config unter dem Ordner Ansichten ich auf jeder Seite erhalten die folgende Fehlermeldung hinzu:

S0012: The type 'System.Web.Mvc.Controller' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=null'. 

Ich denke, es ist wegen der starken Namensgebung oder etwas in diese Richtung.

Wie kann ich mit Futures starten?

Edit:

1) Ich könnte falsch sein, aber aus dem Gedächtnis, wenn Sie frühere Versionen von MVC heruntergeladen und installiert, wäre es Ihnen eine Microsoft.Web.Mvc DLL unter Programmdatei/Microsoft ASP. NET/Asp. NET MVC2. Bei der WebPI-Installation befindet sich nur System.Web.Mvc.dll an diesem Speicherort.

2) Es ist auf jeden Fall nicht in dem GAC ... es ist nicht der richtige Ort für diese Baugruppe (Ich habe auch nur sicher)

3) Das Projekt zu machen, das nicht funktioniert ist das Zielprojekt. Ich habe eine neue 'Asp .net Mvc 3 Application' erstellt, die ausgeführt wurde, um sicherzustellen, dass es funktioniert hat (es war). Dann fügte ich einen Verweis auf die Assembly hinzu, die ich aus dem Mvc 3-Quellcode erstellt hatte, und änderte die Datei web.config im Ordner "Views".

<system.web.webPages.razor> 
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
<pages pageBaseType="System.Web.Mvc.WebViewPage"> 
    <namespaces> 
    <add namespace="System.Web.Mvc" /> 
    <add namespace="System.Web.Mvc.Ajax" /> 
    <add namespace="System.Web.Mvc.Html" /> 
    <add namespace="System.Web.Routing" /> 
    <add namespace="Microsoft.Web.Mvc" /> 
    </namespaces> 
</pages> 

4) Sobald ich das Namespace-Element und die DLL zu entfernen, arbeitet das Projekt erneut.

+0

Sie entweder in VS oder VWD eine MVC3 Projektvorlage verwenden ? Welches Projekt erhält den Fehler, das Zielprojekt oder das Futures-Projekt? Wenn Sie sagen, dass in der Installation von MVC3 keine DLL enthalten ist, haben Sie die gesamte Werkzeugunterstützung für die von Ihnen verwendete Version von VS? Möglicherweise müssen Sie neu installieren. – kim3er

Antwort

10

Sie könnten die source code of MVCContrib herunterladen und in der bin/AspNetMvc Ordner finden Sie die Microsoft.Web.Mvc Assembly, die gegen ASP.NET MVC 3.0 kompiliert wird.

+1

Das hat den Trick, danke! –

+0

Heilige Kuh, ich kann nicht glauben, das ist der einzige Weg, um dies zu bekommen ... Vielen Dank – CubanX

+0

Gerade heruntergeladen, keine Microsoft.Web.Mvc.dll dort – Ash

-1

Sie müssen die Baugruppe in der web.config sowie den Namespace enthalten - wenn Sie mit einem MVC2 Projekt gestartet haben Sie wahrscheinlich eine Linie dort wie

, die auf 3.0 natürlich müssen sich ändern , und Sie müssen möglicherweise auch die Bindungsumleitung aktualisieren.

Wenn Sie sagen, dass keine DLL enthalten ist, haben Sie den gac überprüft? Wenn es dort ist, brauchen Sie keine Datei lokal, damit das System sie anhand des starken Namens findet.

Wenn Sie aus der Quelle erstellt haben und daher Ihre Version einen anderen starken Namen hat, haben Sie möglicherweise Probleme mit Komponenten von Drittanbietern, die auf einen offiziellen Build verweisen, aber solange der Name in der Webkonfiguration übereinstimmt, sollten Sie in Ordnung sein Kern-Zeug. Sie sollten Ihren eigenen Schlüssel hinzufügen, damit das Token nicht null ist.

0

Wenn Sie das MvcFutures-Projekt erstellen, müssen Sie die Verweise von System.Web.Mvc und System.Web.WebPages auf die in GAC ersetzen, andernfalls müssen Sie Ihr Zielprojekt mit dem von Ihnen verwendeten Mvc-Quellcode erstellen heruntergeladen.

Beide Optionen sollten für Sie gut funktionieren.