【问题标题】:The type or namespace name 'Web' does not exist in the namespace 'System'命名空间“系统”中不存在类型或命名空间名称“Web”
【发布时间】:2016-02-22 11:16:06
【问题描述】:

我正在.NET Core 中构建一个项目,我需要在其中使用框架程序集System.Web.Extension。我通过Reference -> Add Reference -> System.Web.Extension 4.0.0.0 安装程序集。安装后,它会出现在DNX 4.5.1 -> FrameworkAssemblies 下。包恢复也成功了。

以下条目按预期添加到project.json 文件中。

“frameworkAssemblies”:{“System.Web.Extensions”:“4.0.0.0”}

但是当我尝试使用dnu build 编译项目时,出现以下错误!

D:\Projects\ColemanApi\src\ColemanApi\Controllers\ValuesController.cs(7,14): DNXCore,Version=v5.0 错误 CS0234: 名称空间中不存在类型或名称空间名称“Web” System'(您是否缺少程序集引用?)

D:\Projects\ColemanApi\src\ColemanApi\Controllers\ValuesController.cs(51,27): DNXCore,Version=v5.0 错误 CS0246: 找不到类型或命名空间名称“JavaScriptSerializer”(您是缺少 using 指令或程序集引用?)

我关注this post,但它没有适用于 .net 5 的解决方案,或者我不知道如何在 .net 5 中使用 Copy Local,因为我没有看到任何 Properties 选项在 Assembly 的弹出菜单中。

请看附图:

这是编译错误的截图:

请有人帮忙。我完全搞砸了!

更新

我运行了dnu list,它显示System.Web.Extensions 已解决。请看下面的截图:

提前致谢。

【问题讨论】:

  • System.web.Extensions 在 Core Clr 中不存在,因此问题不在于程序集引用,而是 dnxcore50 的附加构建。如果您从 project.json 中删除“dnxcore50”,错误应该会消失。但是,由于该参考,您将无法构建 coreclr。
  • 删除“dnxcore50”编译没有错误。但是,如果我取出“dnxcore50”,这是否会扰乱项目?如果是这样,是否有任何替代解决方案可以在不删除“dnxcore50”的情况下反序列化 JSON 字符串?
  • frameworks 对象基本上是告诉dnxdnx451(桌面clr)和dnxcore50(新CoreCLR)交叉编译您的应用程序。 System.Web.Extensions 在新的 CoreCLR 上不可用,所以对于你的情况,你不能为这两个框架交叉编译你的项目,你只能为桌面 clr 编译

标签: .net-core dnx javascriptserializer dnx50 system.web.extensions


【解决方案1】:

如果是这样,是否有任何替代解决方案可以在不删除“dnxcore50”的情况下反序列化 JSON 字符串?

JSON.Net 提供了这个功能。如果你想在 Core 上使用它...

https://github.com/JamesNK/Newtonsoft.Json/issues/618#issuecomment-186441534

在 .NET Core RC2 之前不会有任何进展。当它发布时,我将创建一个 netstandard 版本并发布一个新版本的 Json.NET。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-13
    • 1970-01-01
    • 2013-03-17
    • 1970-01-01
    • 1970-01-01
    • 2012-06-19
    • 1970-01-01
    • 2012-05-28
    相关资源
    最近更新 更多