Domanda
Dopo MSBuild ha costruito la mia soluzione (con un sito web asp.net), e il progetto webdeployment ha costruito e messo il sito web nei _PublishedWebsites directory:
c:. \ Mybuilds \ buildName \ Daily_20090519.3 \ Release_PublishedWebsites \ MyWebsite
Come faccio a copiare questo per la directory in cui fissa IIS punti per il sito web di prova?
Ho trovato un sacco di frammenti di codice, ma io non riesco a trovare uno che terrà conto del fatto che questo nome directory modifiche.
Soluzione
Questo è abbastanza facile. È possibile modificare il progetto e inserire qualcosa di simile a quanto segue.
<PropertyGroup>
<OutputDest>$(MSBuildProjectDirectory)\..\OutputCopy\</OutputDest>
</PropertyGroup>
<Target Name="AfterBuild">
<!-- Create an item with all the output files -->
<ItemGroup>
<_OutputFiles Include="$(OutputPath)**\*" Exclude="$(OutputPath)obj\**\*" />
</ItemGroup>
<!-- You probably don't want to include the files in the obj folder so exclude them. -->
<Message Text="OutputDest : $(OutputDest)" />
<Copy SourceFiles="@(_OutputFiles)"
DestinationFiles="@(_OutputFiles->'$(OutputDest)%(RecursiveDir)%(Filename)%(Extension)')"/>
</Target>
E 'questo quello che stai cercando?
Il mio libro: All'interno del Microsoft Build Engine: Utilizzo di MSBuild e Team Foundation Build
Altri suggerimenti
sto usando tecnica diversa.
<PropertyGroup>
<BinariesRoot>c:\BinariesForIis\</BinariesRoot>
</PropertyGroup>
Il c:\BinariesForIis\
sarà utilizzato per i binari di uscita compilato diretti (prima copia ...\Daily_20090519.3\Release_
...).