2010-02-27 69 views

回答

25

有关与CLR v2(.NET 2.0,3.0和3.5)相关的CLR托管的信息,请参阅here。有关.NET 4.0中较新的CLR Hosting API的信息,请参阅see here

基本上,CLR充当一个库,可以通过进程加载和“托管”。如果你愿意,你可以开发一个加载和托管CLR的应用程序;这将允许您的应用程序包含整个CLR虚拟机,加载程序集并在其中运行.NET托管代码。例如,SQL Server 2008可以执行此操作。您可以编写存储在SQL Server数据库中的.NET代码,并从SQL Server数据库引擎中运行。 SQL Server正在托管CLR来实现这一点。

除Windows外壳(通常的用户界面)以外的CLR主机可以为要运行的代码提供特定的上下文。这对于专门的应用程序或非常特殊的场景很有用。 MSDN(上面的链接)对这些问题有一些指导。

+1

+1感谢您的回答。另外:当一个.NET可执行文件被双击并启动时,谁承载CLR?它是由Windows资源管理器托管的吗? – Sabuncu

+0

@Sabuncu:是的。这是我在回答中提到的Windows shell。 – CesarGon

+0

谢谢。我看到了你的“Windows外壳”参考,但并不确定。在这种情况下,我认为您使用的是通用意义上的“shell”,而不是像DOS cmd.exe或PowerShell控制台这样的shell程序。 – Sabuncu

11

CLR托管是在您选择的过程中托管.NET公共语言运行时。

用例可能是现有环境不适合您的要求的情况。一些现有的环境是ASP.NET,WinForms,Windows Workflow Foundation等。如果这些环境不符合您的要求,您可以自己托管它。

2

CLR Hosting是Hosting使用.NEt应用程序。当您在本机进程内启动.NET运行时时,该本机应用程序将成为运行时的主机。这使您可以将.NET功能添加到本机应用程序。

如果运行时正在运行,但它还没有任何加载的用户代码。某些内部线程调度程序和垃圾回收器肯定正在运行,因为它们是CLR运行时的一部分 它比其他托管服务非常复杂。