VS.NET提示"试图运行项目时出错:无法启动调试。绑定句柄无效"解决办法

郁闷刚装的系统就有这个,按ctrl+F5道是可以运行,然后上网找了一下就看了如下解决方案,貌似已经解决了,但是看了怎么就不理解呢。

两个解决方法:
1) 打开项目属性,选择调试选项卡,将“启用非托管代码调试”一项钩上。
2) 打开项目属性,选择调试选项卡,将“启用Visual Studio宿主进程“一项钩掉。

然后问题就来了。
一、什么是非托管代码呢?什么又是托管代码呢?
查了下 貌似又是定义性的东西。。
托管代码 (managed code)

由公共语言运行库环境(而不是直接由操作系统)执行的代码。托管代码应用程序可以获得公共语言运行库服务,例如自动垃圾回收、运行库类型检查和安全支持等。这些服务帮助提供独立于平台和语言的、统一的托管代码应用程序行为。

Unmanaged Code - 非托管代码

在公共语言运行库环境的外部,由操作系统直接执行的代码。非托管代码必须提供自己的垃圾回收、类型检查、安全支持等服务;它与托管代码不同,后者从公共语言运行库中获得这些服务。

托管代码是可以使用20多种支持Microsoft .NET Framework的高级语言编写的代码,它们包括:C#, J#, Microsoft Visual Basic .NET, Microsoft JScript .NET, 以及C++。所有的语言共享统一的类库集合,并能被编码成为中间语言(IL)。运行库编译器(runtime-aware ompiler)在托管执行环境下编译中间语言(IL)使之成为本地可执行的代码,并使用数组边界和索引检查,异常处理,垃圾回收等手段确保类型的安全。 非托管代码则反之。

在托管执行环境中使用托管代码及其编译,可以避免许多典型的导致安全黑洞和不稳定程序的编程错误。同样,许多不可靠的设计也自动的被增强了安全性,例如 类型安全检查,内存管理和释放无效对象。程序员可以花更多的精力关注程序的应用逻辑设计并可以减少代码的编写量。这就意味着更短的开发时间和更健壮的程序。


说的是基于CLR的代码都是托管代码 不是基于CLR的代码就是非托管代码:

难道我吧那个勾打上程序就不是基于CLR运行了吗?
要是这么的话我上面打勾的话貌似问题还是没有解决诶,我可不想不基于CLR运行啊,要自己写垃圾回收之类的东东,貌似还不怎么可以诶 。
二、那什么又是Visual Studio宿主进程又是什么呢?为什么把它禁掉我的问题又可以解决呢?
    没有找的相关的资料诶,无意间看到有人这么说:asp.net应用程序和IIS,asp.net应用程序需要运行在IIS里面,IIS就是宿主程序,那么我可以这么理解,当启动Visual Studio宿主进程的时候,程序都是在visual studio宿主进程上运行的咯。
那么禁止掉呢,貌似解决方法和上面的非托管代码运行有点类似了。
    那么问题又来了,我不可能每次做项目都这么搞吧,网上查了哈子貌似是又个什么Terminal Services这个服务没有启动,新装的系统诶。想象可能是被禁掉了吧。我装的是GHOST版本的XP诶。然后看了哈子服务的情况,(开始->运行->输入compmgmt.msc->服务)果然这个进程被禁止了。于是便开开启了这个进程。
呵呵问题接着来了。
    所谓的Terminal Services进程到底是干嘛用的呢?
    根据英语字面的理解是终端服务。
在它的基本描述下面是这么写的:允许多位用户连接并控制一台机器,并且在远程计算机上显示桌面和应用程序。这是远程桌面(包括管理员的远程桌面)、快速用户转换、远程协助和终端服务器的基础结构。
    终端服务器用在局域网(LAN)上将很多终端连接到IBM主机系统或小型计算机系统。终端是通过RS-232串行端口连接到终端服务器的,并且这个终端服务器与一个以太网或一个令牌网相连。然后,这个网络就象主机系统和终端之间的链路那样提供服务。终端服务器基本上是一个异步多路复用器,它不仅仅将终端,而且将计算机、调制解调器、打印机和其它外设,连接到这个主机系统。终端服务器有一些串行端口和相应的网络接口。
  终端服务器并不是网关,这是因为被连接的终端设备要使用一个与主机兼容的通信协议。当个人计算机通过终端服务器连接到主机时,它运行一个终端访真程序来模仿一个终端上的通信协议。然而需要注意,终端服务器为了在网络上向主机系统发送数据,必须对从终端来的要发送的数据进行封装。 

    不理解是什么意思,难道我用VS2005写的程序和远程连接还有关系吗?
    找了半天还是没有找到相关的资料。请求园子里的朋友帮解释下

原文地址:https://www.cnblogs.com/itgmhujia/p/1080622.html