web-dev-qa-db-fra.com

les vues de rasoir ne donnent pas d'erreur de temps de compilation

J'ai récemment installé VS 2012 Professional.

Quand j'essaye de construire mon projet Web MVC4. Il ne reconnaît pas d'erreur dans la vue du rasoir lorsque je fais "Build" ou "Re-Build".

Exemple :
J'ai supprimé un espace de noms du projet/ou dis que je l'ai renommé. j'ai construit la solution, cela m'a donné des erreurs dans tous les fichiers cs, que j'ai corrigés en changeant l'espace de noms. L'ensemble de la solution se construit avec succès. Lorsque j'exécute le projet, il m'a donné Erreur de compilation disant que l'espace de noms était introuvable, car l'ancien espace de noms était toujours référencé dans certaines vues (* .cshtml des dossiers).

Solution attendue :
Je souhaite quand je fais "Build" ou "Re-Build", il devrait reconnaître ces erreurs et me montrer avec toutes les autres erreurs.

Cela fonctionnait bien avec VS 2010, est-ce que je manque une configuration?

Merci d'avance !! Amit

Edit J'ai trouvé la réponse moi-même, je pense qu'il était tôt pour poster la question:

la syntaxe du rasoir avec des erreurs se compile alors qu'elle ne devrait pas compiler

Un autre problème

Après avoir changé la valeur en True dans le fichier .csproject, lorsque je commence à construire le projet, il affiche une erreur, mais il ne montre qu'une seule erreur à la fois. disons, j'ai 5 erreurs au total 3 vues. cela ne ferait que me montrer une erreur. Existe-t-il une solution pour afficher les 5 erreurs?

48
Amit Andharia

Quand j'essaye de construire mon projet Web MVC4. Il ne reconnaît pas d'erreur dans la vue du rasoir lorsque je fais "Build" ou "Re-Build".

Semble normal. Les vues Razor sont compilées dynamiquement par le runtime ASP.NET. Si vous souhaitez que vos vues soient construites au moment de la compilation, vous pouvez ajouter l'option suivante à votre .csproj fichier:

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

Vous pouvez jeter un oeil à cet article pour plus de détails.

72
Darin Dimitrov

Je vous recommande d'ajouter la balise MmvcBuildViews en tant qu'enfant de la balise PropertyGroup Release afin que les vues ne soient compilées que lorsque vous compilez en mode Release (ou lorsque vous publiez en mode Release). De cette façon, votre application est plus rapide lorsque vous déboguez. De plus, vous obtenez des vérifications au moment de la compilation avant le déploiement (lorsque vous utilisez le mode Release). En résumé, vous obtenez le meilleur des deux mondes.

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    <MvcBuildViews>true</MvcBuildViews>
  </PropertyGroup>
20

Selon mon expérience, en plus du vrai paramètre mentionné ci-dessus, vous devez toujours vous assurer que le paramètre ci-dessous existe dans votre fichier csproj:

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

Par défaut, il ne compile pas les vues. Vous pouvez activer cette fonctionnalité, mais gardez à l'esprit qu'elle augmentera le temps de génération.

Vous pouvez activer la vue de compilation en suivant ces étapes:

  • Décharger le projet
  • Ouvrir le fichier de projet
  • Trouver <MvcBuildViews>false</MvcBuildViews> et changez-le pour avoir true
  • Fermer le fichier de projet et recharger le projet
12
Dmitry

Sa réponse vraiment très simple Passez par ces étapes:

Décharger le projet

Modifier le projet

Que la recherche:

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

ci-dessous ajouter

<Target Name="AfterBuild" Condition="'$(Configuration)'!='Debug'">
  <RemoveDir Directories="$(BaseIntermediateOutputPath)" />
</Target>

C'est tout ce que décharger le projet. Construire

Et vérifiez que la syntaxe Ur fonctionne correctement.

Je suis sûr.

1
vishal joshi