Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Hierarchische Daten werden als : Ebenentrennzeichen dargestellt. Bei Umgebungsvariablen wird das :-Zeichen jedoch zu __ normalisiert, da letzteres auf allen Plattformen unterstützt wird. Diese Änderung wirkt sich darauf aus, wie normalisierte und nicht normalisierte Präfixe und Schlüssel verglichen werden. Insbesondere können Sie jetzt Umgebungsvariablen hinzufügen, indem Sie ein Präfix angeben, das entweder : oder __ als Trennzeichen enthält. Beide Syntaxen entsprechen allen Umgebungsvariablen mit einem passenden Präfix, gefolgt von einem : oder __. Einige Umgebungsvariablen, die theoretisch nicht mit dem Filter übereinstimmen, stimmen möglicherweise jetzt mit dem Filter überein.
Eingeführte Version
.NET 7 Preview 4
Vorheriges Verhalten
Zuvor wurde der folgende Code gedruckt False:
using Microsoft.Extensions.Configuration;
const string myValue = "value1";
Environment.SetEnvironmentVariable("MY_PREFIX__ConfigKey", myValue);
IConfiguration config = new ConfigurationBuilder()
.AddEnvironmentVariables(prefix: "MY_PREFIX__")
.Build();
var loadedValue = config.GetValue<string?>("ConfigKey", null);
Console.WriteLine(String.Equals(myValue, loadedValue));
// False
Damit die MY_PREFIX__ConfigKey Umgebungsvariable der Konfiguration hinzugefügt werden kann, müssen Sie Umgebungsvariablen mithilfe eines Trennzeichens : statt __ hinzufügen.
using Microsoft.Extensions.Configuration;
const string myValue = "value1";
Environment.SetEnvironmentVariable("MY_PREFIX__ConfigKey", myValue);
IConfiguration config = new ConfigurationBuilder()
.AddEnvironmentVariables(prefix: "MY_PREFIX:")
.Build();
var loadedValue = config.GetValue<string?>("ConfigKey", null);
Console.WriteLine(String.Equals(myValue, loadedValue));
// True
Neues Verhalten
Ab .NET 7 gibt der folgende Code True aus:
using Microsoft.Extensions.Configuration;
const string myValue = "value1";
Environment.SetEnvironmentVariable("MY_PREFIX__ConfigKey", myValue);
IConfiguration config = new ConfigurationBuilder()
.AddEnvironmentVariables(prefix: "MY_PREFIX__")
.Build();
var loadedValue = config.GetValue<string?>("ConfigKey", null);
Console.WriteLine(String.Equals(myValue, loadedValue));
// True
Art der einschneidenden Änderung
Diese Änderung kann sich auf die binäre Kompatibilität auswirken.
Grund für Änderung
Diese Änderung wurde vorgenommen, um eine unbeabsichtigte Verhaltensänderung für die Normalisierung von Präfixfiltern für Umgebungsvariablen in .NET 6 zu beheben. Das neue Verhalten entspricht dem .NET 5-Verhalten.
Empfohlene Aktion
Die meisten Entwickler werden von dieser Änderung nicht betroffen sein, da es zuvor fehlerhaftes Verhalten korrigiert. Im unwahrscheinlichen Fall, dass Sie sich darauf verlassen haben, dass ein Präfix, das enthält __ , nicht mit einer Umgebungsvariable übereinstimmt, die enthält __, erwägen Sie, die Präfixe dieser Variablen zu ändern.