2013-10-03 56 views
0

我有一个Team Foundation Server项目中的文件夹和文件,在修改和签入时,需要将其部署到构建服务器上的文件夹中。没有解决方案或项目文件。MSBuild - 只需复制TeamCity中的文件

我对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> 
+1

@(PackagedFiles)的内容是什么?您可以使用Message任务来显示它,例如'' – stijn

回答

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

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

供参考: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=" "/>