如何让我的应用程序读取应用程序配置而不是 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?的主要内容,如果未能解决你的问题,请参考以下文章