Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么可以';t.NET DLL将包含在应用程序中,使用;复制本地";-因此,不需要安装.NET_C#_.net_Dll_Installation_Clr - Fatal编程技术网

C# 为什么可以';t.NET DLL将包含在应用程序中,使用;复制本地";-因此,不需要安装.NET

C# 为什么可以';t.NET DLL将包含在应用程序中,使用;复制本地";-因此,不需要安装.NET,c#,.net,dll,installation,clr,C#,.net,Dll,Installation,Clr,非常简单的问题,我真的想知道背后的原因(真正的原因)。假设您想将.NET应用程序分发到未安装.NET(甚至不是1.1)的计算机。为什么我们不能只包含mscorelib.dll和其他应用程序? 是否因为必须以某种方式安装CLR,才能获得JIT功能来解释IL 我知道这是一个毫无意义的问题,因为现在每个系统都至少有.NET2.0版本,但我仍然想知道:=)好吧,正如你已经说过的,仅仅程序集是没有用的 您需要运行时环境,包括抖动、类型加载器、垃圾收集器等。.NET是一种即时解释语言。程序集不会编译为二进制

非常简单的问题,我真的想知道背后的原因(真正的原因)。假设您想将.NET应用程序分发到未安装.NET(甚至不是1.1)的计算机。为什么我们不能只包含mscorelib.dll和其他应用程序? 是否因为必须以某种方式安装CLR,才能获得JIT功能来解释IL


我知道这是一个毫无意义的问题,因为现在每个系统都至少有.NET2.0版本,但我仍然想知道:=)

好吧,正如你已经说过的,仅仅程序集是没有用的


您需要运行时环境,包括抖动、类型加载器、垃圾收集器等。

.NET是一种即时解释语言。程序集不会编译为二进制可执行文件


因此,您需要安装.NET运行时,以便可以在运行时解释代码。如果没有它,你的应用程序将什么都做不了。

安装库和CLR还允许共享程序集。您真的希望数百份CLR副本在您的计算机上自由运行吗?我喜欢这样一个事实,我知道我的应用程序将有一些可用的东西。比不得不担心要好得多…我是为运行时的1.4.5或1.4.6版本编译的吗。。。甚至可能是1.2.5(JRE可能是一种痛苦)


此外,.Net Framework的许多部分只是非托管API上的托管包装。以及大量您使用但未直接引用的其他程序集。(请参见mscoree.tlb和其他许多内容)

我不确定,但我想这与全局程序集缓存和您提到的JIT功能有很大关系。该死,还有我准备了一个不真实的理由和一切:(嗯……我问这个问题是因为我也不太确定……有一本书我知道它有答案——我相信它叫《使用C#从内到外的CLR》。遗憾的是,我们一直没有时间阅读它……好吧……问题的最新更新:1.这本书是杰弗里·里克特写的《通过C#的CLR》。2.如果说的都是真的,为什么我们不能“导入”呢这些库包含GC和其他内容?(Mscoree.dll、Mscorwks.dll、Mscorjit.dll等)