MSBuild - 只需复制TeamCity中的文件即可

时间:2013-10-03 16:16:53

标签: msbuild teamcity

我在Team Foundation Server项目中有文件夹和文件,当更改和签入时,需要将其部署到构建服务器上的文件夹中。没有解决方案或项目文件。

我对MSBuild并不熟悉,因此我在TeamCity中为VS2012项目采用了一个有效的build.xml,对其进行了编辑,以便复制文件,但在TeamCitygets最新源之后没有任何反应。

我在build.xml中做错了什么?

<?xml version="1.0" encoding="utf-8" ?>
 <Project DefaultTargets="Copy" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <Target Name="Copy">
      <Copy SourceFiles="@(PackagedFiles)" 
            DestinationFiles="@(PackagedFiles->'\\SomeFolder\CredentialOnline\%(RecursiveDir)%(Filename)%(Extension)')"/>
 </Target> 
</Project>  

2 个答案:

答案 0 :(得分:0)

<?xml version="1.0" encoding="utf-8" ?>
<Project DefaultTargets="CopyToDeployFolder" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Target Name="CopyToDeployFolder">
    <Exec Command="echo D| xcopy.exe  $(teamcity_build_checkoutDir) c:\Someplace /s /Y"  />

  </Target>
 </Project>  

答案 1 :(得分:0)

以下内容可让您“微调”您想要的文件。 如果您不想排除任何内容,只需删除“Exclude =”子句。

仅供参考:WorkingDir是一个自定义变量,这是我的“根目录”。

<ItemGroup>
    <MyExcludeFiles Include="$(WorkingDir)\**\SuperSecretStuff.txt" />
    <MyExcludeFiles Include="$(WorkingDir)\**\SuperSecretStuff.doc" />
</ItemGroup>

<ItemGroup>
    <MyIncludeFiles Include="$(WorkingDir)\**\*.*" Exclude="@(MyExcludeFiles)"/>
</ItemGroup>        



<Copy
SourceFiles="@(MyIncludeFiles)"
DestinationFiles="@(MyIncludeFiles->'$(OutputDir)\%(RecursiveDir)%(Filename)%(Extension)')"
/> 

您的“PackagedFiles”中可能没有任何内容。 这是一种列出它们的方法。

<Message Text="List of files using special characters (carriage return)"/>
<Message Text="@(PackagedFiles->'&quot;%(fullpath)&quot;' , '%0D%0A')"/>
<Message Text="   "/>
<Message Text="   "/>