web-dev-qa-db-fra.com

Les vues Razor peuvent-elles être compilées?

Je me demandais si les vues Razor pouvaient être compilées, comme les vues basées sur WebForm?

Est-il même logique de compiler des vues Razor et pourquoi quelqu'un voudrait-il faire cela?

46
Khalid Abuhakmeh

Oui, vous pouvez. Jetez un oeil à l'article suivant: Compilez vos vues asp.net mvc Razor dans une dll séparée

Il s'agit d'un guide "étape par étape" sur la façon de compiler vos vues de rasoir dans une DLL distincte. Je ne sais pas si c'est ce que vous visez, mais cela vous mettra certainement dans la bonne direction.

24
Sergi Papaseit

Modifier:

Voici également un article de blog sur ce sujet:

Comment détecter les erreurs de nos vues ASP.NET MVC au moment de la compilation

Pour que vos vues soient compilées, procédez comme suit;

  1. Déchargez votre projet en cliquant avec le bouton droit sur le projet dans l'Explorateur de solutions dans VS et en cliquant sur décharger le projet
  2. cliquez avec le bouton droit sur le projet qui a été converti en projet indisponible et cliquez sur "Modifier votre_nom_projet.csproj" (ce serait .vbproj si votre projet est VB)
  3. voir le code suivant;

    <!--There some lines of code here and I deleted them to get to the point quickly-->
    
    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
    <MvcBuildViews>false</MvcBuildViews>
    
  4. changez la valeur de la balise MvcBuildViews de false en true

  5. après cela, enregistrez-le et rechargez votre projet.

après avoir construit votre solution pour la compiler, vous verrez que votre vue sera également compilée.

REMARQUE: pour le tester, cassez exprès du code dans l'une de vos vues et essayez de le construire. vous verrez que vous obtiendrez un message d'erreur.

56
tugberk

La vérification MvcBuildViews est excellente, mais elle ajoute une pénalité de 5 à 10 secondes pour la création de votre application Web si elle est suffisamment complexe. Il ne met pas en cache la sortie de la compilation, il effectue donc une compilation complète de toutes vos vues à chaque fois.

J'ai trouvé un bon compromis en suivant le conseil ci-dessus et en ajoutant un attribut Condition:

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

Nous nous attendons à ce que ReSharper signale de toute façon les erreurs dans les vues et le développeur peut toujours intégrer la configuration de la version comme test - nous avons un script de "contrôle en amont" que les développeurs exécutent afin qu'ils puissent facilement s'assurer que les cibles du package fonctionnent et ainsi le - et si tout cela échoue, le serveur de build l'attrapera.

Peut-être que cette astuce est évidente, mais je n'ai vraiment commencé à apprendre correctement sur msbuild qu'au lieu d'écrire des scripts Powershell pour ces tâches. J'espère que cela est utile à quelqu'un.

32
Steve Rukuts

Oui c'est possible. En fait, le meilleur exemple auquel je peux penser serait celui des moteurs de création de modèles de courrier électronique. Si vous compilez et mettez en cache le modèle, vous pouvez rapidement arnaquer les e-mails sans avoir à répéter l'analyse.

C'est un bon exemple d'utilisation de Razor en dehors de MVC également.

1
Tejs