Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 如何共享App.config?_.net_Visual Studio - Fatal编程技术网

.net 如何共享App.config?

.net 如何共享App.config?,.net,visual-studio,.net,Visual Studio,如何在visual studio解决方案中的多个项目之间共享/链接App.config或Web.config?在从visual studio的解决方案资源管理器获得的添加现有项对话框中,可以将指向磁盘上另一个文件的链接添加到项目中。为此,您必须单击添加按钮右侧的向下箭头,然后选择添加为链接。首先,请记住,App.config或web.config对于“流程”中使用的任何项目中运行的所有代码都是可见的由解决方案中的启动项目建立。。。i、 e.如果您的解决方案有一个控制台应用程序和5个类库,或一个W

如何在visual studio解决方案中的多个项目之间共享/链接App.config或Web.config?

在从visual studio的解决方案资源管理器获得的添加现有项对话框中,可以将指向磁盘上另一个文件的链接添加到项目中。为此,您必须单击添加按钮右侧的向下箭头,然后选择添加为链接。首先,请记住,App.config或web.config对于“流程”中使用的任何项目中运行的所有代码都是可见的由解决方案中的启动项目建立。。。i、 e.如果您的解决方案有一个控制台应用程序和5个类库,或一个WinForms应用程序和4个类库,或一个WIndows服务和3个类库,或一个控制台应用程序用作启动项目,另一个控制台应用程序用作类库,则您没有问题,配置app.config和所有引用的文件,在所有项目中都可见

其次,如果您的解决方案中运行两个或多个独立的可执行进程(如作为服务器的windows服务和winforms客户端),那么如果您希望它们共享特定的配置设置,您可以将这些设置放到machine.config文件中,尽管您在这样做时应该小心。。一些企业服务器团队对此表示不满

来自微软:

使用
元素的fileattribute指定 将定义公共
元素的外部文件

外部文件将具有与app.config相同的架构 文件,但根节点必须是
而不是

创建公共配置文件:

  • 在“文件”菜单上,指向“新建”,然后单击“文件”
  • 在“新建文件”对话框中,执行以下操作:

    a。在类别窗格中,选择常规。
    B在模板窗格中,选择XML文件。
    C单击“打开”按钮创建新的通用配置设置文件

  • 添加新的
    元素

  • 使用
    元素在
    节点中添加所需的尽可能多的常用配置设置,方法与使用相同 任何正常的app.config文件

  • 保存配置文件

  • 指定每个项目中的通用配置文件

  • 打开每个客户端项目的app.config文件

  • 导航到
    节点中的
    元素。如果某个元素不存在,请添加一个新元素

  • 将新属性文件添加到
    元素,并指定公共配置文件的相对路径作为其值。
    客户端项目现在将能够访问公共配置 设置

  • 示例

    以下示例显示如何在外部文件中定义公共配置设置

            <?xml version="1.0" encoding="utf-8" ?>
            <appSettings>
                <add key="commonSetting1" value="MyApplication1" />
                <add key="commonSetting2" value="MySetting" />
            </appSettings>
    
    
    
    以下示例显示如何在项目的app.config文件中指定公共配置文件的路径

            <?xml version="1.0" encoding="utf-8" ?>
            <appSettings file=”c:\commonSettings.config”>
                <add key="myAppSpecificSetting" value="Setting1" />
            </appSettings> 
    
    
    
    如示例所示,客户端项目的app.config文件可以 中指定的其他设置
    元素除了指向公共 配置文件。如果多次指定相同的设置, 使用最后指定的值。如果在中指定了相同的设置 公共配置文件和客户端项目app.config 文件,则使用公共配置文件中指定的值


    根据nawfal的职位, 如果要使用ConfigurationManager操作appSettings,请使用configSource属性:

    <?xml version="1.0" encoding="utf-8" ?>
    <appSettings configSource=”c:\commonSettings.config”>
        <add key="myAppSpecificSetting" value="Setting1" />
    </appSettings>
    
    
    
    OK,我将其添加为链接,现在如何从第二个项目访问链接的应用程序配置的各种值?@nawfal链接的
    app.config
    文件以与项目目录中相同的方式复制到输出文件夹。从那里,您可以通过类访问其内容。@EnricoCampidoglio,但区别在于在正常情况下,您只需调用设置值,如ConfigurationManager.AppSettings[key]等,而无需任何硬编码。但在这里,我需要硬编码配置文件名,然后使用OpenMapConfiguration,对吗?问题在于硬编码。我不喜欢它。是否有其他解决方案?请注意,此方法在编译时不会将app.config文件复制到obj文件夹,而bindingredirects在编译时将不起作用,这可能会导致某些程序集可能从GAC/Path解析,但版本不正确。以防万一。已经有一些很好的答案和有效的解决方案。是的,但在我的情况下,我已经有了一个解决方案,如Enrico C.所述。但我在程序运行时更改appSettings时遇到了问题(这是一个包含GUI项目和windows服务项目的解决方案,这些项目共享相同的appSettings)。我只是想为设置中需要的运行时更改添加一个答案。