Кажется, что вы хотите, это что-то вроде:
<Target Name="TestDelete" AfterTargets="xxx">
<Delete Files="$(Outputpath)*.pdb"/>
</Target>
Но, как я знаю, подстановочный знак не распознается в параметрах задачи msbuild .
Так что ответ отрицательный, я боюсь.Я рекомендую использовать подстановочные знаки в Items для ссылки на список файлов.
Проверьте MSBuild Items и MSBuild Tasks . В официальном документе четко указано, что только Itemsон поддерживает групповые символы.
Кроме того, вы можете проверить эту аналогичную проблему .
Обновление:
На самом деле не уверен, чтореальная причина конкретного дизайна.Я только что прочитал документ 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 *. *", Которая не может быть распознана кодомзадача напрямую .
Но для Item, согласно документу: Типы элементов - это именованные списки элементов, которые могут использоваться в качестве параметров для задач.Таким образом, ввод - это строка типа «ххх; ххх; ххх ...», которая хорошо работает.
Мое обновление просто для глубокого исследования, трудно ответить на конкретную причину дизайна.Я думаю, что если вы хотите узнать причину дизайна, вам, возможно, придется обратиться за помощью к тому, кто поддерживает продукт, по этой ссылке .