Um PS Skript auszuführen, in Abhängigkeit von der Existenz einer Datei Sie können ein Target
Element in Ihrer *. * proj-Datei mit Bedingung abhängig von der Datei Existenz:
<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>
erstellen
Weitere Details here über das Ausführen von PS-Skripten aus Msbuild-Projekten. Sie können AfterTargets, BeforeTargers oder any other methods verwenden, um die Reihenfolge der Ausführung dieses Ziels zu steuern.
Etwas kürzer: Setzen Sie MyCheck unbedingt auf False, aber verschieben Sie die Zeile so, dass sie vor der bedingten Zuweisung steht. Oder noch kürzer: Ordnen Sie das Ergebnis von Exists direkt der Eigenschaft zu und Sie brauchen nur eine Zeile. – stijn
Ich gehe mit der ersten Empfehlung (machte eine Änderung zu meinem Beitrag), aber die zweite wäre leer String vs wahr. – granadaCoder
Sie haben Recht, mein Fehler: 'Existiert' funktioniert nur in einem Zustand. Sie könnten ' $ ([System.IO.File] :: Exists ('$ (MyFile)')) ' zum Beispiel, aber das ist nur für Dateien und nicht für Ordner und die Syntax ist ein bisschen schwerer zu merken –
stijn