Domanda

Sto cercando di avere la mia applicazione web pubblicare automaticamente quando viene eseguita una build di rilascio. Sto facendo questo con l'obiettivo _CopyWebApplication. Ho aggiunto il seguente al mio Csproj file:

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

Questo funziona, ma con un problema. La differenza tra questa uscita, e l'output generato quando si utilizza la voce di menu Pubblica in Visual Studio, è che la trasformazione Web.Release.config non viene applicata al file Web.config quando si utilizza il metodo di MSBuild. Invece, web.config, Web.Release.config e Web.Debug.config sono tutti copiati.

Tutte le idee sono apprezzati.

È stato utile?

Soluzione

Sono stato sbattere la testa contro il muro per questo. Dopo escursioni a piedi attraverso gli obiettivi di MSBuild ho incontrato qualcosa di molto "opaco".

Per farla breve: Provare a utilizzare la nuova _WPPCopyWebApplication. Funziona sulla mia macchina. Il vecchio _CopyWebApplication non supporta trasformazioni per motivi di eredità. Questo è quello che faccio:

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

# UseWPP_CopyWebApplication = true requires PipelineDependsOnBuild = false

Per farla:

Date un'occhiata al VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets. E 'così sbagliato. Trova _CopyWebApplication in linea 70. Il commento è:

  

Il _CopyWebApplication originale è ora un Legacy, è comunque possibile utilizzare impostando $ ( UseWPP_CopyWebApplication ) true .   Per impostazione predefinita, ora cambiare da utilizzare bersaglio _WPPCopyWebApplication in Microsoft.Web.Publish.targets. Permette di sfruttare il trsnaformation web.config. [Tutto sic]

Uh oh. UseWPP_CopyWebApplication default a false (linea 27), che ha senso se non si vuole rompere il _CopyWebApplication esistente. Quindi, impostandola a true sarà effettivamente utilizzare il nuovo materiale WPP introdotto per VS 2010. Io preferisco questo oltre chiamando un obiettivo "nascosto".

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top