2016-07-22 6 views
0

Etwas neu zu MSBuild. Ich habe einen Ordner für robots.txt, der die configuration verwendet, um eine der Dateien in den Stammordner des Projekts zu kopieren. Dies funktioniert wie erwartet. Allerdings, wenn ich Debug ausführen will kann es die Datei nicht finden, b/c offensichtlich brauche ich keine zum Debuggen. Anstatt diese Dummy-Datei hinzuzufügen, wollte ich es aus dem Build-Prozess auszuschließen, wenn der configuration die eine oder andere aufgelistet ist, wie so:Möglich (2) "Bedingungen" in einem MSBuild-Prozess

<Target Name="AfterBuild"> 
    <Copy SourceFiles="Web.temp.config" DestinationFiles="Web.config" OverwriteReadOnlyFiles="True" /> 
    <Delete Files="Web.temp.config" /> 
    <Copy SourceFiles="$(ProjectDir)Content\robots\robots.$(Configuration).txt" Condition="$(Configuration)==Staging" DestinationFiles="robots.txt" OverwriteReadOnlyFiles="True" /> 
    <Copy SourceFiles="$(ProjectDir)Content\robots\robots.$(Configuration).txt" Condition="$(Configuration)==Production" DestinationFiles="robots.txt" OverwriteReadOnlyFiles="True" /> 
    </Target> 

Sie oben sehen, dass kann ich (2) getrennte <Copy> Elemente, tun das gleiche (in Bezug auf die robots.txt Dateien). Darf ich eine "ODER" -Klausel verwenden? Und wenn ja, wie? Gibt es einen besseren Weg, dies zu tun?

Wunsch Ansatz:

<Copy SourceFiles="$(ProjectDir)Content\robots\robots.$(Configuration).txt" Condition="$(Configuration)==Production || $(Configuration)==Staging" DestinationFiles="robots.txt" OverwriteReadOnlyFiles="True" /> 

Antwort

1

Die MSbuild "oder Klausel" als Or geschrieben nicht als ||, sonst Ihr Konzept für mich in Ordnung zu sein scheint. (fwiw, ich bin wirklich nicht so versiert in MSBuild.)

Auch die Art, wie ich Bedingungen schreibe (obwohl das teilweise Cargo-Kult sein kann) ist Condition="'$(Bla)' == 'Value'", d.h. ich zitiere die Werte in der Bedingung.

Von Ihrem q-Text könnten Sie auch versuchen ?

+0

Schön - ich habe nur das 'Or' anstelle des'! = '- auch einfache Anführungszeichen wurden nicht benötigt. Apprec! –

+0

Rob, mein Verdacht ist, dass Sie einfache Anführungszeichen benötigen, wenn Sie ein $ (Foo) testen, das möglicherweise leer sein könnte, weil * vielleicht * die Bedingung andernfalls schlecht dann gebildet würde. (Naja, das ist nur Batch-File-Bauchgefühl, vielleicht ist MSBUILD schlauer als das :-) –

Verwandte Themen