错误 CS0234: 命名空间 'System.Web' 中不存在类型或命名空间名称为 'Script' 的成员。

47

我正在尝试在我的应用程序中使用JavaScriptSerializer

最初我收到了以下错误信息:

找不到 JavaScriptSerializer

我通过添加以下代码解决了这个问题:

using System.Web.Script.Serialization;

但是,子关键字Script被蓝色线条标出:

类型或命名空间“System.Web”中不存在“Script”(是否缺少程序集引用?)。

于是我在项目中添加了一个引用:

C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.0\System.Web.Extensions.dll

但这并没有起到帮助作用。我仍然收到相同的错误提示和蓝色下划线。该引用标有黄色感叹符警告:

enter image description here

我尝试了此线程上建议的解决方案,但正如@user781490所指出的那样,它们并没有在我的情况下起到帮助作用。

任何解决方法吗?


1
那么,你的项目所指向的框架肯定不是客户端配置文件版本,对吗? - Arran
正如上面的用户所说,确保你的项目针对的是.NET 4而不是.NET 4客户端框架。 - Tejas Sharma
2
@Arran 它确实是一个.NET Framework 4 Client Profile,但是:**(1)我不想将它转换为.NET Framework 4(2)**如果你看了那个帖子,你会发现即使对于那些拥有完整的.NET Framework 4的人来说,那些提示也没有帮助。一定有一种方法可以在客户端框架中使用JavaScriptSerializer,对吧? - scatmoi
@TejasSharma 如果我试图将目标框架从 “.NET Framework 4 Client Profile” 更改为 “.NET Framework 4”,我会收到警告,说我的项目可能会发生可怕的事情...因此,当被问及“是否确定要更改此项目的目标框架?”时,我当然会点击“否”。 - scatmoi
你尝试过删除并重新添加 System.Web.Extensions 引用吗? - Forty-Two
我在无法使用JavaScriptSerializer(例如在wcf项目中)时,使用了DataContractJsonSerializer(位于System.Runtime.Serialization.Json命名空间中)。只是一个想法... - Forty-Two
8个回答

54

我遇到了同样的问题。脚本被下划线标记了。 我添加了一个对System.Web.Extensions的引用。此后,该脚本不再被下划线标记。希望这能帮助到别人。


8
我已经添加了对System.Web.Extensions的引用,现在它们两个都被下划线标记了。 - bumbeishvili

40
将System.Web.Extensions作为项目的引用添加进去。 请参考下图操作:enter image description here 供参考。

2
请添加如何到达此菜单的步骤。 - Adnan
1
@Adnan 菜单可以通过 项目 -> 添加引用 来访问。 - Joe Silverstein

13
我找到了这篇MSDN论坛帖子,其中提供了两种解决方案来解决您的问题
第一种解决方案(不建议使用):

找到 .Net Framework 3.5 和 2.0 文件夹

从 3.5 中复制 System.Web.Extensions.dll 和从 2.0 中复制 System.Web.dll 到应用程序文件夹

添加对这两个程序集的引用

更改所引用的程序集属性,将“复制本地”设置为 true 并构建以测试您的应用程序以确保所有代码都可以工作

第二种解决方案(使用不同的类/库):
用户声称Uri.EscapeUriStringHow to: Serialize and Deserialize JSON Data帮助他复制了JavaScriptSerializer的行为。
你可以尝试使用Json.Net。它是一个第三方库,非常强大。

4
参考路径 C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\v3.5 中的 3.5 版本解决了问题。谢谢! - scatmoi
newtonsoft.json是另一个选项。请参考https://dev59.com/v2855IYBdhLWcg3wQx9L了解更多信息。 - Enkode

7
只需添加对 System.Web.Extensions 的引用即可。

1

由于JsonSerializer在.Net 4.0+中已被弃用,因此我使用http://www.newtonsoft.com/json来解决这个问题。

NuGet- > Install-Package Newtonsoft.Json


0

我有一个类似的问题。 在“using System.Threading.Channels;”处失败。

我的解决方案是添加引用“System.Threading.Tasks.Extensions.dll”的参考 System.Threading.Tasks.Extensions.dll


0

我已经尝试过了,你可以添加引用web.extensions(我使用的是.Net框架4.5)


你的回答可以通过提供更多支持信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人可以确认你的答案是正确的。您可以在帮助中心中找到有关如何编写良好答案的更多信息。 - Community

0

我遇到了一个类似的问题,但是是在我自己做的两个项目中出现的。 问题是 .net framework 版本不匹配。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接