Ich bin auf diese Seite gekommen, weil meine Befehlszeilenparameter vertrauliche Informationen enthalten und diese nicht im Code-Repository gespeichert werden sollen. Ich habe Systemumgebungsvariablen verwendet, um die Werte zu speichern, die auf jedem Build- oder Entwicklungscomputer je nach Bedarf für jeden Zweck festgelegt werden konnten. Die Erweiterung von Umgebungsvariablen funktioniert hervorragend in Shell-Stapelprozessen, nicht jedoch in Visual Studio.
Startoptionen für Visual Studio:
Visual Studio würde jedoch nicht den Variablenwert zurückgeben, sondern den Namen der Variablen.
Beispiel für ein Problem:
Meine endgültige Lösung, nachdem ich mehrere hier auf SO ausprobiert hatte, bestand darin, eine schnelle Suche nach der Umgebungsvariablen in meinem Argumentprozessor zu schreiben. Ich habe den eingehenden Variablenwert auf% überprüft. Wenn er gefunden wurde, suchen Sie die Umgebungsvariable und ersetzen Sie den Wert. Dies funktioniert in Visual Studio und in meiner Build-Umgebung.
foreach (string thisParameter in args)
{
if (thisParameter.Contains("="))
{
string parameter = thisParameter.Substring(0, thisParameter.IndexOf("="));
string value = thisParameter.Substring(thisParameter.IndexOf("=") + 1);
if (value.Contains("%"))
{ //Workaround for VS not expanding variables in debug
value = Environment.GetEnvironmentVariable(value.Replace("%", ""));
}
Auf diese Weise kann ich dieselbe Syntax in meinen Beispiel-Batchdateien und beim Debuggen mit Visual Studio verwenden. Keine Kontoinformationen oder URLs in GIT gespeichert.
Beispiel Verwendung im Stapel