当我使用 VS2008 编译应用程序时,有时会得到 2 个相同的配置文件:
- *.exe.config
- *.vshost.exe.config
后一个是干什么用的?
当我使用 VS2008 编译应用程序时,有时会得到 2 个相同的配置文件:
后一个是干什么用的?
这是一篇关于 vshost 进程及其目的的博客文章。
在 VS 中调试时,您的应用程序将被称为 [appname].vshost.exe,因此 .vshost.exe.config 文件是 .net 运行时查找程序配置的位置。
我注意到有关此行为的其他内容。
虽然 VS 将创建一个名为 [appname].vshost.exe.config 的配置,但 API 调用:
var s = AppDomain.CurrentDomain.SetupInformation.ConfigurationFile
不返回此名称,而是返回:[appname].config
这是使用VS2010。在 VS2008 中未检查
此文件的唯一目的是帮助调试和托管 Process。Visual Studio 托管进程提高了调试器的性能。它支持新的调试器功能,例如部分信任调试和设计时表达式评估。
如果禁用托管进程,即使在项目属性的安全页面上启用了部分信任安全,部分信任调试也将不起作用。
您可以通过项目菜单禁用它 -> 单击属性 -> 调试选项卡 -> 清除启用 Visual Studio 托管进程复选框。设计时表达式总是使用宿主进程。在项目属性中禁用宿主进程会禁用类库项目的设计时表达式评估。
对于其他项目类型,不会禁用设计时表达式评估。相反,Visual Studio 会启动实际的可执行文件并将其用于设计时评估,而无需托管进程。