Je veux Visual Studio à Précompile My ASP.NET Application utilisée comme une charge utile Web Azure Web. Donc, j'ai trouvé Cet article a> qui explique comment appeler aspnet_compiler pour valider des vues. J'ai essayé d'ajouter ce qui suit à "Evénement post-construction" de mon application ASP.NET: P> Setting environment for using Microsoft Visual Studio 2010 x86 tools.
Utility to precompile an ASP.NET application
Copyright (C) Microsoft Corporation. All rights reserved.
3 Réponses :
Si vous souhaitez utiliser ASP.NET Compiler dans votre Visual Studio / Msbuild, vous pouvez ajouter
Exemple: p> aspnetCompiler code>
Tâche à votre fichier de projet (.csproj / .vbproj) et définir mvcbuildviews code> sur
true code>.
<Project>
<PropertyGroup>
<MvcBuildViews>true</MvcBuildViews>
</PropertyGroup>
<!-- ... -->
<Target Name="PrecompileWeb" AfterTargets="build" Condition="'$(MvcBuildViews)'=='true'">
<Message Text="Starting AspNetCompiler for $(ProjectDir)" Importance="high" />
<AspNetCompiler
VirtualPath="temp"
PhysicalPath="$(WebProjectOutputDir)"
Force="true"
/>
</Target>
<!-- ... -->
</Project>
Ce type de fonctionne avec force code> défini sur
false code> sauf le package de service résultant est inchangé.
Intégrez la compilation ASPX dans Visual Studio Strong> P>
L'un des principes que j'insiste sur est de toujours essayer ma construction sur un environnement propre et simuler l'installation comme s'il était fait par qa. Dernièrement, j'ai remarqué que je continue de tomber sur des erreurs cachées au fond des fichiers ASPX. Alors, pourquoi ne pas utiliser l'ancien et familier ASPNET_COMPILER.EXE TOOL? Il est situé à C: \ Windows \ Microsoft.net \ Framework \ V2.0.50727 et il est assez facile à utiliser. P>
En tant que FAQUER VS Freak, j'ai commencé à réfléchir à un complément étonnant qui s'intègre à la VS et écoutera des événements de construction et affichera les résultats dans le volet de sortie. Heck, pourquoi ne pas ajouter de capacités de servir de café? P>
Cela m'a fallu environ 10 minutes de googling pour trébucher sur ce blog. Mike Hadlow avait un génie dans son idée de simplicité. Utilisez l'événement Post Build!
Tout ce que j'ai besoin de faire, c'est mettre la ligne suivante dans l'événement Post Build: c: \ windows \ microsoft.net \ framework \ v2.0.50727 \ aspnet_compiler.exe -v / -p "$ (projectdir) \" p>
Maintenant, tout ce qui reste est de faire le processus d'ajout de cette ligne à chaque projet Web de notre équipe pour être automatique. P>
Je n'ai que le complément pour cela :) p>
La réponse de Matej m'a été utile, mais je n'ai pas été en mesure de l'utiliser comme tout et de l'obtenir pour travailler pour les deux bâtiments locaux au sein de Visual Studio et les constructions automatisées via TFS.
J'ai dû ajouter des paramètres de msbuild supplémentaires. En fait, il y avait 2 scénarios différents que j'ai eues. Un projet a été une application Web intégrée dans le dossier _Puréniéwebsites et une application Web MVC qui n'a pas été construite dans le dossier _Publiéwebsites. P>
Tout d'abord, ajoutez ce qui suit si ce n'est pas déjà dans votre fichier de projet: P>
<Choose> <When Condition="'$(BuildingInsideVisualStudio)' == true"> <PropertyGroup> <AspNetCompiler_CopyFilesFirst>false</AspNetCompiler_CopyFilesFirst> </PropertyGroup> </When> <Otherwise> <PropertyGroup> <AspNetCompiler_CopyFilesFirst>true</AspNetCompiler_CopyFilesFirst> </PropertyGroup> <ItemGroup> <AllOutputFiles Include="$(OutDir)\\**\*.*" /> </ItemGroup> </Otherwise> </Choose> <Target Name="PrecompileWeb" AfterTargets="build" Condition="'$(MvcBuildViews)'=='true'"> <!-- aspnet_compiler.exe needs to be run on the folder that has the cshtml files and the "bin" subfolder. I could not find a setting that was appropriate for both. When running locally, the value needs to be the project directory, which is $(ProjectDir). When running the TFS build, there is no folder that matches both of those criteria. So first we will copy the output into the source code folder's "bin" subfolder, then run it against the source $(ProjectDir), the same as if we were building locally. --> <Message Text="Before running AspNetCompiler, copy files from $(OutDir) to $(ProjectDir)\bin" Importance="high" /> <Exec Command="( robocopy.exe /mir $(OutDir) $(ProjectDir)\bin ) ^& IF %25ERRORLEVEL%25 LEQ 1 exit 0" Condition="'$(AspNetCompiler_CopyFilesFirst)'=='true'" /> <Message Text="Starting AspNetCompiler for $(ProjectName) at $(ProjectDir)" Importance="high" /> <AspNetCompiler VirtualPath="/" PhysicalPath="$(ProjectDir)" TargetPath="$(ProjectDir)\bin_precompile" Force="true" /> </Target>