我是C#的初学者。事实上,几天前才开始学习语言。 我正在尝试构建与C#相关的.NET Framework概念。
我在这里阅读CLR https://docs.microsoft.com/en-us/dotnet/framework/get-started/overview
我不明白的是作者所说的文本部分:
.NET Framework可以由加载的非托管组件托管 公共语言运行库进入其进程并启动执行 托管代码,从而创建一个利用两者的软件环境 托管和非托管功能。 .NET Framework不仅提供了几个 运行时主机,但也支持第三方运行时的开发 主机。
我对“非托管组件”的理解是它们是使用本机Windows API以纯C / C ++编写的程序。所以现在这些非托管程序可以将CLR DLL加载到它们的程序地址空间中,并且可以使CLR函数可用,然后这个非托管程序可以使用CLR函数加载可执行的托管程序。这是对的吗?
如果我的理解是正确的,那么我想知道在什么情况下我会这样做?或者为什么我希望非托管程序加载CLR并运行托管代码?
此外,作者的意思是“.NET Framework不仅提供了几个 运行时主机,但也支持第三方运行时主机的开发“?
我认为CLR是.NET Framework中唯一的运行时。
答案 0 :(得分:0)
最初Windows是所有非托管代码。所以它会加载.net框架以允许托管代码运行。从维护的角度来看,最好是托管代码。但是,您不想丢弃数百万行非托管工作代码。如果Microsoft没有提供此功能,则用户将不得不重写所有内容。 (不要重写所有内容,请参阅链接)。而不是这样做用户会忽略.net。 https://www.joelonsoftware.com/2000/04/06/things-you-should-never-do-part-i/