Question

Je suis en train d'avoir mon application Web automatiquement Publier lorsqu'une version Release est effectuée. Je fais cela en utilisant la cible de _CopyWebApplication. J'ajouté ce qui suit à mon dossier .csproj:

  <!-- Automatically Publish in Release build. -->
  <Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" />
  <Target Name="AfterBuild">
    <RemoveDir Directories="$(ProjectDir)..\Output\MyWeb" ContinueOnError="true" />
    <MSBuild Projects="MyWeb.csproj" Properties="Configuration=Release;WebProjectOutputDir=$(ProjectDir)..\Output\MyWeb;OutDir=$(ProjectDir)bin\" Targets="ResolveReferences;_CopyWebApplication" />
  </Target>

Cela fonctionne mais avec une question. La différence entre cette sortie et la sortie générée lors de l'utilisation l'élément de menu Publish dans Visual Studio, est que la transformation Web.Release.config ne soit pas appliqué au fichier Web.config pour l'utilisation de la méthode MSBuild. Au lieu de cela, Web.config, Web.Release.config et Web.Debug.config sont tous copiés.

Toutes les idées sont appréciées.

Était-ce utile?

La solution

J'ai été frappé ma tête contre le mur pour cela. Après la randonnée à travers les cibles MSBuild je suis tombé sur quelque chose de très « opaque ».

Longue histoire courte: essayez le nouveau _WPPCopyWebApplication. Il fonctionne sur ma machine. Le vieux _CopyWebApplication ne supporte pas les transformations pour des raisons historiques. C'est ce que je fais:

msbuild /t:Rebuild /p:OutDir=..\publish\;Configuration=Release;UseWPP_CopyWebApplication=True;PipelineDependsOnBuild=False MvcApplication1\MvcApplication1.csproj

# UseWPP_CopyWebApplication = true requires PipelineDependsOnBuild = false

Longue histoire:

Jetez un oeil à VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets. Il est si mal. Trouver _CopyWebApplication en ligne 70. Le commentaire est:

  

Le _CopyWebApplication d'origine est maintenant un héritage, vous pouvez toujours l'utiliser en réglant $ ( UseWPP_CopyWebApplication ) true .   Par défaut, il changer maintenant d'utiliser le système de _WPPCopyWebApplication dans Microsoft.Web.Publish.targets. Il permet de tirer parti de la trsnaformation web.config. [Sic tout]

Uh oh. UseWPP_CopyWebApplication par défaut à false (ligne 27) qui est logique si vous ne voulez pas briser la _CopyWebApplication existante. Donc la mise à true va réellement utiliser les nouveautés WPP introduit à VS 2010. Je préfère cette plus appeler une cible « cachée ».

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top