我有一个非常简单的构建脚本,看起来像这样:
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0" DefaultTargets="Bundle">
<ItemGroup>
<BuildArtifacts Include="..\_buildartifacts" />
<Application Include="..\_application" />
</ItemGroup>
<Target Name="Clean">
<RemoveDir Directories="@(BuildArtifacts)" />
<RemoveDir Directories="@(Application)" />
</Target>
<Target Name="Init" DependsOnTargets="Clean">
<MakeDir Directories="@(BuildArtifacts)" />
<MakeDir Directories="@(Application)" />
</Target>
<Target Name="Bundle" DependsOnTargets="Compile">
<Exec Command="xcopy.exe %(BuildArtifacts.FullPath) %(Application.FullPath) /e /EXCLUDE:$(MSBuildProjectDirectory)\files_to_ignore_when_bundling.txt" WorkingDirectory="C:\Windows\" />
</Target>
问题在于Bundle目标,只有
%(BuildArtifacts.FullPath)
被提取了,当脚本执行时忽略了%(BuildArtifacts.FullPath)
。执行命令如下:
xcopy.exe C:\@Code\blaj_buildartifacts /e /EXCLUDE:C:\@Code\blaj\files_to_ignore_when_bundling.txt" exited with code 4
可以看到,目的地路径并没有出现,如果我硬编码路径或只是目的路径,它就可以工作。你有什么建议吗?更新: 我成功解决了这个问题,我删除了最后一个部分
WorkingDirectory="C:\Windows\"
并将脚本更改为以下内容:<Exec Command="xcopy.exe @(BuildArtifacts) @(Application) /e /EXCLUDE:$(MSBuildProjectDirectory)\files_to_ignore_when_bundling.txt" />
现在它正在工作 :)
<Copy>
任务而不是调用xcopy
:http://msdn.microsoft.com/en-us/library/3e54c37h.aspx - skolima