【问题标题】:App.Config Resolution FailureApp.Config 解析失败
【发布时间】:2012-10-23 02:33:16
【问题描述】:

我有一个遇到奇怪问题的 C# WPF 应用程序。该应用程序使用使用 app.config 配置的 MS 企业库(日志记录)。因此,我部署的文件是:

(名称已更改,文件名长度正确)

XXXXXXXXXXXX.EXE

XXXXXXXXXXXX.EXE.CONFIG

通常这工作得很好。然而,在一个奇怪的情况下,该应用程序是由另一个程序启动的,该程序根据它的短名称 (XXXXXX~X.EXE) 调用 EXE。 EXE 启动,然后继续查找不存在的 app.config (XXXXXX~X.EXE.CONFIG ),并且 Logging 类无法初始化。

我无法更改启动我们的程序,因此我试图在我的 WPF 代码中找出防止这种情况的方法。想法是……

1) 重命名我的EXE并在EXE中间创建一个人。

2) 检测我的 EXE 是如何启动并正确重新启动的。

3) 某种 AppDomain / ConfigurationManager 重新指向(这可能吗?)

4) 使用安装程序将 App.Config 克隆为短文件名版本(已确认有效)

有没有人以前见过这个并且有任何建议/见解?

【问题讨论】:

  • 修复一个蹩脚的应用程序你无能为力。使用短名称创建 .config 文件的副本并不是非常可靠。简单的解决方案是使用 8 个字符或更少字符的文件名。
  • 我了解修复另一个糟糕的应用程序,但我正在开发的应用程序是对另一个糟糕的应用程序的重构,它目前需要适应它周围所有事物的原始基础架构。

标签: c# .net wpf app-config enterprise-library


【解决方案1】:
string realAppName = Process.GetCurrentProcess().MainModule.FileName;
System.AppDomain.CurrentDomain.SetData("APP_CONFIG_FILE", realAppName + ".config");

【讨论】:

  • 我们试过这个,但似乎企业库已经加载,所以它被忽略了。 (比赛条件)。还有其他想法吗?
【解决方案2】:

如果你可以改变exe启动然后调用

start.exe XXXXXXXXXX.exe

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-22
    • 2019-07-22
    • 2014-04-05
    • 2011-03-28
    • 2019-09-27
    • 1970-01-01
    相关资源
    最近更新 更多