为啥我不能在没有安装Visual Studio的机器上运行调试版的.NET程序

Posted

技术标签:

【中文标题】为啥我不能在没有安装Visual Studio的机器上运行调试版的.NET程序【英文标题】:Why can't I run debug version of .NET program in the machine didn't install visual studio为什么我不能在没有安装Visual Studio的机器上运行调试版的.NET程序 【发布时间】:2012-02-15 04:24:29 【问题描述】:

我有一个 .NET 4.0 应用程序的调试版本,我在这台机器上安装了 .NET 4.0 Framework,但是我没有安装 Microsoft Visual Studio。

为什么我只能运行Release版本的应用,而不能运行debug版本的应用?

我猜应用程序的调试版本中的 dll 可能是指 Visual Studio 的某些 dll?有谁知道具体原因吗?

【问题讨论】:

您应该能够运行在调试模式下编译的程序集。当您尝试运行它时,究竟会发生什么? @DBM 它抛出一个 FileNotFoundException.Message 如下所示:未处理的异常:System.IO.FileNotFoundException:无法加载文件或汇编“xxxx.dll”或其依赖项之一。找不到指定的模块。 您安装的是完整框架还是客户端配置文件?如果您只安装了客户端配置文件,请尝试完整的框架。另外,错误中引用的是您的 DLL 还是框架 DLL? 是否依赖于非托管项目或DLL? @Tetsujin no Oni 我已经安装了完整的框架,包括 Client Profile 和 Extended 【参考方案1】:

调试版本专门用于调试您的程序。它包括一些额外的保护和挂钩,让您可以单步执行和测试您的程序。这些需要 Visual Studio 通常附带的特殊调试运行时。

发布版本去除了所有这些额外功能,因此您只需要运行 .NET 框架即可。

编辑:经过更多研究,看起来调试版本应该大致等同于发布版本。主要区别似乎是调试版本创建了一个 pdb 文件,其中包含调试器的额外查找信息,并且在优化方面可能不那么激进。

【讨论】:

在 Win32/C/C++ 上可能是这样,但在 .NET 上则不然。 条件语句可能会在编译时被删除,但您可以在存在框架的任何地方运行 .NET 程序集。

以上是关于为啥我不能在没有安装Visual Studio的机器上运行调试版的.NET程序的主要内容,如果未能解决你的问题,请参考以下文章

Visual Studio 认为我没有安装 Hyperv。为啥?

为啥我在visual studio 2008 VC++中运行一个Win32控制台应用程序后,弹出一个“没有找到MSVCP90D.dll”?

为啥我不能在 Visual Studio 中禁用预编译头文件?

为啥我的visual studio service pack 6 不能安装啊?是否一定要装在C盘?我的VC6.0是装在D盘的。

为啥visual studio code 没有html和css代码提示

为啥我的Visual Studio 2010不能显示错误(是输入的错误哦),,,但生成解决方案就有错误了..