【发布时间】: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对象基本上是告诉dnx为dnx451(桌面clr)和dnxcore50(新CoreCLR)交叉编译您的应用程序。System.Web.Extensions在新的 CoreCLR 上不可用,所以对于你的情况,你不能为这两个框架交叉编译你的项目,你只能为桌面 clr 编译
标签: .net-core dnx javascriptserializer dnx50 system.web.extensions