Sie können mit meiner Bibliothek Folgendes erreichen Ausgedehnte . Auch auf nuget verfügbar aquí .
Sie wurde für diesen primären Anwendungsfall entwickelt.
Moderates Beispiel (mit AppSettings als Standardquelle für die Token-Erweiterung)
In app.config:
<configuration>
<appSettings>
<add key="Domain" value="mycompany.com"/>
<add key="ServerName" value="db01.{Domain}"/>
</appSettings>
<connectionStrings>
<add name="Default" connectionString="server={ServerName};uid=uid;pwd=pwd;Initial Catalog=master;" provider="System.Data.SqlClient" />
</connectionStrings>
</configuration>
Verwenden Sie die .Expand() Erweiterungsmethode auf die zu erweiternde Zeichenkette:
var connectionString = ConfigurationManager.ConnectionStrings["Default"].ConnectionString;
connectionString.Expand() // returns "server=db01.mycompany.com;uid=uid;pwd=pwd;Initial Catalog=master;"
o
Verwenden Sie den Dynamic ConfigurationManager Wrapper "Config" wie folgt (expliziter Aufruf von Expand() nicht erforderlich):
var serverName = Config.AppSettings.ServerName;
// returns "db01.mycompany.com"
var connectionString = Config.ConnectionStrings.Default;
// returns "server=db01.mycompany.com;uid=uid;pwd=pwd;Initial Catalog=master;"
Erweitertes Beispiel 1 (Verwendung von AppSettings als Standardquelle für die Token-Erweiterung)
In app.config:
<configuration>
<appSettings>
<add key="Environment" value="dev"/>
<add key="Domain" value="mycompany.com"/>
<add key="UserId" value="uid"/>
<add key="Password" value="pwd"/>
<add key="ServerName" value="db01-{Environment}.{Domain}"/>
<add key="ReportPath" value="\\{ServerName}\SomeFileShare"/>
</appSettings>
<connectionStrings>
<add name="Default" connectionString="server={ServerName};uid={UserId};pwd={Password};Initial Catalog=master;" provider="System.Data.SqlClient" />
</connectionStrings>
</configuration>
Verwenden Sie die Erweiterungsmethode .Expand() für die zu erweiternde Zeichenfolge:
var connectionString = ConfigurationManager.ConnectionStrings["Default"].ConnectionString;
connectionString.Expand() // returns "server=db01-dev.mycompany.com;uid=uid;pwd=pwd;Initial Catalog=master;"
1 Stimmen
Ich glaube, er meint damit die Definition von Variablen, die in appSettings-Schlüsseln direkt in den Konfigurationsdateien verwendet werden sollen.
1 Stimmen
Ich habe auch die Verwendung der XML <!ENTITY>-Deklaration ausprobiert, aber sie wird aufgrund der Art und Weise, wie MS web.config-Dateien behandelt, nicht unterstützt.
0 Stimmen
Vielen Dank für Ihre Bemühungen. Ich ziehe es vor, keinen Code zu ändern. Der Code enthält bereits eine Anweisung, die lautet: string dir2=ConfigurationManager.AppSettings["Dir2"]. Ich möchte nur die app.config bereinigen, in der jetzt value=" steht. D:\blahdir\Dir2 " anstelle von value="[MyBaseDir] \Dir2 "