1

我们最近将我们的 asp.net 3.5 解决方案从 VS 2008 切换到 VS 2010,同时仍然希望它在 .net 3.5 中(因为部署服务器仅在 3.5 上运行)

图书馆还可以,但网站给我们带来了问题。我们在每个 aspx 页面上得到的错误信息是这样的:

D:\WebSites\.....aspx: ASP.NET runtime error: Could not load type 'Microsoft.Build.Framework.ITaskItem2' from assembly 'Microsoft.Build.Framework, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.

我发现编译器正在寻找的接口(ITaskItem2)仅在 .net 4.0 中可用,但它一直在 3.5 程序集中寻找它,这显然是错误的。

我们试图找出这种差异的根源,但没有运气。

它极大地阻碍了我们的工作,因为智能感知不适用于 asp 组件,网页的调试也不起作用。

但即使在 VS 中发生此错误,页面在浏览器中显示时也可以正常工作(使用 IIS),所以这是 VS 独有的问题。

如果您有任何想法,这里可能有什么问题,请告诉我。

谢谢

4

1 回答 1

1

所以,经过大量的实验,我设法把事情做好了。

解决方案是让 VS 为网站生成新的标准 web.config,并在其中添加我们正在使用的一些额外选项。

新旧 web.config 之间只有 2 个区别:

<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">

改为

<runtime>
<assemblyBinding appliesTo="v2.0.50727" xmlns="urn:schemas-microsoft-com:asm.v1">

不确定这是否会影响某些事情。

但似乎更重要的是,在非工作 web.config 中有一个附加部分<runtime>

  <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
    <dependentAssembly>
      <assemblyIdentity name="Microsoft.Build.Framework"
       publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/>
      <bindingRedirect oldVersion="0.0.0.0-99.9.9.9" newVersion="3.5.0.0"/>
    </dependentAssembly>
  </assemblyBinding>

我不是 web.config 专家,我看不出提供的部分有什么问题,但没有它,事情开始奇迹般地工作。

于 2013-09-06T13:00:18.693 回答