仅当文件数大于零时,如何在 MSBuild 中运行任务?

Posted

技术标签:

【中文标题】仅当文件数大于零时,如何在 MSBuild 中运行任务?【英文标题】:How to run a task in MSBuild, only if files count are more than zero? 【发布时间】:2021-08-05 20:40:30 【问题描述】:

我正在尝试在 MSBuild 中运行命令,前提是条件为真。什么条件?我计算特定扩展名的文件,如果没有文件,我想运行该任务。

<Target Name="MakeSureProjectHasViewsAndPagesInIt" AfterTargets="PreBuildEvent">
    <Exec Command="echo PROJECT HAS NO CShtml FILE!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" Condition="dir *.cshtml /s" />
</Target>

我无法使条件部分起作用。我想统计当前项目目录和子目录中的所有*.cshtml文件,如果结果为零,我想运行该命令。

我不知道如何写那个条件。你能帮忙吗?

【问题讨论】:

【参考方案1】:

您必须使用文件数定义一个属性

<PropertyGroup>
    <CSHTMLCount>$([System.IO.Directory]::GetFiles('$(MSBuildProjectDirectory)', '*.cshtml').Length)</CSHTMLCount>
</PropertyGroup>

<Target Name="MakeSureProjectHasViewsAndPagesInIt" Condition="'$(CSHTMLCount)' == '0'" AfterTargets="PreBuildEvent">
    <Exec Command="echo PROJECT HAS NO CSHTML FILE!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" />
</Target>

【讨论】:

以上是关于仅当文件数大于零时,如何在 MSBuild 中运行任务?的主要内容,如果未能解决你的问题,请参考以下文章

基于sersync海量文件实时同步

如何正确使用 animateTransform cx cy 值?

如何在 MSVS 开发提示之外运行 MSBuild?

Apache Tiles 失败并出现错误,但仅当日志级别设置大于 INFO 时?

如何创建一个 msbuild 目标以在“运行”目标(dotnet 运行)之后运行?

如何在Splunk中发出警报?