错误背后是否有解释"名称空间'System.Web'中不存在类型或命名空间名称'脚本'"

doc*_*day 7 c# asp.net deployment iis-7

我在Visual Studio Express 2010中创建了一个"ASP.NET空网站".

在App_Code的代码文件中,我有一行"使用System.Web.Script.Serialization;"

当我将文件推送到服务器时,我收到以下错误:

异常消息:c:\ inetpub [....]\Extensions.cs(10):错误CS0234:名称空间'System.Web'中不存在类型或命名空间名称'Script'(您是否缺少程序集引用?)

(服务器运行的是带有安装了ASP.NET 4.0的IIS 7的Windows Server 2008.)

由于这是一个网站,而不是一个Web项目,我无法使用此处提到的"发布"功能:命名空间"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>
Run Code Online (Sandbox Code Playgroud)

所以,我的问题:还有更好的方法吗?

由于我的本地项目不需要这样做,我怎样才能首先确定我需要手动引用哪些程序集,其次,如何获取进行引用所需的信息(即,如何获取PublicKeyToken) ?

UPDATE

因为这是一个Web站点而不是Web项目,所以直到我手动将它们添加到Web.Config 之后才会显示我的引用列表.

因此,选择"复制本地"为"true"在此实例中不起作用.

dkn*_*ack 15

看起来您的提供商System.Web.Extensions在GAC 中没有dll .

命名空间System.Web.Scripts是其中的一部分System.Web.Extensions.dll.

如果你这样做,你可以解决你的问题.

  1. System.Web.Extensions在项目参考中选择
  2. 转到属性选项卡并设置Copy Localtrue

这可以确保您也部署此dll.

在此输入图像描述

在此输入图像描述