MSBuild:我如何检查存在的文件?

时间:2013-07-11 11:19:35

标签: xml visual-studio msbuild

MS Visual Studio 2012;的MSBuild。

如果文件不存在,我收到错误(错误MSB4184)。我试图设置一个条件,但它以无效的语法结束...请从我的proj文件中找到以下代码:

<Target Name="Resources">
    <GenerateResource Condition = " $([System.IO.Directory]::GetFiles(&quot;$(MSBuildProjectDirectory)\resources&quot;,&quot;*.*&quot;, System.IO.SearchOption.AllDirectories)::Length) != 0 "
        Sources="$(MSBuildProjectDirectory)\resources\**\*.*">
        <Output TaskParameter="OutputResources"
            ItemName="Resources"/>
    </GenerateResource>
</Target>

这个条件就像:

System.IO.Directory.GetFiles("$(MSBuildProjectDirectory)\resources","*.*", System.IO.SearchOption.AllDirectories).Length

我该如何解决这个问题?

谢谢。

1 个答案:

答案 0 :(得分:0)

我认为您可以使用ConditionItemGroup声明进行检查,如下所示:

<Target Name="Resources">
    <ItemGroup>
      <PackageFiles Include="$(MSBuildProjectDirectory)\resources\**\*.*;"/>
    </ItemGroup>
    <GenerateResource Condition="Exists('%(PackageFiles.FullPath)')" Sources="@(PackageFiles)">
        <Output TaskParameter="OutputResources" ItemName="Resources"/>
    </GenerateResource>
</Target>

根据您的要求,您可能需要在Output标记中进行一些自定义。