MSBUILD 4.0在AJAX扩展上失败

问题描述:

我们有一个.Net 2.0 web应用程序,并将解决方案和项目转换为Visual Studio 2010(它们是Visual Studio 2005)。我们正在离开项目,目标是Framework 2.0。该应用程序包含Ajax扩展。我们进行了转换,并可以使用Visual Studio在服务器上成功构建项目。然而,当我们试图通过MSBUILD 4.0来构建项目,我们得到当使用AJAX控件在页面上的错误,如下列:MSBUILD 4.0在AJAX扩展上失败

C:\ WINDOWS \ Microsoft.NET \框架\ v4.0.30319 \ Microsoft.Common.targets(1360,9): 警告MSB3267:主要参考 “System.Web.Extensions程序, 版本= 1.0.61025.0文化=中性, 公钥= 31bf3856ad364e35, ProcessorArchitecture用于= MSIL”,这是 框架程序集,不能被 解决在当前的目标为 框架。 “.NETFramework,Version = v2.0”。为了 解决此问题,请删除 参考“System.Web.Extensions程序, 版本= 1.0.61025.0,文化=中立, 公钥= 31bf3856ad364e35, ProcessorArchitecture用于= MSIL”或 重新定位你的应用程序到 框架的版本,包含 “System.Web.Extensions, Version = 1.0.61025.0,Culture = neutral, PublicKeyToken = 31bf3856ad364e35, processorArchitecture = MSIL”。 [C:\的Inetpub \ wwwroot的\ gmrcwebsite \ GMRCWebsite.vbproj]

C:\ Windows \ Microsoft.NET \框架\ v4.0.30319 \ Microsoft.Common.targets(1360,9): 警告MSB3268:该主参考 “System.Web.Extensions.Design, 版本= 1.0.61025.0文化=中性, 公钥= 31bf3856ad364e35, ProcessorArchitecture用于= MSIL”无法 得到解决,因为它具有在框架组件 间接 依赖性“System.Web.Extensions, Version = 1.0.61025.0,Culture = neutral, PublicKeyToken = 31bf3856ad364e35”其中 可以在目前的 目标框架中没有得到解决。 “.NETFramework,Version = v2.0”。为了 解决此问题,请删除 参考 “System.Web.Extensions.Design, 版本= 1.0.61025.0,文化=中立, 公钥= 31bf3856ad364e35, ProcessorArchitecture用于= MSIL” 或 重新定位你的应用程序到 框架版本,其中包含 “System.Web.Extensions, Version = 1.0.61025.0,Culture = neutral, PublicKeyToken = 31bf3856ad364e35”。 [C:\的Inetpub \ wwwroot的\ gmrcwebsite \ GMRCWebsite.vbproj]

C:\ Windows \ Microsoft.NET \框架\ v4.0.30319 \ Microsoft.Common.targets(1360,9): 警告MSB3268:该主参考 “AjaxControlToolkit, 版本= 1.0.10618.0文化=中性, 公钥= 28f01b0e84b6d53e, ProcessorArchitecture用于= MSIL” 无法 得到解决,因为它具有在框架组件上的间接 依赖 “System.Web.Extensions程序, Version = 1.0.61025。0,文化=中立, 公钥= 31bf3856ad364e35" 这 无法在当前 有针对性的框架解决。 “.NETFramework,版本= 2.0" 版。为了 解决此问题,请删除 参考” AjaxControlToolkit, 版本= 1.0.10618.0,文化=中立, 公钥= 28f01b0e84b6d53e, ProcessorArchitecture用于= MSIL “或 重新定位你的应用程序包含一个 框架 版” System.Web.Extensions程序, 版本= 1.0.61025.0,文化=中性, PublicKeyToken = 31bf3856ad364e35“。 [C:\ Inetpub \ wwwroot \ gmrcwebsite \ GMRC Website.vbproj]

