Wer etwas mit ASP.NET MVC rumspielt wird feststellen, dass man in den View reinschreiben kann was man will, es wird meistens gebaut. Erst wenn man die Seite dann betritt kommt ein Fehler. Mit einem kleinen Trick kann man Views auch zur Kompilierzeit checken.
Im View
Wenn man in einem ASP.NET MVC View irgendwas verkehrt macht, warnt zwar Visual Studio (obwohl man diesen Tipp nicht immer trauen kann), aber bauen lässt sich dies schon:
Exceptions erst zur Laufzeit: HttpCompileException
Wenn man dies nun ausführt bekommt man diesen tollen Fehler:
Bei einer etwas größeren Seite wird dies allerdings sehr mühsam.
Problemlösung:
Um auch zur Kompilierzeit die View mit einzubeziehen muss man mit einem Texteditor die .csproj Projektdatei öffnen und dort folgende Änderungen machen:
<PropertyGroup> <OutputType>Library</OutputType> ... <TargetFrameworkVersion>v3.5</TargetFrameworkVersion> <!--<MvcBuildViews>false</MvcBuildViews>--> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> <DebugSymbols>true</DebugSymbols> <DebugType>full</DebugType> <Optimize>false</Optimize> <OutputPath>bin\</OutputPath> <DefineConstants>DEBUG;TRACE</DefineConstants> <ErrorReport>prompt</ErrorReport> <WarningLevel>4</WarningLevel> <MvcBuildViews>true</MvcBuildViews> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> <DebugType>pdbonly</DebugType> <Optimize>true</Optimize> <OutputPath>bin\</OutputPath> <DefineConstants>TRACE</DefineConstants> <ErrorReport>prompt</ErrorReport> <WarningLevel>4</WarningLevel> <MvcBuildViews>true</MvcBuildViews> </PropertyGroup>
Wichtig hier ist "MvcBuildViews". Dies wird per Default im oberen Abschnitt auf false gesetzt. Dieses könnt ihr entfernen. In den jeweiligen PropertyGroups könnt ihr dann entweder für Debug und Release die Option mit aktivieren.
Ergebnis:
Allerdings kommt man mit einem Doppelklick (leider) nicht in den View, sondern man springt in den Code der kompilierten Assembly. Allerdings kann man es nun einigermaßen zurückverfolgen.
Performance:
Man sollte allerdings sich überlegen ob man die Option beim Debug aktiviert. Dadurch dauert der Build Prozess um einiges Länger. Vor einem Release ist es aber jedenfall praktisch.
An der Stelle möchte ich mich bei Daniel Richter für den Tipp danken. Im Web bin ich bereits auf diesen Post gestoßen der dasselbe vorschlägt, falls meine Erklärung nicht verständlich ist ;)