15

App.Config ファイルを取得してアプリ ドメインに読み込むことができません。

私は使用しています

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

PowershellからApp.config を使用する .NET アセンブリを呼び出していますが、App.Config ファイルはまだ読み込まれていません。

Using CurrentDomain.SetData("APP_CONFIG_FILE") does not work in PowerShell ISE で説明されているように、キャッシュのリセットも試みました。

ここに私のテストスクリプトがあります:

$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

App.config ではなく、machine.config に保存されている接続文字列を常に取得しています。

特定の App.Config ファイルをアプリ ドメインにロードするにはどうすればよいですか?

4

2 に答える 2

18

GetFieldステートメントの前にSetDataステートメントを移動してみてください。

Windows 10 の PowerShell 5.0 では、参照するリンクによって提供されるガイダンスが機能しているようです: AppSettingsConnectionStringsの両方を取得できます。

Add-Type -AssemblyName System.Configuration

# Set this to the full path of your App.config
$configPath = "C:\Full\Path\To\App.config"

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

[System.Configuration.ConfigurationManager]::AppSettings
[System.Configuration.ConfigurationManager]::ConnectionStrings
于 2015-10-22T20:30:46.187 に答える