19

Mein Visual Studio Ultimate 2013 Update 4 kompiliert keine ASP.NET MVC 5-Ansichten.VS2013 kompiliert keine ASP.NET MVC5-Ansichten

Übersetzungsfehler werden sporadisch in Ansichten erkannt, obwohl die Kompilierung immer erfolgreich ist. Intellisense ist auch in den Ansichten ein- und ausgeschaltet. Ich würde sagen, dass es in VS2012 wesentlich besser funktionierte (ich habe nicht viel MVC auf dieser Version).

Ich habe versucht, <MvcBuildViews>true</MvcBuildViews> in die .csproj-Datei hinzuzufügen, was in VS2010 funktioniert, aber es funktioniert nicht mehr.

Jede Idee, was könnte das Problem sein?

UPDATE: Ich bin auf der Suche nach der Möglichkeit, die Fehler in der Ansicht zu sehen, wie es in früheren Versionen von VS geschah.

+0

Verwenden Sie Resharper? – Ofiris

+0

Nein, ich benutze es nicht. – vtortola

+1

RazorGenerator ist viel besser zum Zusammenstellen von Ansichten. Ich würde darüber nachdenken, es zu wechseln: https://visualstudiogallery.msdn.microsoft.com/1f6ec6ff-e89b-4c47-8e79-d2d68df894ec und NUGET: https://www.nuget.org/packages/RazorGenerator.Mvc/ – mattytommo

Antwort

14

Enthält Ihr Projekt das Ziel und Hook in after build event? Versuchen Sie msbuild WebApplication1.csproj /t:MvcBuildViews von der Befehlszeile, es wird überprüft, dass Sie sowohl Standard-Eigenschaft festgelegt und Ziel definiert haben.

<PropertyGroup> 
    <MvcBuildViews>true</MvcBuildViews> 
</PropertyGroup> 

<Target Name="MvcBuildViews" AfterTargets="AfterBuild" Condition="'$(MvcBuildViews)'=='true'"> 
    <AspNetCompiler VirtualPath="temp" PhysicalPath="$(WebProjectOutputDir)" /> 
</Target> 

Versuchen Sie, ein leeres MVC-Projekt innerhalb des VS2013U4 und vergleichen Sie die csproj bei Ihnen zu schaffen.

+0

MvcBuildViews in VS2013 MVC5 App auf false festgelegt. Danke für die Information. Eingeschaltet und jetzt kann ich sehen, wo ich hinschauen muss - vorausgesetzt, es sind die generierten MVC-Dateien, aber der Name gibt an, welche Rasierklingenansicht. War ein Albtraum, der nach einem Namespace-Umbenennen alle Ansichten durchlaufen musste. – Andez

30

Klicken Sie mit der rechten Maustaste auf Ihr Webprojekt im Projektmappen-Explorer. Klicken Sie auf Unload Project. Klicken Sie mit der rechten Maustaste auf das Projekt und klicken Sie auf Edit <projname>.csproj.

Stellen Sie sicher, dass Sie dieses Element haben (fügen Sie es hinzu, wenn es nicht existiert).

<Project> 
    <PropertyGroup> 
    <MvcBuildViews>true</MvcBuildViews> 
    </PropertyGroup> 
</Project> 

Scrollen Sie nach unten. Sie sollten einen Kommentar sehen "Um Ihren Build-Prozess zu ändern, fügen Sie Ihre Aufgabe in eines der folgenden Ziele ein und entfernen Sie das Kommentarzeichen." Darunter, fügen Sie diese Markup:

<Target Name="MvcBuildViews" AfterTargets="AfterBuild" Condition="'$(MvcBuildViews)'=='true'"> 
    <ItemGroup> 
     <ExtraWebConfigs Include="$(BaseIntermediateOutputPath)\**\web.config" /> 
     <ExtraPackageTmp Include="$([System.IO.Directory]::GetDirectories(&quot;$(BaseIntermediateOutputPath)&quot;, &quot;PackageTmp&quot;, System.IO.SearchOption.AllDirectories))" /> 
    </ItemGroup> 
    <Delete Files="@(ExtraWebConfigs)" /> 
    <RemoveDir Directories="@(ExtraPackageTmp)" /> 
    <AspNetCompiler VirtualPath="temp" PhysicalPath="$(WebProjectOutputDir)" /> 
    </Target> 

Schließen Sie die .csproj Datei, dann rechts (der obige Code einen Elternteil der Wurzel <Project> Knoten bei dem Kommentar, den ich erwähnte Sie nicht sehen soll) Klicken Sie im Projektmappen-Explorer auf Ihr Projekt und klicken Sie auf Reload Project.

Dadurch werden Ihre Ansichten dem Kompilierungsschritt hinzugefügt und der Build wird angehalten, wenn Fehler gefunden werden. Ich fand das eine gute Sache, denn ohne sie merke ich manchmal Fehler in der Fehlerliste erst, wenn ich meine Seite bereitgestellt habe und sie dann manuell getroffen habe. Seien Sie gewarnt, es wird Ihrem Build-Schritt etwas Zeit geben und es erheblich verlangsamen. Je nachdem, was Sie erreichen möchten, können Sie es selektiv aktivieren/deaktivieren, um einen schnellen Build -> Test-Workflow zu erreichen.

Inspiration für diese Antwort wurde aus Chris Hynes Antwort auf MVCBuildViews not working correctly und Can Razor views be compiled? entnommen.

+0

Dies kompiliert nur die Ansicht nach dem Build und zeigt den Fehler in der generierten C# -Datei an. Aber was ich brauche, sind die Kompilierungsfehler in der Ansicht. – vtortola

+0

@vtortola Ich bin mir nicht sicher, ob ich verstehe, wonach Sie suchen.Mit dieser Konfiguration wird der Build angehalten, die Liste der Kompilierungsfehler angezeigt und Sie können auf die entsprechenden Kompilierungsfehler doppelklicken, um zur entsprechenden Ansicht zu gelangen und sie zu bearbeiten. Wenn Sie nicht danach suchen, können Sie das bitte besser erklären? – mason

+0

warten, es funktioniert jetzt. Ich habe einen Fehler über ein nicht existierendes Modell, es gibt zwei Fehler, einer bringt mich zur Ansicht und der andere nur zu einer generierten C# Datei. Vielen Dank! – vtortola

Verwandte Themen