3 Réponses :


4
votes

Si vous souhaitez utiliser ASP.NET Compiler dans votre Visual Studio / Msbuild, vous pouvez ajouter aspnetCompiler code> Tâche à votre fichier de projet (.csproj / .vbproj) et définir mvcbuildviews code> sur true code>.

Exemple: p>

<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>


1 commentaires

Ce type de fonctionne avec force défini sur false sauf le package de service résultant est inchangé.



2
votes

Intégrez la compilation ASPX dans Visual Studio

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.

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é?

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) \"

Maintenant, tout ce qui reste est de faire le processus d'ajout de cette ligne à chaque projet Web de notre équipe pour être automatique.

Je n'ai que le complément pour cela :)

Entrez la description du lien ici


0 commentaires

1
votes

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 ) ^&amp; 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>


0 commentaires