2017-11-29 11 views
-1

次のmsbuildスクリプトはCom.Library.Shared.dllからc:\tmp\にコピーしていません。どうして?MSBuild:dllファイルを一時フォルダにコピーできません

<PropertyGroup> 
    <DllFiles>$(MSBuildProjectDirectory)\bin\Debug\Com.Library.Shared.dll</DllFiles> 
</PropertyGroup> 
<Target Name="AfterBuild"> 
     <Copy 
     SourceFiles="@(DllFiles)" 
     DestinationFiles="@(DllFiles->'c:\tmp\%(Filename)%(Extension)')" /> 
</Target> 
+0

ランクランキング:

<ItemGroup> <DllFiles Include="$(MSBuildProjectDirectory)\bin\Debug\Com.Library.Shared.dll" /> </ItemGroup> 

全例がcsproj/vbprojファイルのコンテキストの外でテストしますアップ。そして/あるいはあなたがしていることを見るためにMessageステートメントを追加します。実際、このような最も基本的な問題は、常にそのように解決できます。それ以外は:DllFilesはPropertyですが、Item構文を使用しています..本当に機能しますか? – stijn

+0

これは動作しません。アイテムである必要があり、コピータスクの呼び出しは正しい。 –

答えて

1

アイテムアクセス構文@()%()はアイテムのため、ない性質のためにのみ使用可能です。

あなたPropertyGroupItemGroupに変更する場合は、あなたのターゲットは動作するはずです:冗長性と

<Project DefaultTarget="Build"> 
    <Target Name="Build"> 
    <ItemGroup> 
     <DllFiles Include="test.file" /> 
    </ItemGroup> 
     <Copy 
     SourceFiles="@(DllFiles)" 
     DestinationFiles="@(DllFiles->'c:\tmp\%(Filename)%(Extension)')" /> 
    </Target> 
</Project> 
関連する問題