首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

从.NET 4.0应用程序链接.NET 2.0托管程序集时,使用哪个框架?

从.NET 4.0应用程序链接.NET 2.0托管程序集时,使用的框架是CLR(Common Language Runtime)。

CLR是.NET Framework的核心组件,负责在运行时执行和管理.NET应用程序。它提供了一种在不同语言之间交互和共享代码的机制,并提供了内存管理、异常处理、安全性、线程管理等功能。

在.NET 4.0中,CLR版本为4.0,而在.NET 2.0中,CLR版本为2.0。当.NET 4.0应用程序链接.NET 2.0托管程序集时,CLR会根据程序集的目标框架版本来确定使用哪个CLR版本来执行程序集。

需要注意的是,由于.NET Framework的向下兼容性,.NET 4.0应用程序可以链接和执行.NET 2.0托管程序集,但反过来则不行。这意味着.NET 2.0应用程序无法链接和执行.NET 4.0托管程序集。

对于.NET开发者来说,了解CLR的版本和框架之间的兼容性非常重要,以确保程序能够正确地链接和执行所需的托管程序集。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

.NET Core跨平台的奥秘:复用之殇

二、程序复用 我们采用C#、VB.NET这样的编程语言编写的源文件经过编译会生成有IL代码和元数据构成的托管模块,一个或者多个托管模块合并生成一个程序。...我们试想一下这么一个问题:就一个针对.NET Framework 2.0编译生成的程序自身来说,所有引用的基础程序的版本在元数据描述中都应该是2.0,如果这个程序NET Framework 4.0...(CLR)版本默认的2.0切换到4.0。...也就是说,.NET Framework 2.0发布提供的程序mscorlib.dll在.NET Framework 3.x时代就没有升级过。...现在我们看看.NET Framework 4.0(CLR 4.0)环境下运行同一个应用程序(App.exe)是否会有不同的输出结果。

1.3K80

译 | .NET Core 3.0 Preview 6 已发布

应用程序作为 self-contained 发布,并且不使用程序链接器(稍后将介绍)。...使用显式 RuntimeIdentifier 发布。 注意: 编译应用程序程序,生成的本机代码特定于平台和体系结构(这就是为什么在发布必须指定有效的运行时标识符)。...程序链接 .NET Core 3.0 SDK 附带了一个工具,可以通过分析 IL 和修剪未使用程序来减小应用的大小。...我们使用 IL 链接器扫描应用程序的 IL 以检测实际需要的代码,然后修剪未使用框架库。这可以显著减小某些应用的大小。...使用反射或相关动态功能的应用程序框架(包括 ASP.NET Core 和 WPF)在修剪通常会中断,因为链接器不知道此动态行为,通常无法确定哪些框架类型在运行时进行反射所需的。

