msbuild - 如何使用 msbuild 检查项目列表中是否存在任何文件?

标签 msbuild

如果项目列表中缺少任何文件,我想运行任务。我该怎么做?

我当前的脚本有一个“源”文件列表@(MyComFiles),我使用以下任务翻译另一个“目标”文件列表@(MyInteropLibs):

<CombinePath BasePath="$(MyPath)\interop" 
             Paths="@(MyComFiles->'%(filename).%(extension)')">
    <Output TaskParameter="CombinedPaths" 
            ItemName="MyInteropLibs" />
</CombinePath>

我想检查 @(MyInteropLibs) 中的任何文件是否丢失并运行一个任务来创建它们。

最佳答案

如果您只需要创建丢失的文件,而不需要获取丢失文件的列表,您可以使用 touch task ,如果文件不存在,则会创建。

<Touch Files="@(MyInteropLibs)" AlwaysCreate="True" />

如果您只想创建丢失的文件,并避免更改现有文件的时间戳,那么批处理可以提供帮助

<Touch Files="%(MyInteropLibs.FullPath)" AlwaysCreate="True" 
       Condition=" ! Exists(%(MyInteropLibs.FullPath)) "/>

如果您想要创建的文件列表,则

<Touch Files="%(MyInteropLibs.FullPath)" AlwaysCreate="True" 
       Condition=" ! Exists(%(MyInteropLibs.FullPath)) ">
    <Output TaskParameter="TouchedFiles" ItemName="CreatedFiles"/>
</Touch>
<Message Text="Created files = @(CreatedFiles)"/>

关于msbuild - 如何使用 msbuild 检查项目列表中是否存在任何文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/802070/

相关文章:

c# - 代码后面的 specflow 有语法错误或重复代码

visual-studio-2010 - 使用 msbuild 从命令提示符运行代码分析时遇到问题

.net - msbuild : what are my options? 不支持部署项目

asp.net - 在 ASP.NET Web 应用程序中工作时,您将哪些文件检入源代码控制管理系统?

c# - 从 C# 运行 Microsoft.Build.Evaluation.Project 的并行构建

msbuild - Web 部署 - 使用相对路径进行本地文件系统部署

visual-studio-2010 - MSBuild调用Web项目的Package Target

msbuild - MSbuild 4.0无法编译.Net 3.5项目

c# - 将 c++/cli 项目从 .net 4.7 迁移到 .net core 3.1 时出现问题

visual-studio-2010 - MSBUILD 4.0 在 AJAX 扩展上失败