Frage

habe ich einen Konfigurationstest über Visual Studio benannt, die zur Zeit nur alle DEBUG Einstellungen nimmt jedoch verwende ich Compiler Bedingungen einige spezifische Maßnahmen, um zu bestimmen, ob die Build geschieht TEST sein | DEBUG | RELEASE.

Doch wie kann ich meine MSBUILD Skript die Testkonfiguration zu erkennen ??

Zur Zeit baue ich

 <MSBuild Projects="@(SolutionsToBuild)" Properties="Configuration=$(Configuration);OutDir=$(BuildDir)\Builds\" />

Wo @ (SolutionsToBuild) ist eine meiner Lösung. In den Gemeinsamen MsBuild Projekteigenschaften heißt es, dass $ (Konfiguration) a Allgemeingut, aber es scheint immer leer?

Bedeutet dies, dass es nie gesetzt wird, sondern einfach für meine Zwecke reserviert oder dass es nur erkennen DEBUG | RELEASE. Wenn ja, was ist der Punkt, die Erstellung von verschiedenen Build-Konfigurationen in ermöglicht?

War es hilfreich?

Lösung

unter Verwendung einer Batch-Datei wie folgt

Ich habe nicht viel getan bei der Definition einer MSBUILD Konfigurationsdatei, aber ich habe Builds von verschiedenen Konfigurationen durchgeführt

msbuild /v:n /p:Configuration=Release "Capture.sln" 
msbuild /v:n /p:Configuration=ReleaseNoUploads "Capture.sln" 

I definiert die ReleaseNoUploads Konfiguration innerhalb von Visual Studio.

Hier ist, was ich für die (das ist Visual Studio 2005) zu tun hatte:

  • Öffnen Sie die Hilfsmittel: Optionen Menü, gehen Sie zu den Projekte und Lösungen: Allgemein Option, und überprüfen Zeige erweiterte Buildkonfigurationen
  • Von dort gehen die Körperbau: Konfiguration Manager-Menü
  • Im Dialog erscheint, klicken Sie auf die Schaltfläche Aktive Lösungskonfiguration Pulldown und klicken Sie auf , um eine neue Build-Konfiguration zu erstellen.

Andere Tipps

Sicher, können Sie so viele benutzerdefinierte Build-Konfigurationen haben, wie Sie definieren möchten. Sehen Sie diese ähnliche Frage, wie die Einrichtung aussehen könnte.

Wie bedingt eine app.config bereitstellen basierend auf Build-Konfiguration?

Beachten Sie, dass, wenn 'in Visual Studio', die $ (Konfiguration) und $ (Platform) wird immer von VS mit den Configuration Manager Sachen in den Dropdown-Listen an der Spitze gesetzt. Während, wenn Sie diese Werte mit msbuild von der Befehlszeile festlegen möchten, müssen Sie explizit in den Werten übergeben (wie in @ MarkBiek Antwort).

(Most VS Projektvorlagen wird ‚default in‘ einen Wert für die Konfiguration / Plattform, so dass Sie explizit die Befehlszeilen MSBuild ohne diese Werte Angabe verwenden können. Das ist gut, aber macht diese beiden nützlich / gemeinsame Eigenschaften erscheinen ein etwas mehr magische / komisch, als sie tatsächlich sind.)

Normalerweise, was ich tue Release- und Debug beide aus einem einzigen MSBuild-Skript bauen müssen, ist:

<PropertyGroup Condition="'$(Configuration)'==''">
  <Configuration>Debug;Release</Configuration>
</PropertyGroup>

Dieses Dann fügen Sie aber von MSBuild Geheimnis Sauce:

   <Target Name="configurations">
     <CreateItem Include="$(Configuration)">
       <Output TaskParameter="Include" ItemName="Configuration" />
     </CreateItem>
   </Target>

Und dann für jedes Ziel etwas tun, wie folgt aus:

  <Target Name="Compile" DependsOnTargets="configurations" Inputs="@(Configuration)" Outputs="target\%(Configuration.FileName)">
    <MSBuild Projects="@(MyProjects)" Targets="Build" Properties="Configuration=%(Configuration.Identity);WarningLevel=1" />
  </Target>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top