如果我有一个用.NET 4编译的库并从.net 4.5可执行文件中引用它,那么该库中定义的操作的哪个版本将执行?
我有一个内置于.net 4.5的cli应用程序,并引用.net 4和.net 4.5项目,我想知道两者是否会使用相同版本的ADO.net组件。
答案 0 :(得分:5)
它们都将在同一个CLR中运行(在这种情况下为4.5)。
使用.NET< = 3.5,您可能会遇到同一程序集的多个版本将被加载的情况(因此,可能会发生ADO.NET将加载版本4.0并在同一应用程序域中加载4.5)。据我所知,他们要么用CLR 4.0来消除它(或者至少让它变得更少)。
编辑:BTW - CLR(运行代码的运行时)与正在加载的程序集的版本之间存在差异。
CLR的版本控制着流程的功能 - 它可以做什么,它可以加载哪些版本的程序集。例如,CLR 4.5可以加载几乎所有的程序集(1.0 - > 4.5)。它们都将在4.5 CLR下运行。最重要的是,您无法在同一进程中从同一个compat band运行两个版本的CLR。 CLR 4.5和4.0都被认为是相同的compat带,因此任何一个或另一个都将加载。 CLR 1.0,1.1,2.0,3.0和3.5都被认为是在同一个compat频段,所以只有其中一个可以加载。但是,您可以同时加载CLR 3.5和CLR 4.5。