2012-05-09 49 views
3

我有一個非常簡單的構建腳本,看起來像這樣:XCOPY用的MSBuild

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

的問題是捆綁目標,只有%(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" /> 

,現在它的工作:)

+0

使用內置''任務,而不是xcopy'調用:http://msdn.microsoft.com/en-us/library/3e54c37h.aspx – skolima

回答

1

我設法解決這個問題。我已經用解決方案更新了這個問題。

我刪除了最後一部分WorkingDirectory = 「C:\ WINDOWS \」,改變了腳本到這一點:

<Exec Command="xcopy.exe @(BuildArtifacts) @(Application) /e /EXCLUDE:$(MSBuildProjectDirectory)\files_to_ignore_when_bundling.txt" /> 

,現在它的工作:)

0

您需要執行xcopy兩次。您正在嘗試在同一個調用中對兩個不同的項目數組使用任務批處理,但它不起作用。試試這個:

<Target Name="Bundle" DependsOnTargets="Compile"> 
    <Exec Command="xcopy.exe %(BuildArtifacts.FullPath) /e /EXCLUDE:$(MSBuildProjectDirectory)\files_to_ignore_when_bundling.txt" WorkingDirectory="C:\Windows\" /> 
    <Exec Command="xcopy.exe %(Application.FullPath) /e /EXCLUDE:$(MSBuildProjectDirectory)\files_to_ignore_when_bundling.txt" WorkingDirectory="C:\Windows\" /> 
</Target> 
+0

嗯,我無法得到這個工作,xcopy需要一個目標路徑,這就是%(應用程序。 FullPath)應該是。我不確定我完全理解MSBuild語法 – Pelle