什么是 *.vshost.exe.config 文件?

Posted

技术标签:

【中文标题】什么是 *.vshost.exe.config 文件?【英文标题】:What is the *.vshost.exe.config file? 【发布时间】:2010-09-22 01:03:38 【问题描述】:

当我使用 VS2008 编译应用程序时,有时会得到两个相同的配置文件:

*.exe.config *.vshost.exe.config

后一个是干什么用的?

【问题讨论】:

感谢您的提问引发讨论。 【参考方案1】:

在 VS 中调试时,您的应用程序将被称为 [appname].vshost.exe,因此 .vshost.exe.config 文件是 .net 运行时查找程序配置的位置。

【讨论】:

如果发布到服务器会发生什么?有什么问题吗?【参考方案2】:

这是一篇讨论 vshost 进程及其目的的博文。

http://blogs.msdn.com/dtemp/archive/2004/08/17/215764.aspx

【讨论】:

除了外部链接之外,您至少应该添加一点解释,以便答案包含在 SO 中并且不完全依赖可能消失的外部资源。 这个链接现在完全消失了。 .NET Core 应用程序使用这个吗?他们可以改用 launchSettings.json 吗?【参考方案3】:

我注意到有关此行为的其他内容。

虽然 VS 将创建一个名为 [appname].vshost.exe.config 的配置,但 API 调用:

var s = AppDomain.CurrentDomain.SetupInformation.ConfigurationFile

不返回此名称,而是返回:[appname].config

这是使用 VS2010。在 VS2008 中未检查

【讨论】:

我认为这是因为如果您在项目属性调试选项卡中启用了 VS 托管,它将寻找 [appname].vshost.exe.config。但是,如果您禁用它,它将寻找 [appname].config。我从 VS2008 -> VS2013 迁移了一个项目,无论它返回什么,它都不会读取配置文件。 & vshost.exe.config 永远不会生成。所以我不得不关闭上述 VS 托管,然后将 app.config 重命名为 [appname].config 并将其放入 bin 文件夹中。现在它可以工作了。【参考方案4】:

此文件的唯一目的是帮助调试和托管进程。Visual Studio 托管进程提高了调试器的性能。它支持新的调试器功能,例如部分信任调试和设计时表达式评估。

如果您禁用托管进程,即使在项目属性的安全页面上启用了部分信任安全性,部分信任调试也将不起作用。

您可以通过项目菜单禁用它 -> 单击属性 -> 调试选项卡 -> 清除启用 Visual Studio 托管进程复选框。设计时表达式总是使用宿主进程。在项目属性中禁用宿主进程会禁用类库项目的设计时表达式评估。

对于其他项目类型,不会禁用设计时表达式评估。相反,Visual Studio 会启动实际的可执行文件并将其用于设计时评估,而无需托管进程。

【讨论】:

以上是关于什么是 *.vshost.exe.config 文件?的主要内容,如果未能解决你的问题,请参考以下文章

如何修复“无法找到文件'C: CoolApp.vshost.exe.config'异常?

更换 与AfterBuild .exe.config不适用 .vshost.exe.config

我的设置去哪儿了?

软文推广丨什么是软文推广?

什么是最好的非所见即所得文本区域编辑器?

“天府文旅码”的主要特点是什么?