2016-06-06 14 views
10

Wstępna kompilacja brzytwy has been removed from RC2 ze względu na issues with getting it to work in .NET Core.Jak sprawdzić widoki Razor ASP.NET Core RC2/1.0 na błędy kompilacji?

Czy istnieje sposób na zawieszenie budowania CI, jeśli wystąpił błąd składni w jednym z plików .cshtml, czy nie będzie to możliwe, dopóki nie powróci kompilacja?

(mam na testowanie tego projektu HelloMvc z ASP.NET CLI samples Plik Views\Home\Index.cshtml może mieć dosłownie wszystko w nim i dotnet build nadal będzie sukces.).

Odpowiedz

5

Obecny system RC2 build wydaje się całkowicie zignorować folder Compiler/Preprocess - możesz dosłownie umieścić w nim cokolwiek i nie wygeneruje żadnych błędów kompilacji. Dopóki Roslyn nie zostanie ponownie podłączony do prekompilacji, nie sądzę, że obecnie można sprawdzać pliki .cshtml na etapie budowy.

Jedyne obejście, jakie znalazłem, to pobranie Visual Studio do otwarcia każdego pliku .cshtml przy użyciu brudnych drobnych/zastępujących sztuczek i sprawdzenie kodu brzytwy przez silnik IntelliSense.

Aktualizacja

Patrząc na commit that removed razor precompilation, wydaje się, że cała sama RazorPreCompileModule faktycznie usuwane, a won't be back for some time. Nawet jeśli ten kod został dodany z powrotem do projektu ręcznie, nie wygląda na to, że kompilacja dotnet uruchomi wszystkie moduły kompilujące.

Aktualizacja 2

Zobacz Kompilacja jest z powrotem w ASP.NET Rdzenia 1.1!

Aby ją włączyć, należy dodać następujące do project.json "zależności" Section:

"dependencies": { 
    "Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.Design": "1.1.0-preview4-final" 
} 

i dodaje do sekcji "Narzędzia":

"tools": { 
    "Microsoft.AspNetCore.Razor.Tools”: “1.1.0-preview4-final", 
    "Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.Tools": "1.1.0-preview4-final" 
} 

i pod "skrypty" , dodaj polecenie brzytwa prekompilacji do "postpublish":

"scripts": { 
    "postpublish": [ 
     "dotnet razor-precompile -configuration %publish:Configuration% -framework %publish:TargetFramework% -output-path %publish:OutputPath% %publish:ProjectPath%" 
    ] 
} 

Update 3 - csproj

W końcu udało nam się przenieść do VS2017 i przeprowadzić migrację projektu do csproj. To oczywiście przerwała prekompilację maszynek do golenia, a chłopiec był królową, aby dowiedzieć się, jak to naprawić - official instructions are here.

Pierwsza czkawka, którą najprawdopodobniej trafisz, to zautomatyzowana migracja xproj/project.json -> csproj. Automatyczna migracja zakończy się niepowodzeniem, jeśli w sekcji project.json znajduje się sekcja skryptu project.json, więc należy całkowicie usunąć tę sekcję przed wykonaniem migracji.

Okazuje się, że nadal można uruchamiać skrypty publikowania, dodając <Target Name="PostPublishTarget" AfterTargets="Publish">...</Target> do swojego, ale nie jest to już konieczne w przypadku prekompilacji maszynki.Więc bez zbędnych ceregieli, oto jak włączyć maszynki prekompilację w VS2017/csproj ziemi, kiedy już przeniesione projektu:

  1. Dodaj prawidłowy pakiet widok kompilacja odniesienie do csproj. W <ItemGroup> zawierającej wszystkie swoje projektu <PackageReference> tagów dodać:

    <PackageReference Include="Microsoft.AspNetCore.Mvc.Razor.ViewCompilation" Version="1.1.0" />

  2. Dodaj właściwość MvcRazorCompileOnPublish do csproj. W sekcji <PropertyGroup> zawierającego projekt <VersionPrefix>, <TargetFramework> etc, dodać:

    <MvcRazorCompileOnPublish>true</MvcRazorCompileOnPublish>

I gotowe. System budowy będzie teraz uruchamiał prekompilację brzytwy przy każdym opublikowaniu projektu. Powinieneś zobaczyć coś jak Razor view compilation for myApp -> obj\Release\netcoreapp1.1\myApp.PrecompiledViews.dll w pliku wyjściowym kompilacji podczas publikowania.

+0

Jakieś pomysły, jak to zrobić teraz, gdy projekty ASP Core powróciły do ​​formatu csproj? – AdamC

+0

Wreszcie zaktualizowałem odpowiedź dla csproj :) – Ryan

+1

@Ryan ten jest do publikacji. co z normalną budową/kompilacją? –

Powiązane problemy