首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在用配置管理器加载app.config文件后,应用程序设置没有显示

在用配置管理器加载app.config文件后,应用程序设置没有显示
EN

Stack Overflow用户
提问于 2016-01-20 14:59:52
回答 3查看 2K关注 0票数 0

好的,我有一个配置文件,如下所示:

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
        <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
            <section name="MDCHartfordMVVM.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
        </sectionGroup>
    </configSections>
    <connectionStrings>
        <add name="MDCHartfordMVVM.Properties.Settings.DBConnection"
            connectionString="Data Source=.\sqlexpress;Initial Catalog=TPS;Persist Security Info=True;User ID=sa;Password=service#123"
            providerName="System.Data.SqlClient" />
    </connectionStrings>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
    </startup>
    <applicationSettings>
        <MDCHartfordMVVM.Properties.Settings>
            <setting name="OPCServer" serializeAs="String">
                <value>Kepware.KepserverEX.v5</value>
            </setting>
            <setting name="OPCGroup" serializeAs="String">
                <value>Group1</value>
            </setting>
            <setting name="OPCUpdateRate" serializeAs="String">
                <value>5000</value>
            </setting>
            <setting name="OPCDeadband" serializeAs="String">
                <value>0</value>
            </setting>
            <setting name="HeartBeat" serializeAs="String">
                <value>TPS.KSS.HeartBeat</value>
            </setting>
            <setting name="TLICNumber" serializeAs="String">
                <value>TPS.KSS.TLICNumber</value>
            </setting>
            <setting name="TruckIDNumber" serializeAs="String">
                <value>TPS.KSS.TruckIDNumber</value>
            </setting>
            <setting name="TruckCompany" serializeAs="String">
                <value>TPS.KSS.TruckCompany</value>
            </setting>
            <setting name="TruckWidth" serializeAs="String">
                <value>TPS.KSS.TruckWidth</value>
            </setting>
            <setting name="TruckLength" serializeAs="String">
                <value>TPS.KSS.TruckLength</value>
            </setting>
            <setting name="TruckDepth" serializeAs="String">
                <value>TPS.KSS.TruckDepth</value>
            </setting>
            <setting name="TruckVolume" serializeAs="String">
                <value>TPS.KSS.TruckVolume</value>
            </setting>
            <setting name="TruckTare" serializeAs="String">
                <value>TPS.KSS.TruckTare</value>
            </setting>
            <setting name="TruckMaxGross" serializeAs="String">
                <value>TPS.KSS.TruckMaxGross</value>
            </setting>
            <setting name="TruckType" serializeAs="String">
                <value>TPS.KSS.TruckType</value>
            </setting>
            <setting name="Mt_Pos1_Lev1" serializeAs="String">
                <value>TPS.KSS.Mt_Pos1_Lev1</value>
            </setting>
            <setting name="Mt_Pos1_Lev2" serializeAs="String">
                <value>TPS.KSS.Mt_Pos1_Lev2</value>
            </setting>
            <setting name="Mt_Pos1_Lev3" serializeAs="String">
                <value>TPS.KSS.Mt_Pos1_Lev3</value>
            </setting>
            <setting name="Mt_Pos2_Lev1" serializeAs="String">
                <value>TPS.KSS.Mt_Pos2_Lev1</value>
            </setting>
            <setting name="Mt_Pos2_Lev2" serializeAs="String">
                <value>TPS.KSS.Mt_Pos2_Lev2</value>
            </setting>
            <setting name="Mt_Pos2_Lev3" serializeAs="String">
                <value>TPS.KSS.Mt_Pos2_Lev3</value>
            </setting>
            <setting name="Mt_Pos3_Lev1" serializeAs="String">
                <value>TPS.KSS.Mt_Pos3_Lev1</value>
            </setting>
            <setting name="Mt_Pos3_Lev2" serializeAs="String">
                <value>TPS.KSS.Mt_Pos3_Lev2</value>
            </setting>
            <setting name="Mt_Pos3_Lev3" serializeAs="String">
                <value>TPS.KSS.Mt_Pos3_Lev3</value>
            </setting>
            <setting name="Fl_Pos1_Lev1" serializeAs="String">
                <value>TPS.KSS.Fl_Pos1_Lev1</value>
            </setting>
            <setting name="Fl_Pos1_Lev2" serializeAs="String">
                <value>TPS.KSS.Fl_Pos1_Lev2</value>
            </setting>
            <setting name="Fl_Pos1_Lev3" serializeAs="String">
                <value>TPS.KSS.Fl_Pos1_Lev3</value>
            </setting>
            <setting name="Fl_Pos2_Lev1" serializeAs="String">
                <value>TPS.KSS.Fl_Pos2_Lev1</value>
            </setting>
            <setting name="Fl_Pos2_Lev2" serializeAs="String">
                <value>TPS.KSS.Fl_Pos2_Lev2</value>
            </setting>
            <setting name="Fl_Pos2_Lev3" serializeAs="String">
                <value>TPS.KSS.Fl_Pos2_Lev3</value>
            </setting>
            <setting name="Fl_Pos3_Lev1" serializeAs="String">
                <value>TPS.KSS.Fl_Pos3_Lev1</value>
            </setting>
            <setting name="Fl_Pos3_Lev2" serializeAs="String">
                <value>TPS.KSS.Fl_Pos3_Lev2</value>
            </setting>
            <setting name="Fl_Pos3_Lev3" serializeAs="String">
                <value>TPS.KSS.Fl_Pos3_Lev3</value>
            </setting>
            <setting name="TruckLoadPermissive" serializeAs="String">
                <value>TPS.KSS.TrkLoadPermissive</value>
            </setting>
            <setting name="TruckPositionTarget" serializeAs="String">
                <value>TPS.KSS.TrkPositionTarget</value>
            </setting>
            <setting name="TruckLoadPermissivePlcAsh" serializeAs="String">
                <value>TPS.KSS.TrkLoadPermissivePlcAsh</value>
            </setting>
            <setting name="LoadComplete_PlcAsh" serializeAs="String">
                <value>TPS.KSS.LoadComplete_PlcAsh</value>
            </setting>
            <setting name="TruckPresent" serializeAs="String">
                <value>TPS.KSS.TrkPresent</value>
            </setting>
            <setting name="TruckLoading" serializeAs="String">
                <value>TPS.KSS.TruckLoading</value>
            </setting>
            <setting name="TruckAmountLoaded" serializeAs="String">
                <value>TPS.KSS.TrkAmountLoaded</value>
            </setting>
            <setting name="PEPos1_1" serializeAs="String">
                <value>TPS.KSS.PEPos1_1</value>
            </setting>
            <setting name="PEPos2_1" serializeAs="String">
                <value>TPS.KSS.PEPos2_1</value>
            </setting>
            <setting name="PEPos3_1" serializeAs="String">
                <value>TPS.KSS.PEPos3_1</value>
            </setting>
            <setting name="Cur_Chute1_Lev" serializeAs="String">
                <value>TPS.KSS.Cur_Chute1_Lev</value>
            </setting>
            <setting name="Cur_Chute2_Lev" serializeAs="String">
                <value>TPS.KSS.Cur_Chute2_Lev</value>
            </setting>
            <setting name="Cur_Chute3_Lev" serializeAs="String">
                <value>TPS.KSS.Cur_Chute3_Lev</value>
            </setting>
            <setting name="PEPos1_2" serializeAs="String">
                <value>TPS.KSS.PEPos1_2</value>
            </setting>
            <setting name="PEPos2_2" serializeAs="String">
                <value>TPS.KSS.PEPos2_2</value>
            </setting>
            <setting name="PEPos3_2" serializeAs="String">
                <value>TPS.KSS.PEPos3_2</value>
            </setting>
            <setting name="ExitDoor" serializeAs="String">
                <value>TPS.KSS.ExitDoor</value>
            </setting>
            <setting name="EntryDoor" serializeAs="String">
                <value>TPS.KSS.EntryDoor</value>
            </setting>
            <setting name="PEExitDoor" serializeAs="String">
                <value>TPS.KSS.PEExitDoor</value>
            </setting>
            <setting name="PEEntryDoor" serializeAs="String">
                <value>TPS.KSS.PEEntryDoor</value>
            </setting>
            <setting name="PEShortTruck" serializeAs="String">
                <value>TPS.KSS.PEShortTruck</value>
            </setting>
        </MDCHartfordMVVM.Properties.Settings>
    </applicationSettings>
