您需要注释掉对 System.Web.Extensions 和 System.Web.Extensions.Design 的旧引用,并在 web.config 中添加 3.5 的引用:
<!-- <add assembly="System.Web.Extensions.Design, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> -->
<!-- <add assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> -->
<add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add assembly="System.Web.Extensions.Design, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
为防止它们被重新添加,您需要使用 gacutil 从 GAC 中删除 1.0 版本:
C:> cd C:\Program Files\Microsoft Visual Studio 8\SDK\bin
C:\Program Files\Microsoft Visual Studio 8\SDK\bin>gacutil /u "System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
如果您必须删除引用,您可以尝试
gacutil /u /r "System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" FILEPATH C:\WINDOWS\system32\msiexec.exe "Windows Installer"
http://msdn.microsoft.com/en-us/library/ex0ss12c(v=VS.71).aspx 将是您的语法参考。以上是我试图从 Windows 安装程序中删除对 DLL 的引用,但它不起作用,因为它是注册表引用,而不是 FILEPATH 引用,或者一个 FILEPATH 可以删除,我猜。无论我需要什么,网站上都没有提供。因此,我进入了“System.Web.Extensions”的注册表。我在 HKEY_CURRENT_USER\Software\Microsoft\Installer\Assemblies\Global 下找到了它的条目,以及它的“设计”版本。在我删除了 2 个条目后,我可以使用我在那里的第一个 gacutil 命令删除它们(为“设计”重新运行它)。 &%$# 微软!!!
-汤姆
附:如果您没有 VS 2005 的 SDK,您也可以在 C:\WINDOWS\Microsoft.NET\Framework\v1.1* 中访问 gacutil。或者直接转到 C:\WINDOWS\Assembly 并找到正确的(小心!!)然后按 Delete。
附言如果您有 AJAX 控制工具包并且它会自动将 1.0 DLL 刷新到您的 Bin 中,您可能会遇到这些“模糊引用”错误之一——它可能不知道是使用 GAC 还是您的 Bin 用于 3.5 DLL。在这种情况下,我必须将这些条目添加到我的 ASPX 页面的顶部:
<%@ Assembly Name="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" %>
<%@ Assembly Name="System.Web.Extensions.Design, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" %>
我可能很容易将它们制作为 1.0 版本,然后看看是否可行...