C:\ Windows \ Microsoft.NET \框架\ v4.0.30319 \ Microsoft.Common.targets(1360,9): 警告MSB3267:主要参考 “System.Web.Extensions.Design , 版本= 1.0.61025.0,文化=中立, 公钥= 31bf3856ad364e35, ProcessorArchitecture用于= MSIL”,这是 框架组件,不能 解决了当前目标 框架。 “.NETFramework,Version = v2.0”。为了 解决此问题,请删除 参考 “System.Web.Extensions.Design, 版本= 1.0.61025.0,文化=中立, 公钥= 31bf3856ad364e35, ProcessorArchitecture用于= MSIL” 或 重新定位你的应用程序到 框架版本包含 “System.Web.Extensions.Design, Version = 1.0.61025.0,Culture = neutral, PublicKeyToken = 31bf3856ad364e35, processorArchitecture = MSIL”。 [C:\的Inetpub \ wwwroot的\ gmrcwebsite \ GMRCWebsite.vbproj]

C:\ Windows \ Microsoft.NET \框架\ v4.0.30319 \ Microsoft.Common.targets(1360,9): 警告MSB3268:该主参考 “AjaxControlToolkit, 版本= 1.0.10618.0文化=中性, 公钥= 28f01b0e84b6d53e, ProcessorArchitecture用于= MSIL” 无法 得到解决,因为它具有在框架组件上的间接 依赖 “System.Web.Extensions程序.Design, Version = 1.0.61025.0,Culture = neutral, PublicKeyToken = 31bf3856ad364e35“其中 不能在目前的 目标框架中解决。 “.NETFramework,Version = v2.0”。为了 解决此问题,请删除 参考“AjaxControlToolkit, 版本= 1.0.10618.0,文化=中立, 公钥= 28f01b0e84b6d53e, ProcessorArchitecture用于= MSIL”或 重新定位你的应用程序包含 “系统 框架版本.Web.Extensions.Design, Version = 1.0.61025.0,Culture = neutral, PublicKeyToken = 31bf3856ad364e35“。 [C:\的Inetpub \ wwwroot的\ gmrcwebsite \ GMRCWebsite.vbproj]

...

错误BC30451: 'ScriptManager的' 不是 宣布。由于 达到其保护级别,因此可能无法访问。错误 BC30002:类型 'System.Web.UI。ScriptManager'不是 定义的。错误BC30002:类型 'System.Web.UI.UpdatePanel'不是 定义的。错误BC30002:类型 'System.Web.UI.UpdateProgress'不是 定义的。

这个东西工作得很好,并通过Visual Studio构建和工作正常。我们需要做什么来解决这些错误?

+0

有这个相同的问题,并且由于相同的问题,我们的Web服务将不会在稍后的时间编译。 – Digicoder 2010-06-22 15:17:08

我有同样的问题我自己配置​​的TFS构建服务2008年使用的MSBuild 4.0后。一切工作在转换项目之前,然后转换为2010格式和切换到MSBuild 4突然找不到1.0.61025.0 AJAX库。

原来有一个注册表键缺少,指向MS Ajax扩展的安装位置。

在我开发框应位于(64位OS)的关键

HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\.NETFramework\v2.0.50727\AssemblyFoldersEx\ASP.NET AJAX Extensions 

代替放置在HKEY_CURRENT_USER。 (32位操作系统:删除Wow6432Node部分)

构建服务器密钥完全丢失(没有本地存在的用户配置文件在其注册表配置单元中)。

此键的默认值应指向MS AJAX扩展的安装目录,这在我的情况是

C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET 2.0 AJAX Extensions\v1.0.61025 

重新创建密钥的生成服务器上之后,我们的解决方案的MSBuild 4下成功生成。

到目前为止,它仍然是一个谜,为什么它成功建立(MSBuild 3.5下)。也许程序集搜索算法稍有改变,现在更具限制性。

希望有所帮助。

+0

+1:这对我有用 - 不知道为什么这个工作或没有工作之前 – 2010-11-17 10:13:47

+0

真棒 - 作品一种享受,正如克里斯所说的那样,为什么它在以前工作! – 2010-12-09 17:17:28

+0

男人,你摇滚! – Nissim 2011-11-10 15:16:57