2012-11-02 135 views
0

我有一個C#WPF應用程序遇到了一個奇怪的問題。該應用使用使用app.config配置的MS企業庫(日誌記錄)。因此,我的部署文件是:App.Config解析失敗

(名稱更改,文件名長度正確)

XXXXXXXXXXX.EXE

XXXXXXXXXXX.EXE.CONFIG

通常,這工作得很好。然而,在一個奇怪的情況下,該應用程序由另一個基於它的簡稱(XXXXXX〜X.EXE)調用EXE的程序啓動。 EXE開始,但隨後繼續查找不存在的app.config(XXXXXX〜X.EXE.CONFIG),並且Logging類未能初始化。

我不能改變啓動我們的程序,所以我想弄清楚在WPF代碼中防範這種情況的方法。想法是......

1)重命名我的EXE並在中間EXE創建一個人。

2)檢測我的EXE是如何啓動並正確重新啓動的。

3)有些種類的AppDomain/ConfigurationManager中repointing的(這可能嗎?)

4)使用安裝程序在app.config克隆到短文件名版本(確認作品)

有沒有人曾經見過這個,並有任何建議/見解?

+0

沒有什麼可以做些什麼來解決一個蹩腳的應用程序。使用短名稱創建.config文件的副本並不十分可靠。簡單的解決方案是使用8個字符或更少的文件名。 –

+0

我瞭解修復其他蹩腳的應用程序,但我正在處理的應用程序是對另一個蹩腳的應用程序的重構,它需要適應當前所有事物的原始基礎結構。 –

回答

0

如果你可以改變的exe啓動然後調用

start.exe XXXXXXXXXX.exe 
1
string realAppName = Process.GetCurrentProcess().MainModule.FileName; 
System.AppDomain.CurrentDomain.SetData("APP_CONFIG_FILE", realAppName + ".config"); 
+0

我們嘗試了這一點,但似乎企業庫已經加載,所以它被忽略。 (比賽條件)。任何額外的想法? –