基本上我有一个命令,它将复制源目录(和子目录)的内容,并将结构展平到目标目录中,覆盖任何重复项。
这是从命令行工作的原始命令
for /r 5.1.0.60 %f in (*) do @copy "%f" "deployment" /y
在这种情况下
- “5.1.0.60”是之前 TeamCity / MSBuild 任务的输出目录
- “deployment”是步骤的展平输出的目标目录
但是,当我从 MSBuild 任务(最终作为 TeamCity 构建的一部分)内部运行此命令时,我收到以下错误
f" deployment /y was unexpected at this time
我有以下显示该问题的基本 msbuild 脚本:
<Project DefaultTargets="flatten"
xmlns="http://schemas.microsoft.com/developer/msbuild/2003"
ToolsVersion="3.5">
<Import Project="$(MSBuildExtensionsPath)\MSBuildCommunityTasks\MSBuild.Community.Tasks.Targets" />
<PropertyGroup>
<SourceDir>5.1.0.60</SourceDir>
<TargetDir>deployment</TargetDir>
</PropertyGroup>
<Target Name="flatten">
<!-- create our deployment directory -->
<MakeDir Directories="$(TargetDir)"/>
<!-- Copy all files flattenend to the deployment directory-->
<Message Text="##Command [for /r $(SourceDir) %f in (*) do @copy "%f" $(TargetDir) /y]"/>
<Exec Command="for /r $(SourceDir) %f in (*) do @copy "%f" $(TargetDir) /y" />
</Target>
</Project>
最终,如果过了线
for /r 5.1.0.60 %f in (*) do @copy "%f" "deployment" /y
进入一个批处理文件并自行运行批处理文件(在msbuild之外)我得到了同样的错误,所以大概它是一个严格的cmd问题而不是MSBuild,尽管因为我认为这是MSBuild / TeamCity中的一个常见任务我已经也标记了那些。
任何帮助或指示将不胜感激。(注意 Windows 7 专业版,TeamCity 6.5)