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" />
Schön - ich habe nur das 'Or' anstelle des'! = '- auch einfache Anführungszeichen wurden nicht benötigt. Apprec! –
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 :-) –