2010-06-18 91 views
0

获得%(RecursiveDir)指令我正在开发一个自定义的MSBuild任务,通过从基本任务类继承。我的任务调用Microsoft.Build.Tasks.dll中声明的复制任务,在该过程中设置DestinationFolder属性。我的自定义任务已宣布了一个名为DestinationFolder财产MSBuild从自定义任务参数

public ITaskItem DestinationFolder { get; set; } 

当调用从构建/项目文件,这个任务我可能会传递一个参数,比如

<MyTask DestinationFolder="C:\Development\Test\%(RecursiveDir)" 

我的问题是,当这任务执行后,DestinationFolder属性似乎不知道%(RecursiveDir)位,而只是似乎设置为C:\Development\Test\Bin

This question似乎表明没有解决此问题的方法。这绝对是这种情况吗?我想知道是否可以将属性声明为简单的字符串,然后创建一个TaskItem对象,如果DestinationFolder字符串包含特殊的%(RecursiveDir)指令,然后相应地设置TaskItem对象。

回答

0

链接的问题处理来自任务的输出参数,其中处理输入。这里的问题是你已经将DestinationFolder声明为ITaskItem,但是你传递的是一个字符串。

你还没有给我足够的例子来弄清楚你想要做什么,但假设你有一个名为“C:\ Development \ Test \ Bin \ SomeFile.txt”的文件,你

<ItemGroup> 
    <DestinationFolderArgument Include="C:\Development\Test\**\SomeFile.txt" /> 
</ItemGroup> 
<MyTask DestinationFolder="@(DestinationFolderArgument)" /> 

现在你的任务将有机会获得所有项目的元数据,并RecursiveDir将包含“宾\”:可以在您的项目像定义一个项目。

相关问题