2013-05-31 69 views
5

我們的應用程序目前是傳統C++應用程序,C#.NET應用程序以及各種DLL和其他支持文件的混合體。我們最近遇到了一個問題,我們需要更改Internet選項下Windows UI中出現的設置;它叫做generatePublisherEvidence如何使解決方案中的所有項目都使用單個應用程序配置文件?

所以我的問題實際上是兩個方面:

  1. 有沒有更好的方式來處理這個以外的設置通過使用我們的應用程序目錄中的文件名爲myEXE.exe.config?下面是該文件的內容,順便說一句:

    <?xml version="1.0" encoding="utf-8"?> 
    <configuration> 
        <runtime> 
         <generatePublisherEvidence enabled="false"/> 
        </runtime> 
    </configuration> 
    
  2. 如果.exe.config文件是合適的選擇,那麼是有可能避免必須包括下列內容之一的每個EXE在我的應用程序(我們18 )他們?)?換句話說,他們都在尋找一個文件*.exe.config有一些等價的機制嗎?每個項目中的設置可能?

+1

相關:http://stackoverflow.com/questions/15181969/common-app-config-for-multiple-applications –

+0

你可以把它放在machine.config文件中。這將影響在該機器上運行的所有.Net應用程序。 – Liam

+1

@Liam這將是不好的,因爲這是一個Windows證書問題。其表現形式是,當'generatePublisherEvidence'爲'true'時,EXE啓動時會出現很長的延遲。我們不簽署我們的EXE,所以我們需要它是'假'。 – DonBoitnott

回答

0

只是爲了給這個答案,我們決定留下來與我們一直在做的事情。考慮到我們過於簡單的需求,似乎沒有一種簡單/更好的選擇。

0

我認爲最簡單的方法是喬治提到它(Common app.config for multiple applications),但如果你的應用程序需要寫入該配置文件鎖定錯誤,可能確實是一個問題。你給出的例子只有一個關鍵,但我認爲它會很快變大,如果你想用它作爲你所有應用程序的集中配置。

這一切都取決於您讀取/寫入配置的頻率 - 您的應用程序越頻繁地併發執行此操作,則同步訪問就越重要。通常,應用程序往往讀取一次配置值,並且緩存,但因爲你沒有指定我會給出一些想法,你如何處理它:

  1. 爲了避免併發問題,你可以寫一個窗口或Web服務,它與鎖定機制同步地寫入/讀取中央配置文件,並且您的應用程序正在使用WCF協定讀取/寫入值。對此的實施工作比選項2要大得多。如果您想了解更多信息,可以查看文章here.

  2. 或者,您可以將SQL數據庫與配置表一起使用,該配置表使用事務和因此不存在這樣的問題。您可以使用EF與Linq輕鬆讀取/修改值。其優點是,你可以使用POCO類 - 一個快速啓動如何做到這一點請大家here.

相關問題