5

我们的应用程序目前混合了传统 C++ 应用程序、C# .NET 应用程序以及各种 DLL 和其他支持文件。我们最近遇到了一个问题,我们需要更改出现在 Windows UI 中 Internet 选项下的设置;它被称为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他们都去寻找的文件是否有一些等效的机制?可能是每个项目中的一个设置?

4

2 回答 2

0

我认为最简单的方法是 George 提到的(Common app.config for multiple applications),但是如果您的应用程序需要写入该配置文件,锁定错误可能确实是一个问题。您提供的示例只有一个键,但我认为如果您想将它用作所有属于一起的应用程序的中央配置,它将很快变得更大。

这一切都取决于您读取/写入配置的频率 - 您的应用程序执行此操作的频率越高,同步访问就越重要。通常,应用程序倾向于读取一次配置值并对其进行缓存,但是由于您没有指定,我将给出一些如何处理它的想法:

  1. 为避免并发问题,您可以编写一个窗口或 Web 服务,该服务写入/读取与锁定机制同步的中央配置文件,并且您的应用程序使用 WCF 合同来读取/写入值。与选项 2 相比,它的实现工作量要大得多。如果您想了解更多有关它的信息,可以在此处找到一篇文章。

  2. 或者,您可以使用带有配置表的 SQL 数据库,该表使用事务,因此不存在此类问题。您可以将 EF 与 Linq 一起使用来轻松读取/修改值。优点是您可以使用 POCO 类 - 要快速入门如何操作,请查看此处。

于 2013-06-01T14:17:31.453 回答
0

只是为了给出这个答案,我们选择坚持我们一直在做的事情。鉴于我们的简单化需求,似乎没有一个简单/更好的选择。

于 2013-07-23T19:25:10.243 回答