Frage

Gibt es trotzdem zu verwenden Compiler Konstanten in Buildereignisse in Visual Studio - VB.NET? (Vor allem in Post-Build-Ereignissen)

Szenario

Wenn TEST_EDITION=TRUE definiert Ich möchte eine ausführbare Datei während der Post-Build-Ereignis ausgeführt werden soll, so, wenn es FALSE dann werde ich etwas anderes ausgeführt werden.

Dies kann für die Erstellung von verschiedenen Installationsprogrammen für verschiedene Ausgaben verwendet werden.

P. S. Bevor jemand schlägt vor: Nein, ich will nicht, Nant, msbuild oder so ähnlich

verwenden,
War es hilfreich?

Lösung

Ja, der $ (DefineConstants) Makro ist verfügbar und kann in einem Buildereignis getestet werden. Zum Beispiel Project + Compile, Advanced Kompilieroptionen, Benutzerdefinierte Konstanten = können Testen wie folgt getestet werden:

if /i "$(DefineConstants)" NEQ "TEST" goto skiptest
echo Setting up for test environment
:skiptest

kompliziertere benutzerdefinierte Konstanten wie Test = TRUE oder Verbindung Konstanten müssen anders analysiert werden. Zwar habe ich schnell, um herauszufinden, wie hoch die schrecklichen verwenden FOR-Befehl.

Andere Tipps

Haben Sie die MsBuild PostEvents versucht? Dies ist ein Auszug aus einem CSPROJ ... aber das gleiche gilt für vbproj Dateien

  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
       Other similar extension points exist, see Microsoft.Common.targets.
  <Target Name="BeforeBuild">
  </Target>
  <Target Name="AfterBuild">
  </Target>
  -->
  <Target Name="BeforeBuild">
  </Target>
  <Target Name="AfterBuild">
    <Copy SourceFiles="$(OutputPath)$(AssemblyName).dll" DestinationFolder="$(BinariesFolder)" ContinueOnError="true" />
  </Target>

Sie können es verwenden, um mit dem TaskExec Ziel, die erlaubt Sie eine Batchdatei oder eine ausführbare Datei auszuführen.

<Target Name="DoSomething">
    <Exec Command="D:\DoSomething.exe"/>
</Target>

Nicht sicher Visual Basic-Syntax, aber der folgende Trick kann durch C ++ verwendet werden: die Datei global_inc.bat liest wie:

SET PARAMETER=TRUE

Dies könnte Eingabe durch eine Batch-Skript sein, die in Post-Build-Ereignisse aufgerufen wurden. Der C ++ Code verwendet, um die Datei wie folgt:

#define PARAMETER const int parameter
#define SET /**/
#include "global_inc.bat"
;
#undef PARAMETER

Der Schritt postbuild sah wie folgt aus:

call global_inc.bat
if "%PARAMETER%" == "TRUE" echo True

Eine weitere Möglichkeit für den vorkompilierte Schritt wäre, zu erzeugt eine .vb Datei, sowie eine Konfigurationsdatei in postbuild Schritt verwendet wird.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top