【问题标题】:How to find if file exist with msbuild command(or before)如何使用 msbuild 命令(或之前)查找文件是否存在
【发布时间】:2016-05-24 14:14:40
【问题描述】:

我需要在运行 power-shell 脚本之前查找某个文件是否存在

文件(如果存在)将位于特定文件夹中。

我可以通过proj 文件或类似的东西检查它的存在吗?

【问题讨论】:

    标签: msbuild msdeploy


    【解决方案1】:

    注意第二个 MyCheck 查看(第一个)MyCheck 的(条件)值

        <PropertyGroup>
            <MyCheck Condition="Exists($(MyFileOrFolderName))">true</MyCheck>
            <MyCheck Condition="'$(MyCheck)'==''">false</MyCheck>
        </PropertyGroup>  
        <Message Text="My-File-Or-Folder-Name already exists? :  $(MyCheck)" />
    

        <PropertyGroup>
            <MyCheck>false</MyCheck>
            <MyCheck Condition="Exists($(MyFileOrFolderName))">true</MyCheck>
        </PropertyGroup>  
        <Message Text="MyFileOrFolderNameexists? :  $(MyCheck)" />
    

    【讨论】:

    • 略短:无条件地将 MyCheck 设置为 False,但将行向上移动,使其位于条件赋值之前。甚至更短:直接将 Exists 的结果赋值给属性,只需要一行
    • 我会接受第一个建议(对我的帖子进行了编辑),但第二个建议是空字符串与 true。
    • 你是对的,我的错误:Exists 仅在某种条件下有效。例如,您可以使用&lt;MyCheck &gt;$([System.IO.File]::Exists('$(MyFile)'))&lt;/MyCheck &gt;,但这仅适用于文件而不适用于文件夹,而且语法有点难记
    【解决方案2】:

    为了执行 PS 脚本,根据文件的存在情况,您可以在 *.*proj 文件中创建 Target 元素,条件取决于文件的存在情况:

    <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="14.0">
      <PropertyGroup>
        <ScriptLocation>.\Do-Something.ps1</ScriptLocation>
        <PowerShellExe Condition=" '$(PowerShellExe)'=='' ">%WINDIR%\System32\WindowsPowerShell\v1.0\powershell.exe
        </PowerShellExe>
      </PropertyGroup>
      <Target Name="RunPSScript" Condition="Exists($(ScriptLocation))">
        <Exec Command="$(PowerShellExe) -NonInteractive -executionpolicy Unrestricted -command &quot;$(ScriptLocation)&quot;"/>  
      </Target>
    </Project>
    

    查看更多详细信息 here 从 msbuild 项目执行 PS 脚本。您可以使用 AfterTargets、BeforeTargers 或 any other methods 来控制此目标的执行顺序。

    【讨论】:

      猜你喜欢
      • 2011-11-05
      • 2015-02-21
      • 1970-01-01
      • 2014-01-07
      • 2020-02-24
      • 2012-11-07
      • 1970-01-01
      • 2013-07-22
      • 2021-02-16
      相关资源
      最近更新 更多