.config文件未从工作目录加载

时间:2010-04-06 15:12:55

标签: visual-studio-2008 configuration

我是新手使用.config文件,直到最近才使用.INI文件和注册表的应用程序。我在VS2008中看到了一种我不会预料到的行为,并且想知道它是否是预期的行为。

当我在VS2008 IDE中为我的 Foo.exe 应用程序配置工作目录设置时,我会猜到 Foo.exe.config 会从中加载工作目录。它不是;它从.. \ bin \ Debug目录加载,即使我在该工作目录中有一个 Foo.exe.config 文件。如果我在通过设置断点应用配置时检查Environment.CurrentDirectory,我看到它是.. \ bin \ Debug。当我在主UI的Loaded事件之后检查Environment.CurrentDirectory时,它被设置为我在IDE中应用的工作目录。

这是对的吗? (为什么?)

2 个答案:

答案 0 :(得分:1)

是的,这是您所看到的正确行为。可执行文件首先在与.exe相同的目录中查找.config文件。不确定它在那之后的位置,但是如果它在那里找到它就使用那个。我将进行更多研究,看看默认情况下是否搜索了其他路径。


请参阅Here

  

默认情况下,应用程序   配置文件的默认值   appdomain(和其他应用程序域   v1.1及更高版本)正在进行中   exe的目录和命名相同   进程exe +“。config”。这是   即使该exe是不受管理的,也是如此。   另请注意,web.config文件是   app.config - ASP.NET将其设置为   appdomain的配置文件。

     

要更改配置文件,请设置   AppDomainSetup.ConfigurationFile到   新的位置并通过   AppDomainSetup给你打电话   AppDomain.CreateDomain()。然后,跑   所有需要的代码   应用程序配置从内部   新的appdomain。

     

但请注意,您将无法使用   通过设置选择CLR版本   ConfigurationFile - 那时,   CLR已经在运行了   每个过程只能有一个。

     

应用程序配置文件是   每个应用程序域。所以,你可以设置'dll   使用上面的方法配置',但是   这意味着它将被用于   整个appdomain,它只会得到   之一。

答案 1 :(得分:0)

默认情况下,配置是从应用程序所在的同一目录加载的。在调试环境中,这是\ bin \ Debug。但是,如果项目是项目的一部分,那么您的项目应该为您部署该配置。