2013-02-14 9 views
7

Wir haben ein Projekt und möchten die Ansichten erstellen, um Fehler bei der Kompilierung zu generieren, wenn in den '.cshtml-Dateien der Views etwas nicht stimmt.ASP.Net MVC MvcBuildViews erhöht die Kompilierungszeit drastisch

Dennoch Zeit erhöht sich drastisch kompilieren:

  • MvcBuildViews = true dauert 62 Sekunden
  • MvcBuildViews = false dauert 9 Sekunden

Ist das etwas akzeptabel? Denn der Anstieg ist ziemlich drastisch und wir können es nicht ertragen, auf solche Kompilierzeiten zu warten. Wie können wir diese Zusammenstellung verbessern?

Das Projekt besteht bis jetzt aus 130 Ansichten & Teilansichten (.cshtml-Dateien). Wird dies als groß/mittel/klein angesehen?

+0

http://www.luisrocha.net/2011/10/avoiding-mvcbuildviews-build-time.html –

+0

Versuchen StackOverflow-Alternative: [StackExchange.Precompilation] (https://Stackoverflow.com/a/35977582/1141876) – fiat

Antwort

2

Wir haben mit dem gleichen Problem gekämpft. Wir begannen damit, Ansichten zu kompilieren, um offensichtliche Probleme zu erkennen, die uns während Integrationstests und UX Tests auffallen würden. Noch schlimmer waren die Fehler, die irgendwie in die Produktion kamen.

Aber wie Sie bemerkt haben, wurden unsere Bauzeiten unerträglich. Wie Sie, bauen unsere Entwickler unzählige Male und das wurde ein wichtiger Teil unseres Tages. Wir hatten Witze über Tests nach dem Mittagessen, so dass der Build konnte während wir unterwegs waren.

Wir zogen schließlich zum Gebäude vor UX-Tests.

Jetzt bewegen wir uns in Richtung Vorkompilierung. Nur ein Typ in unserem Team hat es vorläufig übernommen und anscheinend sind Pre-Compiles deutlich besser als Builds (incremental vs total). Und das Setup ist im Grunde genommen ein kleiner Abruf.

Diese Artikel sollte ein guter Anfang sein

http://stacktoheap.com/blog/2013/01/19/precompiling-razor-views-in-asp-dot-net-mvc-3/

http://blog.davidebbo.com/2011/06/precompile-your-mvc-views-using.html

+0

Danke, werde das überprüfen! :) –

11

Nun, ich denke, die Möglichkeit zu haben, die Ansichten zu kompilieren ist eine gute Sache für sich, aber ich kann nicht so lange entweder warten. Also, was ich zu tun bevorzugen ist, dass MvcBuildViews = true innerhalb der ProperyGroup Release hinzuzufügen, so dass Sie nur die Aussicht auf die Release-Zeit Kompilieren und vor der Bereitstellung

Die Immobiliengruppe sollte wie folgt aussehen:

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> 

Also setzen Sie Ihre

<MvcBuildViews>true</MvcBuildViews> 

In diesem Release-Block. Auf diese Weise kompilieren Sie Ihre Ansichten immer noch einmal und nicht jedes Mal, wenn Sie versuchen, zu debuggen ...

+0

Wir haben diesen Ansatz auch verwendet. Legitim. –

0

Setzen Sie MvcBuildViews auf False in der Csproj für die Debug-Konfiguration.

<MvcBuildViews Condition=" '$(Configuration)' != 'Debug' ">true</MvcBuildViews> 

Fügen Sie den folgenden externen Befehl im Menü "Extras/Externe Tools"

Title: Compile with MVC views 
Command: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe 
Arguments: $(SolutionDir)$(SolutionFileName) /p:MvcBuildViews=true 
Initial directory: $(SolutionDir) 
Use Output window: checked 

Dann eine Verknüpfung zu dem hinzufügen: Gehen Sie in Tools/Optionen/environnement/Tastatur Suchen Sie den Befehl „Extras .ExternalCommandX "wobei X die Position Ihres externen Befehls ist, an dem Sie ihn gerade hinzugefügt haben. Weisen Sie eine Taste zu (Bsp: Ctrl-shift-1)

Jetzt die Erklärungen: Wir haben das gleiche Problem. Wir wollen die meisten Ansichten nicht kompilieren, aber wir kompilieren sie gerne, bevor wir den Code einchecken. Auf diese Weise kompilieren wir Ansichten aus 50 oder so. Um dies zu erreichen, habe ich einen externen Tool-Befehl zu msbuild mit dem mvcbuildviews-Parameter hinzugefügt. Der einzige Nachteil ist, dass die Fehler nicht im Fehlerfenster von Visual Studio aufgelistet sind. Sie müssen sich das Ausgabefenster anschauen und gegebenenfalls auf Fehler doppelklicken.

Verwandte Themen