Hallo,
In Abhängigkeit davon, auf welchen Server/Datenbank ich das Projekt veröffentliche (Entwicklung, Test, Live,...) muss ich vor dem Build-Vorgang ein paar Dateien kopieren. Ich habe daher in die Projektdatei folgendes Target eingefügt:
<Target Name="BeforeBuild">
<Message Text="MyVariable: $(MyVariable)" Importance="high" />
<Message Text="Configuration: $(Configuration)" Importance="high" />
<Message Text="Database: $(DatabaseName)" Importance="high" />
<Copy Condition=" '$(MyVariable)' == 'Wert1' " SourceFiles="$(SourceFolder)\File1.txt" DestinationFiles="$(DestFolder)\File.txt" />
<Copy Condition=" '$(MyVariable)' == 'Wert2' " SourceFiles="$(SourceFolder)\File2.txt" DestinationFiles="$(DestFolder)\File.txt" />
</Target>
Natürlich habe ich in den Projekteigenschaften $(MyVariable) und die beiden Pfadvariablen sinnvoll gefüllt. In der Ausgabe erhalte ich aber nur
MyVariable:
Configuration: Debug
Database:
Das heißt für mich: Die von mir definierte Variable ist leer, die Systemvariable $(Configuration) enthält einen definierten Wert und die Systemvariable $(DatabaseName) ist leer.
Zu einem späteren Zeitpunkt in der Ausführung des Skriptes erhalte ich bei allen Ausgaben die erwarteten Werte.
Meine Frage ist also: Wann und wie belegt MSBuild die SQLCMD-Variablen?
Ich hoffe, da kann mir jemand weiterhelfen.
Vielen Dank im Voraus,
Wolfgang