【问题标题】:How to delete a list of files with MSBuild Delete task without using ItemsGroup如何在不使用 ItemsGroup 的情况下使用 MSBuild Delete 任务删除文件列表
【发布时间】:2019-06-06 05:56:57
【问题描述】:

我知道,可以在<ItemsGroup> 的帮助下使用 MSBuild Delete 任务删除文件列表。正如提到的here。但是有没有办法在不使用 .

基本上可以删除任务做类似<Exec Command="del /f /q *.pdp"/>的事情

【问题讨论】:

    标签: visual-studio msbuild msbuild-task


    【解决方案1】:

    看来你想要的是这样的:

    <Target Name="TestDelete" AfterTargets="xxx">
        <Delete Files="$(Outputpath)*.pdb"/>
    </Target>
    

    但据我所知,通配符在 msbuild 任务参数中无法识别。

    所以恐怕答案是否定的。我建议您在 Items 中使用通配符来引用文件列表。

    查看MSBuild ItemsMSBuild 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*.*”,任务代码无法识别直接。

    但是对于Item,根据文档:Item类型是命名的项目列表,可以用作任务的参数。所以输入是像“xxx;xxx;xxx...”这样的字符串,表现良好。

    我的更新只是为了深入研究,很难回答设计的具体原因。我想如果您确实想知道设计原因,您可能需要通过this link向支持该产品的人寻求帮助。

    【讨论】:

    • 这样设计有什么特别的原因吗?
    • @Sisir 嗨朋友,请检查我的更新是否有帮助。如果我的回答有助于解决您原始帖子中的问题,您可以考虑将其标记为答案 :( 如果您想了解产品团队为何如此设计它的更多详细信息,我建议您可以在 @987654327 上打开一个新线程@ 从产品团队获取信息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-13
    • 2010-12-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-30
    • 1970-01-01
    相关资源
    最近更新 更多