我完全清楚这个问题已被多次询问,但我已经搜索过互联网并且还没有找到解决方案。
我使用scriptcs运行以下.csx文件(只是为了测试并确保ConfigurationManager正常工作):
#load "C:\Tickets\LoadConfig.csx"
using System;
using System.Configuration;
Console.WriteLine(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile);
Console.WriteLine(ConfigurationManager.AppSettings.AllKeys);
这是LoadConfig.csx,我发现它在here SO帖子上,多个人说他们有很好的结果。
#r "System.Configuration"
using System;
using System.IO;
using System.Linq;
var paths = new[] { Path.Combine(Environment.CurrentDirectory, "web.config"), Path.Combine(Environment.CurrentDirectory, "app.config") };
var configPath = paths.FirstOrDefault(p => File.Exists(p));
if (configPath != null)
{
AppDomain.CurrentDomain.SetData("APP_CONFIG_FILE", configPath);
var t = typeof(System.Configuration.ConfigurationManager);
var f = t.GetField("s_initState", System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.NonPublic);
f.SetValue(null, 0);
Console.Write(configPath); // Here to make sure it found the app.config file properly
}
这里也是app.config:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="testKey" value="testValue" />
</appSettings>
</configuration>
但是,当我运行第一个代码块时,它告诉我当前配置文件是app.config,并且AllKeys属性是System.String[]
。我确保所有文件都在同一个文件夹中,并且app.config也正确写入。我现在只是卡住了,不确定是否还有其他解决方案,或者我是否完全忽视了某些问题。如果有人有任何建议,我们非常感谢,谢谢。
答案 0 :(得分:0)
这是因为您直接打印ConfigurationManager.AppSettings.AllKeys
,这不是字符串,因此它只打印对象类型。
您需要使用
之类的东西迭代键var keys = ConfigurationManager.AppSettings.AllKeys;
foreach (var key in keys)
{
Console.WriteLine(key);
}
Console.ReadLine();
或
ConfigurationManager.AppSettings.AllKeys.ToList().ForEach(k => Console.WriteLine(k));
输出:
密押