2012-11-16 11 views
5

Ich versuche, eine .NET 4.0 Montage in Powershell ISE zu verwenden, und versuchen, die Konfigurationsdatei zu ändern, die über verwendet wird:Mit CurrentDomain.SetData („APP_CONFIG_FILE“) funktioniert nicht in Powershell ISE

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

[Configuration.ConfigurationManager] :: ConnectionStrings.Count kehrt immer "1",
und "[Configuration.ConfigurationManager] :: Connection [0] .Name" immer wieder "LocalSqlServer", und dass Connectionname ist nicht in meinem ".Konfigurationsdatei.

Beachten Sie, dass das Ausführen des PowerShell-Skripts über eine PowerShell-Eingabeaufforderung wie erwartet funktioniert. Wenn ich es in PowerShell ISE ausführe, funktioniert es nicht wie erwartet.

Antwort

19

Es ist, weil der Pfad für Powershell ISE app.config bereits geladen wurde und gespeichert werden, damit der app.config Pfad ändert, wird danach keinen Unterschied machen: stackoverflow.com/q/6150644/222748

Hier ist ein Beispiel-Skript, das wird klar, der im Cache gespeicherten Pfad so wird es unter Powershell ISE arbeiten:

[System.AppDomain]::CurrentDomain.SetData("APP_CONFIG_FILE", $PathToConfig) 
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 
+0

Das hat für mich nicht für mich – Trent

+0

Das funktionierte arbeiten. Ich hatte auch das gleiche Problem mit normalen Shell sowie ISE. – rikkit

1

[0] arbeiten für mich auszuziehen.

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

Verwandte Themen