4

这是我的场景:

我目前正在将我维护的网站从 .Net Framework 3.5 升级到 4.0。我所有的程序集和我的代码都改变了目标框架,它们编译得很好,网站也能正常工作。

这是我的问题/问题。我正在使用 SAP 提供的 Crystal Reports 2010。他们的库被称为“.Net Framework 4.0 的水晶报告”,但该库实际上是针对 2.0 运行时的(更让我感到不满的是,客户端控件具有 1.1 依赖项……说真的)。

我将同时运行 3.5 (2.0 CLR) 和 4.0 (CLR),因为我必须拥有 Crystal Reports,但我想了解这些问题:

  1. 如果在 ASP.NET 4.0 站点中包含此 2.0 程序集,它会对性能产生什么影响(加载它是否需要额外的开销)?
  2. 我是否完全错过了一些东西,是否有针对 4.0 的实际 CR2010 4.0 程序集?
  3. 如果我将我的包装器类隔离在我的主要业务逻辑库之外,那么 2.0 是否仅在它被调用时才被加载/使用(或者当网站加载到内存中时站点是否会加载程序集导致它们都被加载反正)?部分原因是我不知道不同的 CLR 是如何相互加载/交互的。
4

1 回答 1

1

自 .net 4 和 DLR 发布以来,.net 安装了多个版本以并行运行。当 v4 接收到 pre v4 程序集时,它会将执行委托给 pre v4 框架(所有 pre v4 框架都完全向后兼容)

  1. 我认为会有性能影响,但是它应该是微不足道的,可以忽略。
  2. 不知道 :)
  3. 框架组件在很大程度上是按需加载的,它们只会在需要时加载(有些是在加载程序集时,更多是因为 JIT 编译不同的代码段)。所以简而言之,大多数 v2 代码只有在你的代码中被调用时才会被加载、编译(到本机)和执行。
于 2012-03-28T09:18:30.980 回答