如果我有一个在.NET 4中编译的库,并从.NET 4.5可执行文件中引用它,那么库中定义的操作将针对哪个框架版本执行?我有一个CLI应用程序,它是在.NET 4.5中构建的,引用了.NET 4和.NET 4.5项目,我想知道它们是否都将使用相同版本的ADO.net组件。
他们都将运行在同一个CLR(在这种情况下是4.5)。在.NET <=3.5中,可能会出现加载同一程序集的多个版本的情况(因此,ADO.NET可能会同时加载版本4.0和4.5)。据我所知,CLR 4.0要么消除了这种情况(或者至少使其发生得更少)。编辑:顺便说一句 - CLR(运行代码的运行时)和加载的程序集的版本之间有区别。CLR的版本控制进程的功能 - 它能做什么,它可以加载哪些程序集的版本。例如,CLR 4.5可以加载几乎所有程序集(1.0->4.5),它们都将在4.5 CLR下运行。除此之外,您不能在同一进程中运行同一兼容性组中的两个CLR版本。CLR 4.5和4.0都被认为是相同的兼容性组,因此只能加载其中一个。CLR 1.0、1.1、2.0、3.0和3.5都被认为属于同一兼容性组,因此只能加载其中一个。但是,您可以同时加载CLR 3.5和CLR 4.5。