我们最近将我们的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汇编中寻找它,这显然是错误的。
我们试图找出这种差异的起源,但没有运气。
它显着阻碍了我们的工作,因为intellisense不适用于asp组件,也无法调试网页。
但即使在VS中发生此错误,页面在浏览器中显示时也能正常工作(使用IIS),因此这只是VS的问题。
如果你有任何想法,这里可能有什么问题,请告诉我。
由于
答案 0 :(得分: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的大师,我不知道提供的部分有什么问题,但没有它,事情开始奇迹般地发挥作用。