Pergunta
Depois de MSbuild construiu a minha solução (com um site asp.net), eo projeto webdeployment construiu e colocar o site nos _PublishedWebsites diretório:
c:. \ Mybuilds \ buildName \ Daily_20090519.3 \ Release_PublishedWebsites \ MyWebSite
Como faço para copiar isso para o diretório fixo, onde o IIS pontos a para o site de teste?
Eu encontrei um monte de trechos de código, mas eu não consigo encontrar um que vai levar em conta o facto do nome deste diretório alterações.
Solução
Este é muito fácil. Você pode editar o projeto e inserir algo semelhante ao seguinte.
<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>
É isso que você está procurando?
My Book: Dentro do Microsoft Build Motor: Usando MSBuild e Team Foundation Build
Outras dicas
Eu estou usando técnica diferente.
<PropertyGroup>
<BinariesRoot>c:\BinariesForIis\</BinariesRoot>
</PropertyGroup>
O c:\BinariesForIis\
será usada para binários de saída compilado DIRECTOS (antes da cópia para ...\Daily_20090519.3\Release_
...).