4

次のような非常に単純なビルドスクリプトがあります。

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

そして今それは働いています:)

4

2 に答える 2

2

私はなんとかこれを解決することができました。質問を解決策で更新しました。

最後の部分WorkingDirectory="C:\ Windows \"を削除し、スクリプトを次のように変更しました。

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

そして今それは働いています:)

于 2012-05-13T09:14:55.017 に答える
0

xcopyを2回実行する必要があります。同じ呼び出しで2つの異なるアイテム配列にタスクバッチ処理を使用しようとしていますが、そのようには機能しません。これを試して:

<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>
于 2012-05-09T23:04:54.433 に答える