Überprüfen Sie den Build auf Rasiermesserfehler


70

Gibt es eine Möglichkeit für Visual Studio (ich verwende 2010), Fehler in Rasiermesseransichten während der Erstellung zu finden, genau wie es anderer Code in einem C # -Projekt tun würde?

Es ist nur ein Schmerz, dass Sie alle Fehler in Ihrem Code überprüfen und denken können, dass alles in Ordnung ist, aber es scheint, dass Sie sich über Ansichten nicht sicher sein können, wenn Sie nicht jeden einzelnen durchgehen.

Übrigens codiere ich in meinen Ansichten offensichtlich nicht - ich spreche zum Beispiel nur über HTML- oder URL-Erweiterungsmethoden.


6
Ich würde denken, dass dies genauso funktionieren würde: stackoverflow.com/questions/383192/compile-views-in-asp-net-mvc

Antworten:


103

Versuchen Sie, MVCBuildViews in Ihrer Projektdatei auf true zu setzen (dh bearbeiten Sie Ihre csproj-Datei).

 <MvcBuildViews>true</MvcBuildViews>

Hat Will +1 für den ersten Einstieg gegeben - Vielen Dank, dass Sie die Lösung für eine schnelle Referenz geklärt haben. Als Antwort markiert.
isNaN1247

@beardtwizzle: Du kannst auch + JP. Das ist eine neue Funktion von MVC (ich glaube 2), die ich völlig vergessen habe (und definitiv die bessere Antwort ist).

@Will sorry ja + zu JP verdient :)
isNaN1247

Alt aber gut. Es rettet meinen Tag.
Chau als

2
Seltsamerweise funktionierte das in einer bestehenden Immobiliengruppe nicht. Es hat nur funktioniert, als ich eine bestimmte Immobiliengruppe dafür erstellt habe, dh<PropertyGroup> <MvcBuildViews>true</MvcBuildViews> </PropertyGroup>
Martin Capodici

14

Das Erstellen von Ansichten dauert eine Weile und die zusätzlichen 10+ Sekunden für einen Debug-Build können schnell ärgerlich werden. Daher setze ich die MvcBuildViews normalerweise nur bei Build-Konfigurationen vom Release-Typ auf true. Wenn Sie über einen Build-Server verfügen, wird der Fehler auf diese Weise abgefangen, oder Sie können ab und zu manuell einen Release-Build ausführen, um Ihre Ansichten zu überprüfen.

Ich denke nicht, dass die Reihenfolge für PropertyGroup-Elemente wichtig ist, aber für ein vollständigeres Beispiel habe ich Elemente über und unter dem MvcBuildViews-Element eingefügt.

<PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    ...
    <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
    <MvcBuildViews>false</MvcBuildViews>
    <UseIISExpress>false</UseIISExpress>
    ...
</PropertyGroup>

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    ...
    <ErrorReport>prompt</ErrorReport>
    <MvcBuildViews>true</MvcBuildViews>
    <WarningLevel>4</WarningLevel>
    ...
</PropertyGroup>

Das MvcBuildViews-Element in der oberen PropertyGroup wurde von VS bei der Projekterstellung hinzugefügt, die Build-Konfigurations-spezifische (untere PropertyGroup), die ich manuell hinzugefügt habe


Ich kann das nicht zum Laufen bringen - <MvcBuildViews> -Tags waren noch nicht vorhanden, ich musste sie manuell hinzufügen (falls dies relevant ist). Meine Ansichten weisen viele Fehler auf, und ein Build erkennt sie in beiden Konfigurationen nicht.
Niico

Ich hatte das gleiche Problem wie @niico, stellte jedoch fest, dass die PropertyGroup-Bedingung nicht mit meiner Build-Konfiguration und -Plattform übereinstimmte (Bedingung anyCPU, Build x86).
Kobbe

0

Versuchen Sie, im Modus Bearbeitung des Projekts die folgende Assembly hinzuzufügen: System.core , gemäß dem Code:

...
<Reference Include="System.Core, Version=4.0.0.0" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Net.Http.WebRequest" />
...

Manchmal wird dieser Assembler nicht richtig geladen. In meinem Fall hat es funktioniert!

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.