24 June 2009 ASP.NET MVC, HowTo, MVC Robert Muehsig

imageWer Microsoft neustes WebFramework genauer unter die Lupe nehmen möchte oder wer genau wissen will, was sich hinter den verschiedenen Helpern verbirgt (um so z.B. bei einem Bug genauer bescheid zu wissen) sollte sich den Source Code von ASP.NET MVC direkt in seine Solution mit einbinden. Mit wenigen Handgriffen kann man bis in das MVC Framework debuggen.

Wo gibt´s den Source Code?

Den Source Code findet man auf Codeplex.

Was bekommt man?

Man bekommt den Source Code für "System.Web.MVC" und den Futures. Auch die Unittests wurden mitausgeliefert. Wer mag kann sich auch sein eigenes MVC bauen und nutzen - die Lizenz lässt es jeden offen.

image

Wie kann man nun die System.Web.Mvc Projekt für sich selbst nutzen?

Schritt 1: Den Source Code runterladen bei Codeplex.
Schritt 2: Das System.Web.Mvc Projekt in die eigene Solution mit einhängen

Es sollte jetzt so aussehen:

image
Schritt 3: Bestehende Referenzen von System.Web.Mvc löschen und die Mvc Assembly aus der Solution nutzen.

Jetzt muss man noch die Web.config entsprechend anpassen, weil dort noch Referenzen auf die GAC Mvc DLL sind. Folgende Zeile die ich auskommentiert habe, muss auskommentiert werden:

<compilation debug="true">
			<assemblies>
				<add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
				<add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
				<add assembly="System.Web.Abstractions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
				<add assembly="System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
				<!--<add assembly="System.Web.Mvc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>-->
				<add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
				<add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
				<add assembly="System.Data.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
			</assemblies>
		</compilation>

Unter der web.config im View Ordner muss ebenfalls noch eine Änderung gemacht werden. Beim "pageParserFilterType" muss der PublicKeyToken null sein:

pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"

Geschafft!

Nun kann man direkt bis ins Framework debuggen. Den Tipp habe ich auf Steve Sandersons Blog gefunden. Er hat die Schritte auch etwas mehr beschrieben.

[ Download Democode ]


Written by Robert Muehsig

Software Developer - from Saxony, Germany - working on primedocs.io. Microsoft MVP & Web Geek.
Other Projects: KnowYourStack.com | ExpensiveMeeting | EinKofferVollerReisen.de