什么是 *.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'异常?