我是新手使用.config文件,直到最近才使用.INI文件和注册表的应用程序。我在VS2008中看到了一种我不会预料到的行为,并且想知道它是否是预期的行为。
当我在VS2008 IDE中为我的 Foo.exe 应用程序配置工作目录设置时,我会猜到 Foo.exe.config 会从中加载工作目录。它不是;它从.. \ bin \ Debug目录加载,即使我在该工作目录中有一个 Foo.exe.config 文件。如果我在通过设置断点应用配置时检查Environment.CurrentDirectory,我看到它是.. \ bin \ Debug。当我在主UI的Loaded事件之后检查Environment.CurrentDirectory时,它被设置为我在IDE中应用的工作目录。
这是对的吗? (为什么?)
答案 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。但是,如果项目是项目的一部分,那么您的项目应该为您部署该配置。