</configuration>

我想要创建另一个可以加载和修改这个文件的应用程序。我使用以下方法打开该文件:

代码语言:javascript
复制
config = ConfigurationManager.OpenExeConfiguration(filepath);

其中config是配置对象,filepath是我希望修改的配置文件的filepath。

但是,如果我设置了一个断点,并在配置分配后查看代码,那么appSettings部分中没有设置,这似乎是可行的。

有人知道为什么会这样吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-01-20 16:41:54

我把你的配置文件写到我的临时文件夹中作为test.config。可以使用以下方法更改所需设置:

代码语言:javascript
复制
var config = ConfigurationManager.OpenMappedExeConfiguration(new ExeConfigurationFileMap() { ExeConfigFilename = @"c:\temp\test.config" }, ConfigurationUserLevel.None);
var clientSettingsSection = (ClientSettingsSection)config.GetSection("applicationSettings/MDCHartfordMVVM.Properties.Settings");

clientSettingsSection.Settings.Get("EntryDoor").Value.ValueXml.ChildNodes[0].Value = "NewValue";

config.SaveAs(@"c:\\temp\\configuration.config",ConfigurationSaveMode.Modified, true);

这里有一些有趣的地方。我使用"applicationSettings/MDCHartfordMVVM.Properties.Settings".使用OpenMappedExeConfiguration获取该部分。在您的情况下,这将得到一个ClientSettingsSection。使用此ClientSettingsSection,我们可以访问列表中定义的设置。

我们可以通过更改基础xml来更改设置。我相信还有另外一种方法可以做到,但我不想再深入研究了。

最后,我使用ConfigurationSaveMode.Modified和true参数保存设置。这样,我就可以在新的配置文件中看到已更改的值。

但是一些默认的空元素也是使用这个添加的。也许有人知道另一种方法。这就是我能想到的。

票数 1
EN

Stack Overflow用户

发布于 2016-01-20 15:09:29

这是正确的行为,因为您没有一个appSettings节在您的配置。您确实有一个ApplicationSettings部分。如果你纠正错误就行了。

票数 0
EN

Stack Overflow用户

发布于 2016-01-20 15:37:03

配置文件中的appSettings部分应该如下所示

代码语言:javascript
复制
<appSettings>
    <add key="Setting1" value="some value"/>
    <add key="Setting2" value="some other value"/>
</appSettings>

“filepath”变量应该是.exe的路径,而不是配置文件本身。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34903416

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档