次のような非常に単純なビルドスクリプトがあります。
<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" />
そして今それは働いています:)