我知道,可以在<ItemsGroup>
的帮助下使用MSBuild Delete任务删除文件列表。如here所述。但是,有一种方法可以不用使用。
基本上可以删除任务,执行类似于<Exec Command="del /f /q *.pdp"/>
答案 0 :(得分:2)
似乎您想要的是这样的东西
<Target Name="TestDelete" AfterTargets="xxx">
<Delete Files="$(Outputpath)*.pdb"/>
</Target>
但是据我所知, msbuild任务参数中无法识别通配符。
因此,恐怕答案是否定的。我建议您在“项目”中使用通配符来引用文件列表。
选中MSBuild Items和MSBuild Tasks。在官方文档中,只有“ Items”明确声明它支持通配符。
此外,您可以选中此similar issue。
更新:
实际上不确定特定设计的真正原因。我刚刚阅读了Task Writing文档。并编写一个简单的MyDelete任务进行研究。
public class MyDelete:Task
{
[Required]
public string MyProperty { get; set; }
public override bool Execute()
{
// Log a high-importance comment
Log.LogMessage(MessageImportance.High,
"MyDelete Task has delete files: \"" + MyProperty + "\".");
return true;
}
}
然后将以下脚本添加到项目文件中:
<UsingTask TaskName="MyMessage.MyDelete"
AssemblyFile="MyDelete.dll"/>
<Target Name="MyTarget" AfterTargets="build">
<ItemGroup>
<MyItem Include="$(Outputpath)*.*"/>
</ItemGroup>
<MyDelete MyProperty="$(Outputpath)*.*"/>
<MyDelete MyProperty="@(MyItem)"/>
</Target>
对于大多数任务,我的猜测是该属性是字符串,因此包含通配符的输入是字符串变量“ path *。*”,该任务的代码无法直接识别< / strong>。
但是对于项,根据文档:项类型是项的命名列表,可以用作任务的参数。因此,输入的是像“ xxx; xxx; xxx ...”这样的字符串,效果很好。
我的更新只是进行深入的研究,难以回答有关设计的特殊原因。我认为,如果您确实想知道设计原因,则可能需要向this link的产品支持者寻求帮助。