为什么Visual Studio Devenv.exe不是.NET模块

why visual studio devenv.exe is not .net module

提问人:Bhalchandra K 提问时间:6/14/2017 更新时间:6/14/2017 访问量:195

问:

Visual Studio 基于 .NET Framework 和 (WPF/XAML) 构建。但是,如果我们尝试使用反射工具,例如 .NET 反射器,用于 devenv.exe(Visual Studio 进程),为什么它说不是有效的 .NET 模块。

. visual-studio .net-reflector

评论

0赞 Sam Axe 6/14/2017
我不接受你的前提。
0赞 Bhalchandra K 6/14/2017
@SamAxe Windows 本机可执行文件与 .NET 可执行文件相反有什么好处。
0赞 xanatos 6/14/2017
Visual Studio 是基于 .NET Framework 构建的引用或它没有发生......stackoverflow.com/questions/11706149/......VS 2012 的公认版本是 C++ + C#,因此 devenv.exe 可能是 C++ 部分。
1赞 Hans Passant 6/14/2017
VS 的核心是一个插件主机,它使用 COM 来加载插件并相互通信。用 C++ 编写。它还支持在 .NET 中编写插件。
0赞 Bhalchandra K 6/14/2017
@HansPassant感谢您分享更多关于此内容的信息。

答:

1赞 xanatos 6/14/2017 #1

通过查看 的依赖关系(例如,使用 Dependancy Walker),我发现它依赖于devenv.exe

  • vcruntime140.dll
  • msvcp140.dll
  • mscoree.dll

这与编写 C++/CLR 应用时获得的内容兼容(“混合”模式,因此是默认模式,其中程序被编译为机器代码,并且可以使用本机库和 .NET 库,而不是“安全”或“纯”库)。