错误“名称空间'System.Web'中不存在类型或名称空间名称'Script'”背后是不是有解释
Posted
技术标签:
【中文标题】错误“名称空间\'System.Web\'中不存在类型或名称空间名称\'Script\'”背后是不是有解释【英文标题】:Is there an explanation behind the error "The type or namespace name 'Script' does not exist in the namespace 'System.Web'"错误“名称空间'System.Web'中不存在类型或名称空间名称'Script'”背后是否有解释 【发布时间】:2012-05-07 15:56:30 【问题描述】:我在 Visual Studio Express 2010 中创建了一个“ASP.NET 空网站”。
在 App_Code 的代码文件中,我有一行“using System.Web.Script.Serialization;”
当我将文件推送到服务器时,出现以下错误:
异常消息:c:\inetpub[....]\Extensions.cs(10):错误 CS0234: 命名空间中不存在类型或命名空间名称“脚本” 'System.Web'(您是否缺少程序集引用?)
(服务器运行 Windows Server 2008,安装了 IIS 7 和 ASP.NET 4.0。)
因为这是一个网站,而不是一个网络项目,所以我无法使用此处推荐的“发布”功能:The type or namespace name 'Script' does not exist in the namespace 'System.Web'
最后,经过一番挖掘,我发现这个命名空间包含在 System.Web.Extension 程序集中,我必须手动通过 web.config 包含它:
<compilation debug="true" targetFramework="4.0">
<assemblies>
<add assembly="System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
</assemblies>
</compilation>
那么,我的问题:有没有更好的方法来解决这个问题?
由于我的本地项目不需要这些,我如何首先确定我需要手动引用哪些程序集,其次,我如何获得进行引用所需的信息(即,我如何获得PublicKeyToken)?
更新
因为这是一个网站而不是一个 Web 项目,所以我的参考列表不会显示直到我手动将它们添加到 Web.Config。
因此,在这种情况下,选择“复制本地”为“真”是行不通的。
【问题讨论】:
【参考方案1】:看起来您的提供商在 GAC 中没有 dll System.Web.Extensions
。
命名空间System.Web.Scripts
是System.Web.Extensions.dll
的一部分。
如果你这样做,你可以解决你的问题。
-
在您的项目引用中选择
System.Web.Extensions
转到属性选项卡并将Copy Local
设置为true
这可确保您也部署此 dll。
【讨论】:
如果我在 VS Express 中查看网站,当我点击查看参考文献时,列表是空的(除非我先手动将它们添加到 web.config),因此我可以不要将“复制本地”设置为“真”。我认为如果它是一个实际的 Web 项目,而不仅仅是 VS 中的一个简单的网站,这将起作用。【参考方案2】:只需添加 System.Web.Extensions 作为对您项目的引用。您不必通过 web.config 手动执行此操作。将 Copy Local 设置为 true 以确保它包含在您的发行版中。
【讨论】:
【参考方案3】:您可以在您的网站项目中右键单击项目名称/位置并选择添加引用...。从那里将显示一个对话框。选择 .NET 选项卡并选择 System.Web.Extensions。这应该将其添加到项目中。您可以对需要添加的任何命名空间执行此操作。
【讨论】:
【参考方案4】:我的问题类似,因为我正在做一个 WPF 应用程序。添加 Extensions 引用不足以让 Intelisense 检测到我需要使用什么来实例化 javascriptSerializer。后来我发现我需要使用 System.Web.Script.Serialization 添加;然后它终于奏效了:)
【讨论】:
以上是关于错误“名称空间'System.Web'中不存在类型或名称空间名称'Script'”背后是不是有解释的主要内容,如果未能解决你的问题,请参考以下文章
Pig 安装错误:错误 pig.Main:错误 2998:未处理的内部错误