【发布时间】:2016-05-24 14:14:40
【问题描述】:
我需要在运行 power-shell 脚本之前查找某个文件是否存在
文件(如果存在)将位于特定文件夹中。
我可以通过proj 文件或类似的东西检查它的存在吗?
【问题讨论】:
我需要在运行 power-shell 脚本之前查找某个文件是否存在
文件(如果存在)将位于特定文件夹中。
我可以通过proj 文件或类似的东西检查它的存在吗?
【问题讨论】:
注意第二个 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)" />
【讨论】:
Exists 仅在某种条件下有效。例如,您可以使用<MyCheck >$([System.IO.File]::Exists('$(MyFile)'))</MyCheck >,但这仅适用于文件而不适用于文件夹,而且语法有点难记
为了执行 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 "$(ScriptLocation)""/>
</Target>
</Project>
查看更多详细信息 here 从 msbuild 项目执行 PS 脚本。您可以使用 AfterTargets、BeforeTargers 或 any other methods 来控制此目标的执行顺序。
【讨论】: