我正在开发一个C#类库,它需要能够从web.config
或app.config
文件中读取设置(取决于DLL是从ASP.NET Web应用程序还是Windows窗体应用程序引用).
我发现了
ConfigurationSettings.AppSettings.Get("MySetting")
Run Code Online (Sandbox Code Playgroud)
但是该代码已被Microsoft标记为已弃用.
我读过我应该使用的:
ConfigurationManager.AppSettings["MySetting"]
Run Code Online (Sandbox Code Playgroud)
但是,System.Configuration.ConfigurationManager
该类似乎不能从C#类库项目中获得.
有谁知道最好的方法是什么?
好吧,我知道有很多问题,但它们都来自很久以前.
所以.我知道这是可能的,因为地图应用程序可以做到这一点.
在地图应用程序中,如果我关闭此应用程序的本地化,它会向我发送一条消息,如果我按好,"设置应用程序"将打开.我的问题是,这怎么可能?如何从我自己的应用程序中打开"设置应用程序"?
基本上我需要做同样的事情,如果用户关闭我的应用程序的位置,那么我会给他一条消息,说明会打开"设置应用程序"
我无法访问配置文件中的值.
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
var clientsFilePath = config.AppSettings.Settings["ClientsFilePath"].Value;
// the second line gets a NullReferenceException
Run Code Online (Sandbox Code Playgroud)
.config文件:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<!-- ... -->
<add key="ClientsFilePath" value="filepath"/>
<!-- ... -->
</appSettings>
</configuration>
Run Code Online (Sandbox Code Playgroud)
你有什么建议我该怎么办?
如何检查应用程序设置是否可用?
即app.config
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key ="someKey" value="someValue"/>
</appSettings>
</configuration>
Run Code Online (Sandbox Code Playgroud)
并在代码文件中
if (ConfigurationManager.AppSettings.ContainsKey("someKey"))
{
// Do Something
}else{
// Do Something Else
}
Run Code Online (Sandbox Code Playgroud) 我需要一个XML可序列化的字典.实际上,我现在有两个完全不同的程序需要一个.我很惊讶地看到.NET没有.我在其他地方问了这个问题并得到了讽刺的回应.我不明白为什么这是一个愚蠢的问题.
考虑到各种.NET特性对XML序列化的依赖性,有人可以启发我,为什么没有XML可序列化的字典.希望你也可以解释为什么有些人认为这是一个愚蠢的问题.我想我必须遗漏一些基本的东西,我希望你能填补空白.
这可能听起来太琐事了,而且我做了与文章中建议的相同的事情,但它没有按预期工作.希望有人能指出我正确的方向.
我想保存每个AppSettings的用户设置.
一旦Winform关闭,我触发:
conf.Configuration config =
ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
if (ConfigurationManager.AppSettings["IntegrateWithPerforce"] != null)
ConfigurationManager.AppSettings["IntegrateWithPerforce"] =
e.Payload.IntegrateCheckBox.ToString();
else
config.AppSettings.Settings.Add("IntegrateWithPerforce",
e.Payload.IntegrateCheckBox.ToString());
config.Save(ConfigurationSaveMode.Modified);
Run Code Online (Sandbox Code Playgroud)
因此,当条目第一次不存在时,它只会创建它,否则它将修改现有条目.然而,这并不节省.
1)我做错了什么?
2)我希望在哪里再次保存应用程序设置的用户设置?是在Debug文件夹中还是在C:\ Documents and Settings\USERNAME\Local Settings\Application Data文件夹中?
我实际上处于.NET相关的学习阶段,我正在探索如何保存应用程序.我最后编写了自己的类,将设置保存在XML文件中,然后我发现.NET本身支持保存应用程序设置.
但我找到了两种方法.当我在Visual Studio 2008中打开添加新项目对话框时,它提供了创建设置文件(.settings)或配置文件(.config)的选项.两者之间的区别是什么,应该在什么情况下使用它们?
我的问题:
我的iPhone应用程序如何告诉iOS,用户确实在应用程序首选项中选择了一种语言,这与一般设置中设置的语言不同?
同一问题的其他表述:
我如何告诉系统,不NSLocalizedString (@"text", @"comment");
应该访问系统范围内选定的语言,而是应用程序选择的语言?
背景,例如:
请以这种情况为例:德国移民的儿子住在法国东北部,毗邻卢森堡和德国.他的母语是法语,因此他确实将iPhone的用户界面语言设置为法语(设置 - >常规 - >国际 - >语言 - >Français).但由于他的文化背景以及他所居住的地区是双语的,他也会说德语.但他不会说十个英语单词.在iPhone(以及iPad)上,他没有机会选择第二语言,因此手机只知道他会说法语.它不了解其他语言的用户技能.
现在来了我的应用程序:我用英语和德语开发了它(德语是我的母语,英语是IT的标准语言).我根据多语言iOS应用程序的所有规则和最佳实践进行了开发.我的应用程序的"第一"语言(默认语言)是英语.
这意味着:
如果有人在他的"设置"中选择了英语或德语,则应用程序用户界面将自动使用所选语言.用户甚至不会注意到还有其他语言可用.
但如果他在常规设置中选择了任何其他语言(如中文,波兰语或法语),他将获得应用程序默认语言,在我的例子中,它是英语.但对于我的法德朋友来说,这不是最好的选择.他想使用现有的德语版本,但似乎没有办法让用户选择这个版本.
添加法语翻译可以解决我们法国 - 德国朋友的问题,但对于说其他两种语言(如意大利语和德语)的人不会,我不能用这个星球上所有语言支持我的应用程序.将默认语言设置为德语也不是最佳选择,因为对于说法语(母语)和英语(作为第二语言)的人来说,这会引起同样的问题.
所以我认为我的应用程序必须能够手动选择与预选语言不同的语言.将语言选择添加到应用程序设置面板不是问题.但是,我如何告诉系统,不NSLocalizedString (@"text", @"comment");
应该访问系统范围内选定的语言,而应该使用应用内选择的语言?
我已经在我appsettings.json
的数据库连接字符串,webapi位置等内容中定义了一些值,这些值对于开发,登台和实时环境是不同的.
有没有办法有多个appsettings.json
文件(如appsettings.live.json
,等等),并让asp.net应用程序'知道'根据它运行的构建配置使用哪一个?
appsettings ×10
.net ×5
c# ×5
ios ×2
settings ×2
asp.net-core ×1
binding ×1
dictionary ×1
iphone ×1
localization ×1
objective-c ×1
selection ×1
wpf ×1