2016-05-24 2 views

Antwort

0

Notiere die zweite MyCheck schaut auf die (bedingte) Wert (der erste) MyCheck

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

OR

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

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

+0

Ich gehe mit der ersten Empfehlung (machte eine Änderung zu meinem Beitrag), aber die zweite wäre leer String vs wahr. – granadaCoder

+0

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

0

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 &quot;$(ScriptLocation)&quot;"/> 
    </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.

Verwandte Themen