如何让我的应用程序读取应用程序配置而不是 machine.config?

Posted

技术标签:

【中文标题】如何让我的应用程序读取应用程序配置而不是 machine.config?【英文标题】:how do I make my application read the application config instead of machine.config? 【发布时间】:2012-01-06 18:40:36 【问题描述】:

我在 c# 中创建的应用程序中添加了一个词,该应用程序正在访问 Web 服务,如果安装在 Program Files 文件夹之外,则可以正常工作。奇怪的是,当我在 Program Files 文件夹中安装它时,客户端无法读取 [application].dll.config 中的配置并引发如下错误:

“在 ServiceModel 客户端配置部分中找不到引用合同 [..] 的默认端点元素。这可能是因为找不到您的应用程序的配置文件,或者因为在客户端元素。”

我已经阅读了这篇文章,但它似乎并没有解决我的问题。 Could not find default endpoint element

顺便说一句,我使用的是 windows7,还没有测试到其他操作系统。

更新: 阅读上面的链接后,我尝试将配置移动到 machine.config 并且它可以工作,但是

【问题讨论】:

【参考方案1】:

如果您使用的是 VSTO 4 SP1,那么您可能会遇到此博客中描述的问题: http://msdnrss.thecoderblogs.com/2011/06/vsto-4-0-sp1-will-cause-a-vsto-addin-to-not-find-its-config-file/ 解决方案是从以下位置更改 Office 插件的注册表值:

Manifest=”C:\Program Files\<Path>\WordAddIn.vsto|vstolocal”  

到:

Manifest=”file:///C:\Program Files\<Path>\WordAddIn.vsto|vstolocal“ 

【讨论】:

解决了我的 VSTO 4 问题。非常感谢! 哇!也为我工作!这花了我几个小时...... uff【参考方案2】:

机器 .config 文件指定特定机器的全局设置 - 因此您所做的任何更改都可能影响机器上的所有其他应用程序。

应用程序配置包含应用程序特定设置,因此您的应用程序设置确实应该在其中。

当您构建应用程序并将其部署到 Program Files 时,应用程序配置是否与它一起复制?您是否设置了“复制到输出目录”属性?

【讨论】:

【参考方案3】:

如果您的 library.dll 是从应用程序 app.exe 调用的,您将需要 app.exe.config,而不是 library.dll.config。

【讨论】:

以上是关于如何让我的应用程序读取应用程序配置而不是 machine.config?的主要内容,如果未能解决你的问题,请参考以下文章

如何让 Eclipse 读取 UTF-8 中的捆绑属性?

如何让我的变量作为变量而不是对象的属性工作?

如何让我的列表读取某些值?

如何让我的数据表导出源数据,而不是生成的数据?

如何让我的 Amazon Redshift UDF 接收字符串而不是列表?

使用 XSLT 如何让我的输出重复而不是只返回第一个实例?