8

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

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

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

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

(服务器运行 Windows Server 2008,安装了 IIS 7 和 ASP.NET 4.0。)

由于这是一个网站,而不是一个 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>

所以,我的问题是:有没有更好的方法来解决这个问题?

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

更新

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

因此,在这种情况下,将“复制本地”选择为“真”不起作用。

4

4 回答 4

17

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

命名空间System.Web.ScriptsSystem.Web.Extensions.dll.

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

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

这可确保您也部署此 dll。

在此处输入图像描述

在此处输入图像描述

于 2012-04-26T21:22:14.953 回答
1

您可以在您的网站项目中右键单击项目名称/位置,然后选择添加引用...。从那里将显示一个对话框。选择 .NET 选项卡并选择 System.Web.Extensions。这应该将其添加到项目中。您可以对需要添加的任何命名空间执行此操作。

于 2012-04-26T22:08:43.353 回答
1

只需添加 System.Web.Extensions 作为对您项目的引用。您不必通过 web.config 手动执行此操作。将 Copy Local 设置为 true 以确保它包含在您的发行版中。

于 2012-04-26T21:25:09.320 回答
0

我的问题很相似,因为我正在做一个 WPF 应用程序。添加 Extensions 引用不足以让 Intelisense 检测到我需要使用什么来实例化 JavaScriptSerializer。后来我发现我需要使用 System.Web.Script.Serialization 添加;然后它终于奏效了:)

于 2017-08-17T13:56:13.030 回答