2013-04-25 3 views
7

Ich kann die App.Config-Datei nicht in die App Domain laden.Laden von app.config in die AppDomain

Ich verwende

[System.AppDomain]::CurrentDomain.SetData("APP_CONFIG_FILE", $config_path) 

von Powershell Calling .NET Assembly that uses App.config aber die App.Config Datei ist noch nicht geladen.

Ich habe auch versucht, den Cache wie in Using CurrentDomain.SetData("APP_CONFIG_FILE") doesn't work in PowerShell ISE beschrieben zurückgesetzt.

Hier ist mein Testskript:

$configFile = "{ActualPhysicalPath}\App.Config" 
gc $configFile 

Add-Type -AssemblyName System.Configuration 
[Configuration.ConfigurationManager].GetField("s_initState", "NonPublic, Static").SetValue($null, 0) 
[Configuration.ConfigurationManager].GetField("s_configSystem", "NonPublic, Static").SetValue($null, $null) 
([Configuration.ConfigurationManager].Assembly.GetTypes() | where {$_.FullName -eq "System.Configuration.ClientConfigPaths"})[0].GetField("s_current", "NonPublic, Static").SetValue($null, $null) 

[Configuration.ConfigurationManager]::ConnectionStrings[0].Name 
[System.AppDomain]::CurrentDomain.SetData("APP_CONFIG_FILE", $null) 
[Configuration.ConfigurationManager]::ConnectionStrings[0].Name 
[System.AppDomain]::CurrentDomain.SetData("APP_CONFIG_FILE", $configFile) 
[Configuration.ConfigurationManager]::ConnectionStrings[0].Name 

Ich bin immer die Verbindungszeichenfolgen in machine.config gespeichert bekommen, eher als die in der App.config.

Wie kann ich meine spezifische App.Config-Datei in die App-Domäne geladen bekommen?

+0

Haben Sie versucht, mit ConfigurationManager.OpenExeConfiguration-Methode? –

+0

Ich habe es gerade versucht und es funktioniert immer noch nicht –

+0

Ich missverstanden die Frage. Es tut uns leid. Können Sie die Konfigurationsdatei nicht in YOUR_APPLICATION_NAME.exe.config umbenennen und in den Anwendungsordner kopieren? Das sollte funktionieren. Die Anwendung lädt diese Datei. –

Antwort

9

Versuchen sie SetData Anweisung vor der Anweisung GetField bewegen.

Mit Powershell 5.0 auf 10 Windows die von the link you reference vorgesehenen Führung scheint zu funktionieren: Ich bin in der Lage, beide AppSettings abrufen und Connection.

+0

Ich habe keinen funktionierenden Arbeitsbereich, um das zu testen, aber wenn jemand bestätigen kann, dass das funktioniert, werde ich Ihnen die Antwort geben. Danke, dass du Zeit mit dieser wirklich alten Frage verbracht hast –

-1

Haben Sie die hier vorgestellte Lösung versucht: Change default app.config at runtime

Es scheint, irgendeine Art von Cache zu beschreiben, und dass mehr Arbeit lesen getan werden muss, um die geladenen Daten zu gewährleisten.

Der wichtige Teil der ersten Antwort lautet: "Es existiert eine Klasse ClientConfigPaths, die die Pfade zwischenspeichert. Daher wird sie auch nach dem Ändern des Pfades mit SetData nicht erneut gelesen, da bereits zwischengespeicherte Werte vorhanden sind auch ist diese zu entfernen,“