19

L'aggiornamento 4 di Visual Studio Ultimate 2013 non compila le viste ASP.NET MVC 5.VS2013 non compila le viste ASP.NET MVC5

Gli errori di compilazione vengono visualizzati sporadicamente sulle viste, sebbene la compilazione abbia sempre esito positivo. Anche Intellisense è acceso e spento nelle visualizzazioni. Direi che funzionava molto meglio in VS2012 (non avevo molto MVC su quella versione).

Ho provato ad aggiungere <MvcBuildViews>true</MvcBuildViews> al file .csproj, cosa che funziona per funzionare in VS2010, ma non funziona più.

Qualche idea di quale potrebbe essere il problema?

AGGIORNAMENTO: Sto cercando il modo di vedere gli errori nella vista, come avveniva nelle versioni precedenti di VS.

+0

Utilizzi il programma di ricerca? – Ofiris

+0

No, non lo uso. – vtortola

+1

RazorGenerator è molto meglio per la compilazione di viste. Prenderò in considerazione la possibilità di passare a questo indirizzo: https://visualstudiogallery.msdn.microsoft.com/1f6ec6ff-e89b-4c47-8e79-d2d68df894ec e NUGET: https://www.nuget.org/packages/RazorGenerator.Mvc/ – mattytommo

risposta

14

Il progetto include l'obiettivo e si aggancia all'evento post-build? Prova da msbuild WebApplication1.csproj /t:MvcBuildViews dalla riga di comando, verificherà che hai sia la proprietà di default impostata sia la destinazione definita.

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

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

provare a creare un progetto vuoto MVC all'interno del VS2013U4 e confrontare il csproj al tuo.

+0

MvcBuildViews impostato su false nell'app MVC5 VS2013. Grazie per le informazioni. Acceso e ora riesco a vedere dove guardare - concesso è i file MVC generati ma il nome indica quale vista del rasoio. È stato un incubo dover passare attraverso tutte le visualizzazioni dopo la ridenominazione di uno spazio dei nomi. – Andez

30

Fare clic con il pulsante destro del mouse sul progetto Web in Esplora soluzioni. Fare clic su Unload Project. Fare clic con il pulsante destro del mouse sul progetto e fare clic su Edit <projname>.csproj.

Assicurati di avere questo elemento (aggiungilo se non esiste).

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

Scorrere verso il basso. Dovresti vedere qualche commento "Per modificare il tuo processo di compilazione, aggiungi il tuo compito all'interno di uno dei bersagli sotto e decommentalo." Sotto di esso, aggiungere questo 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> 

(il codice di cui sopra dovrebbe avere un genitore della radice <Project> nodo nel caso in cui non si vede il commento che ho citato)

Chiudere il file .csproj, poi a destra fai clic sul tuo progetto in Solution Explorer e fai clic su Reload Project.

Questo aggiungerà le vostre viste al passo della compilazione e interromperà la vostra costruzione in caso di errori. Ho scoperto che questa è una buona cosa, perché senza di essa a volte non si notano errori nell'Elenco errori fino a quando non ho distribuito il mio sito e poi li ho colpiti manualmente. Stai attento, aggiungerà del tempo al tuo passo di costruzione, rallentandolo in modo significativo. A seconda di ciò che stai cercando di ottenere, potresti voler abilitarlo/disabilitarlo in modo selettivo per ottenere una build rapida -> flusso di lavoro di test.

L'ispirazione per questa risposta è stata presa dalla risposta di Chris Hyne a MVCBuildViews not working correctly e Can Razor views be compiled?.

+0

Questo compila la vista dopo la compilazione e mostra l'errore sul file C# generato. Ma quello di cui ho bisogno sono gli errori di compilazione nella vista. – vtortola

+0

@vtortola Non sono sicuro di capire cosa cerchi dopo.Con questa configurazione, interrompe la tua build, mostra l'elenco degli errori di compilazione, quindi puoi fare doppio clic su di essi per andare alla vista appropriata e gestirli. Se non è quello che cerchi, puoi spiegare meglio? – mason

+0

attendi che funzioni ora. Ho un errore su un modello inesistente, ci sono due errori, uno mi porta alla vista e l'altro solo a un file C# generato. Grazie! – vtortola

Problemi correlati