97410
  • 通俗易懂,什么是.NET?什么是.NET Framework?什么是.NET Core?

    我们点进去可以看到以.NET版本号为命名的文件夹,有2.0,3.0,3.5,4.0这几个文件夹。...除了程序版本不同外,还有一种情况就是,我一个项目同时引用了程序A和程序B,但程序A和程序B中的命名空间和类型名称完全一模一样,这个时候我调用任意一个类型都无法区分它是来自于哪个程序的,那么这种情况我们可以使用...在.NET Framework4.0之后,就不再使用之前的那套CAS模型了,而是使用.NET Framework 2.0中引入的安全透明模型,然后稍加修改,修改后的安全透明模型成为保护资源的标准方法,被称之为...正如上面CLS一样,.NET Standard就类似于这样的一个概念,无论是哪个托管框架,我们遵循这个标准,就能始终保持在BCL的统一性,即我不需要关心我是用的.NET Framework还是.NET...2.0 IL Assembler的机器翻译版,同时我也建议调试的方面入手,如 NET高级调试(好多.NET文件调试、反编译的文章都是参考这本书和Apress.Expert.dot.NET.2.0.IL.Assembler

    4.5K30

    通俗易懂,什么是.NET?什么是.NET Framework?什么是.NET Core?

    我们点进去可以看到以.NET版本号为命名的文件夹,有2.0,3.0,3.5,4.0这几个文件夹。...除了程序版本不同外,还有一种情况就是,我一个项目同时引用了程序A和程序B,但程序A和程序B中的命名空间和类型名称完全一模一样,这个时候我调用任意一个类型都无法区分它是来自于哪个程序的,那么这种情况我们可以使用...在.NET Framework4.0之后,就不再使用之前的那套CAS模型了,而是使用.NET Framework 2.0中引入的安全透明模型,然后稍加修改,修改后的安全透明模型成为保护资源的标准方法,被称之为...正如上面CLS一样,.NET Standard就类似于这样的一个概念,无论是哪个托管框架,我们遵循这个标准,就能始终保持在BCL的统一性,即我不需要关心我是用的.NET Framework还是.NET...2.0 IL Assembler的机器翻译版,同时我也建议调试的方面入手,如 NET高级调试(好多.NET文件调试、反编译的文章都是参考这本书和Apress.Expert.dot.NET.2.0.IL.Assembler

    2.7K63

    .Net Framework 各版本区别

    自从微软推出.NET以来,截止到上月为止,.NET使用人数仅次于C++、C,学校教学以及公司开发环境所使用Visual Studio .NET Framework版本多不相同,本文作者比较了.NET...本地应用托管.NET运行时实例的新API。 新的API提供比如多线程、内存分配,程序加载等更细粒度上的运行时行为控制 。 6. 许多新增和改进的ASP.NET Web控件 。 7....扩展托管框架(MEF)。 8....本地应用托管.NET运行时实例的新API。 新的API提供比如多线程、内存分配,程序加载等更细粒度上的运行时行为控制 。 6. 许多新增和改进的ASP.NET Web控件 。 7....本地应用托管.NET运行时实例的新API。 新的API提供比如多线程、内存分配,程序加载等更细粒度上的运行时行为控制 。 6. 许多新增和改进的ASP.NET Web控件 。 7.

    3K10

    “前.NET Core时代”如何实现跨平台代码重用 ——程序重用

    我们采用C#、VB.NET这样的编程语言编写的源文件经过编译会生成有IL代码和元数据构成的托管模块,一个或者多个托管模块合并生成一个程序。...我们试想一下这么一个问题:就一个针对.NET Framework 2.0编译生成的程序自身来说,所有引用的.NET Framework程序的版本都是2.0,如果这个程序4.0环境下执行,CLR在决定加载它所依赖程序的时候...,应该选择2.0还是4.0呢?...通过如下所示的输出结果我们可以看出当.NET Framework3.5升级到4.0的时候,将原本定义在程序System.Core.dll中的部分类型转移到了程序mscorelib.dll之中。...:某个类型在框架1.0版本的时候定义在程序A中,当升级到2.0的时候被转移到了程序B中,使用旧版本的应用可以在不做任何修改的情况下直接对使用框架进行升级。

    1.2K80

    C#.NET 如何创建带有本机依赖的多框架多系统 NuGet 包

    包含构建的一些自定义任务(如果有的化),可随着包依赖而传递执行。 + lib - 必须。放你最终被引用的托管程序,将被引用。 + ref - 看情况,可能必须可能可选。...5/7 含托管程序和本机动态链接库 如果只含托管程序和本机动态链接库,只需要做好 lib 和 runtimes 文件夹就够了。制作方法见后文的“本机依赖包(单包)”。...7/7 含托管程序、C++/CLI 程序、本机动态链接库 由于包含了托管程序和 C++/CLI 程序,这两种程序同时被 .NET Core App / .NET 5/6 项目引用时会出现问题,...请特别注意:托管程序和 C++/CLI 程序不可在同一个 NuGet 包中被引用!这意味着,如果你己像引用 C++/CLI 又想引用此项目的 dll ,请改用后面的“双包”方案。...如果你使用 .NET 的发布功能将其发布成框架独立的应用程序,那么编译器会自动将 runtimes 里面的对应架构和框架的文件拷贝至输出目录下,于是你就能正常运行你的程序了。

    76250

    Donut - 将 .NET 程序作为 Shellcode 注入

    它可以做的一件事是手动将 .NET 程序加载到任意应用程序域中。它可以磁盘或内存中执行此操作。我们利用其内存加载的能力来加载您的有效负载,而无需接触磁盘。...一旦加载了 CLR,shellcode 就会创建一个新的应用程序域。此时,必须获取 .NET 程序有效负载。如果用户提供了暂存 URL,则会从中下载程序。否则,它是内存中获取的。...NET 程序将被加载到托管进程内的新应用程序域中。.NET 旨在允许为多个 .NET 版本构建的 .NET 程序在同一进程中同时运行。因此,无论注入前进程的状态如何,您的有效负载都应始终运行。...一次性应用程序域 当 donut 加载一个程序,它会将它加载到一个新的 AppDomain 中。...使用 Donut,我们现在有了一个框架来生成灵活的 shellcode,它可以内存中加载 .NET 程序。这可以与现有技术和工具相结合,以多种方式推进贸易。

    2K00

    .NET Standard中配置TargetFrameworks输出多版本类库

    4、项目,右键【属性】-->【应用程序】--> “目标框架”默认是 .NET Standard 2.0。 ? 也可以修改为其他版本 ? 5、编译项目,查看bin --> debug。...展开每个项查看, 每个版本的程序对应一个单独的依赖项节点。 ? 8、项目,右键【属性】-->【应用程序】--> “目标框架”被禁用,因为单个项目支持多版本类库,无法一次呈现多个,这是正确的。 ?...> 二、引用本地程序 在下图中可以看出由于3个不同的输出类库中所引用的程序是不同的,那么当编译,一定是每个类库进行单独编译,这时就就需要通过某种方式告诉编译器当前编译的类库版本是什么,然后添加针对具体版本的第三方程序引用....NET Standard 指定多个目标框架,可有条件地为每个目标框架引用程序。...展开所有依赖项,.NET Framework 4.0 与 .NET Framework 4.5 都已经正确引用。 ? .NET Standard 2.0 程序及引用有警告。

    3K21

    C# 学习笔记(1)—— 起步

    委托事件 C# 1.1 .Net Framework 1.1 Visual Studio .Net 2003 2003.4 APM C# 2.0 .Net Framework 2.0 Visual Studio...WPF提供了更大的灵活性和更漂亮的外观 Web 应用程序 .Net Framework提供了ASP.Net技术来帮助我们实现Web应用程序。....Net Framework 基础类库(BCL) .Net Framework类库就是一组DLL程序的集合,包含了大量定义好的类型,这些类型都公开了一些功能。...我们可以使用这些公开的功能开发出多种应用程序,例如Windows Form和Asp.Net应用程序。...因此,在使用FCL中某个类,还必须要知道该类所在的命名空间 C# 代码执行过程 执行步骤如下: 1、C#代码编译为中间语言代码 2、中间语言代码编译为本机代码 第一个步骤是由对应语言的编译器去做编译工作

    24121

    开源Mono框架将C#编程带到iPhone、Android和Wii

    这可能会让那些熟悉苹果应用程序限制政策的人感到意外,因为苹果公司严格禁止开发者使用解释语言和第三方运行环境——在很大程度上就将.NET和Java之类技术排除在外。...Mono还允许开发者使用ahead-of-time(AOT)编译,它能将.NET的通用中间语言(CIL)直接在编译中转变成原生码,这意味着应用程序不必要使用运行时编译执行技术(JIT),以在运行时产生原生码...de Icaza提到,开发者还开始使用Unity,基于Mono的开发3D游戏的第三方商业编程框架。 目前App Store中大约40款应用程序是基于Unity和Mono。...New Profiler engine 新版Profiler解决了原先的Profiler在处理多线程、multi-appdomain应用程序以及大数据量的诸多问题,GC新增的触发事件让开发者可以针对自己的程序编写更先进的...VB编译器用cecil/light取代原来的Reflection,这样可以通过一个编译器生成使用不同版本运行时的程序

    2K70

    .NET平台系列13 .NET5 统一平台

    名称中删除了“ Core”,以强调这是.NET未来的主要实现。与 .NET Core 或 .NET Framework 相比,.NET 5.0 支持更多类型的应用程序和平台。   ...通过ClickOnce客户端应用程序发布,单文件应用程序,减小的容器映像大小以及添加的Server Core容器映像,应用程序部署选项更好。...对于.NET 5.0应用程序和库,NET5.0目标框架名字对象(TFM)组合并替换 netcoreapp 和 netstandard TFMs。...它不包括语言更改,但进行了改进以支持.NET Core上的Visual Basic应用程序框架。   C#源代码生成器是C#编译器的一项重要重要新功能。...它使用顶级程序,记录,模式和开关表达式。还对其进行了更新,以利用.NET库中完整的可空注释。我们还更新了.NET IoT文档。

    1.2K20

    windows的server服务_windowsserver是什么

    当客户端第一次获取一些数据的时候,如ASP.NET应用程序用户提供一些信息资料,或者数据库中读取的信息,它可以使用AppFabric Caching Services客户端类库将一个唯一的名称和这些信息一起存放在缓存群集中...AppFabric 托管服务结合 WAS 使用,为中间层 WCF 和 WF 应用程序提供可靠的宿主环境。WAS 提供的功能有: 应用程序和工作进程的基于消息的激活。...WCF 和 WF 应用程序可直接 Web.config 文件激活,并且不要求单独的 .svc 文件。 虽然简化的托管服务不需要服务文件,但这并没有影响 WAS 所采用的基于消息的激活技术。...在 WAS 中托管服务,将不会创建服务实例,直到接收到递送至该服务的消息。这表示最初服务启动,必须通过分配内存、加载库以及创建对象等方式初始化新的实例。...出现如下错误 园子里文章: WF4.0实战(二十):Windows Server AppFabric介绍 WF4.0实战(二十一):Windows Server AppFabric中宿主WF4.0应用程序

    1.4K20

    《ASP.ENT Core 与 RESTful API 开发实战》-- 读书笔记(第2章)

    .NET Standard,包含集合、文件系统、JSON、异步等API Roslyn 编辑器:用于将 C# 或 VB.NET 代码编译为程序 .NET Core CLI 工具:用于构建 .NET Core...应用程序和类库 .NET Core 采用包化的管理方式,应用程序只需要获取需要的组件即可 2.2 .NET Standard 简介 .NET Standard 是一套 .NET 规范或标准,它定义了所有...Core 是免费、开源、高性能而且跨平台的 Web 框架,用来构建 Web 应用程序 ASP.NET Core 具有以下优点: 跨平台,能够在 Windows、macOS 和 Linux 系统上开发、...和 Docker 上进行托管或者在当前进程内自托管 当目标框架为 .NET Core ,支持并行应用版本控制 简化新式 Web 开发工具 开源和以社区为中心 ASP.NET Core 2.1 新增特性...函数运行,这与控制台程序完全一样 Startup.cs:应用程序启动的配置类,用于配置 ASP.NET Core 应用程序中的服务、中间件、MVC 和异常处理等

    97910

    国内 Mono 相关文章汇总

    MonoDevelop 1.0 和 Mono 1.9(2.0 beta)发布了 Mono 2.0正式发布了 Mono运行于IPhone之上 利用Mono-cecil实现.NET程序的重新签名,重新链接相关库的引用...mono2.8.2和jexus4.1运行.net3.5下的MVC2.0过程记录 OS X 上使用.NET开发应用程序 C#开发Android应用的必备——Mono for Android V1.0 发布...Ubuntu安装Mono2.10并使用Apache承载Asp.Net mvc3应用程序 为你的.NET/Mono应用程序加入更新支持NetSparkle 使用Mono Runtime Bundle制作安装包让...使用LogMaster4Net实现应用程序日志的集中管理 Centos 6.6 下搭建php5.2.17+Zend Optimizer3.3.9+Jexus环境 Mono 4.0 Mac上运行asp.net...) 基于Mono和VSCode打造轻量级跨平台IDE .NET作品:linux下的博客程序 .NET作品:linux下的.net mvc cms 欢迎各位热心Linux平台.NET应用程序开发,特别是希望基于

    11.2K60

    .Net 框架

    大家知道,过去使用VC++生成的可执行文件,经过预编译、编译、汇编、链接几个步骤后,最终生成的可执行文件中就已经包含了处理器的本地代码(Native Code),支持它运行的只是操作系统和本地的机器指令...为了进一步了解程序,我们再来做一个试验,使用VB.NET创建一个控制台应用程序项目(ConsoleAppVB),并生成一个程序,代码功能和上面用C#创建的项目是一样的的。...现在看到的这些程序引用,都是微软认为很常用的,几乎是每个项目都会使用到的,所以在创建项目自动添加了进来,免得开发者再手动进行添加。...为了让熟悉C++语言的开发者也能在.NET框架上开发应用程序,微软推出了面向.NET的C++/CLI语言(也叫托管C++),它就是符合CTS的C++改版语言,为了满足CTS规范,它被限制为了只能继承自一个基类...由于CLR本身用于管理托管代码,因此它是由非托管代码编写的,并不是一个包含了托管代码的程序,也不能使用IL DASM进行查看。

    1.9K21

    快速入门系列--CLR--01基本概念

    当涉及到程序版本,注意查看全局程序缓存GAC(Global Assembly Cache),路径为c:\windows\assembly,还有几个相似的.net framework路径,同时可以使用...其他特性包括:自动属性、数组和局部变量的隐式类型、对象和集合的初始化程序、匿名类型。 C#4.0,主要集中于提高互操作性的动态类型。小特性包括命名实参、可选参数、更好的COM交互性、泛型可变性。...框架库特性一览 NET 2.0,ASP.NET添加母版页、预编译功能;WinForm添加TableLayoutPanel等布局类;通过双缓存、新的数据绑定模型、ClickOne部署增强性能;BackgroudWorker...用于在多线程应用程序中更新UI。...CLR 4.0:改进了互操作封装性能、一致性IL Stubs Everywhere即IL的一致性、提供更加完善的安全模型、支持同一进程同时执行不同CLR,但最主要确实对程序员透明的垃圾回收。

    1.3K60
    领券