2.0 / 3.5组件并排

时间:2009-06-12 18:25:34

标签: .net-3.5 .net-2.0

我有一个Web应用程序,我期望从两个独立的提供程序集成程序集中的功能。一组(Set1)程序集构建在.NET 2.0上,而程序集 绝对 的另一组(Set2)需要.NET 3.5。要使Set2程序集正常工作,我必须在web.config中添加( system.codedom )部分并指定v3.5编译器。但是,这似乎破坏了引用Set1程序集的代码(JIT编译器需要永久性并且请求超时)。当我删除 system.codedom 部分时,引用Set2的应用程序的某些功能会失败。

我们开始这个项目时,知道.NET 2.0和3.5可以毫无问题地共存。有没有办法让这两组装配很好玩?

编辑:以下是system.codedom部分的内容;

  <system.codedom>
<compilers>
  <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CSharp.CSharpCodeProvider,System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" warningLevel="4">
    <providerOption name="CompilerVersion" value="v3.5"/>
    <providerOption name="WarnAsError" value="false"/>
  </compiler>
  <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.VisualBasic.VBCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" warningLevel="4">
    <providerOption name="CompilerVersion" value="v3.5"/>
    <providerOption name="OptionInfer" value="true"/>
    <providerOption name="WarnAsError" value="false"/>
  </compiler>
</compilers>

4 个答案:

答案 0 :(得分:1)

如果您的应用程序域是在.NET 2.0中启动的,则只能加载.NET 2.0程序集。如果您的应用程序域是在.NET 3.5中启动的,那么您将能够毫无问题地加载.NET 2.0和.NET 3.5程序集。

因此,假设您创建了一个Windows应用程序项目并将目标设置为.NET 2.0,那么您将无法加载.NET 3.5程序集。如果您将项目定位到.NET 3.5,2.0程序集和3.5程序集将加载没有任何问题。

答案 1 :(得分:0)

.NET Web应用程序(ASP.NET)没有“3.5运行时”。 ASP.NET 3.5应用程序在2.0运行时运行,3.5“东西”只是添加了必须在机器上安装的库。

你确定在运行它的服务器上安装了3.5吗?

您是否正在重新编译自己的Web应用程序?或者只是更改配置文件?您的应用是什么类型的项目?网站项目? Web应用程序项目?

答案 2 :(得分:0)

CLR在2.0和3.5之间没有变化 - 核心BCL也没有。 3.0和3.5只添加新内容 - 它们与2.0完全兼容。

See link for more info (red/green bits).

答案 3 :(得分:0)

我发生了同样的事情,但那是在运行.net 3.5 / vs2008的测试版时。如前所述,3.5只是一个“附加”。