ASP.NET – MVC3 – Deploment - was muss man beachten wenn kein MVC 3 installiert ist?
#01 IIS 7
Heute konnte ich ein Deploment machen auf einen IIS 7 Server wo mit dem MSSQL Sever 2008 R2 zusammen arbeitet.
Die Basis vom Projekt läuft auf .NET 4 und alles wurde mit C# erstellt. Ich musste auf dem InHouse Live System noch .NET 4 installieren und das ganze mit aspnet_regiis dem IIS7 beibringen. Man findet das cmd Tool im Ordner:
c:\windows\Microsoft.NET\Framework\v4.0...\
Microsoft liefert für jede .NET Version ein ein cmd Tool für diese Aufgabe.
Das ganze sah so aus für die Installation auf den IIS7:
aspnet_regiis.exe -i
Nach der Konfiguration das ganze einmal anschauen mit:
aspnet_regiis.exe -lv
Es kann sein wenn Ihr auf einem 64bit System arbeitet, dass es auch die 32bit Version registriert. Das war bei mir so auf dem Win2k8R2 64bit der Fall.
Diese Registration kann man auch wider rückgängig machen mit:
aspnet_regiis.exe -u
Wichtig! Wenn Ihr nach diesem Task eine neue Website erstellen möchtet über den IIS Manager! Müsst Ihr im erstellen Dialog Fenster (oben rechts) den Resource Pool auswählen. In meinem Fall ist es .NET 4 . Sonst läuft es auf der Default .NET Version, in meinem Fall war die Default Version .NET 2.
Infos zu: aspnet_regiis.exe
# 02 MVC 3 und Razor Package im MS Visual Studio Web Development 2010 Express
Ich hätte die Möglichkeit gehabt das MVC 3 zu installieren. Ich wollte es aber lieber als eine Einheit über das Deploment Package ausliefern ohne die GAC zu verwenden. Das gibt mir die Sicherheit, dass alles vorhanden ist (Zielsystem). Wie machen wir das jetzt? Seit der ersten Version .NET v1.0 gibt es den bin Ordner wo die Assemblies abgelegt werden. Wichtig ist wenn wir den bin Ordner verwenden, dann müssen wir die Solution/Projekt so anpassen das wir die Assemblies local mitgeliefert werden.
Diese Assemblies brauchen wir damit das ganze mit MVC3 und Razor werkelt.
- Microsoft.Web.Infrastructure.dll
- System.Web.Helpers.dll
- System.Web.Mvc.dll
- System.Web.Razor.dll
- System.Web.WebPages.Deployment.dll
- System.Web.WebPages.dll
- System.Web.WebPages.Razor.dll
Das ganze machen wir über den Projektmappen-Explorer/Solution Explorer vom Visual Studio, über den Kontext Menu Eintrag -> Verweis hinzufügen. Das Assemblie System.Web.Helpers.dll muss ich in meinem Fall nicht hinzufügen, weil der Verweis schon in meinem Projekt existiert.

Verweise hinzufügen
Dannach die gewünschten Assemblies über den Dialog im .NET Tab hinzufügen.

Auswählen der Assemblies im .NET Tab vom Dialog
Wenn alle Assemblies hinzugefügt wurden, dann können wir alle Verweise einzeln selektieren und
die Verweiseigenschaft Lokale Kopie/Local auf True setzten.

Verweiseigenschaft - Lokale Kopie / local auf True setzten
Das ganze können wir gleich einmal testen über Projekt -> Bereitstellungspaket

Test Deploment erstellen
Jetzt sollten im bin Ordner vom PackageTmp alle gewünschten Assemblies liegen wo wir brauchen für MVC3 und Razor.

Prüfen ob alles dabei ist im bin Ordner
So könnt ihr auch gleich die ganze Solution einmal anschauen und prüfen z.B Ich hab JQuery im Projekt verwendet und prüfe ob die richtige Version eingepackt wurde oder ob die web.config stimmt.
Ab jetzt das Final Deploment Packet erstellen oder direkt über die FTP Funktionalität vom Visual Studio das ganze auf den produktiven Server hochladen.
Wichtige Links zum Thema wo mir weitergeholfen haben: Blog von Phil Haack und der Blog von Drew Miller
Have fun