不能使用asp.net vnext核心的动态类型

时间:2015-01-09 05:09:31

标签: c# json.net asp.net-core

我需要在ASP.NETt vNext应用程序中读取并保存JSON文件,我想使用dynamic变量来存储使用JSON.net加载的值,但是当我去编译时收到此错误消息:

  

ASP.NET Core 5.0错误CS1980:无法定义使用'dynamic'的类或成员,因为无法找到编译器所需的类型'System.Runtime.CompilerServices.DynamicAttribute'。你错过了参考吗?

怎么能解决这个问题?如果我使用dynamic,我可以使用ASP.NET核心运行应用程序吗?

2 个答案:

答案 0 :(得分:5)

您需要为aspnetcore50框架包含Microsoft.CSharp和System.Dynamic.Runtime软件包。

对于CoreCLR版本1.0.0-beta1来说,这似乎对我有用:

using Newtonsoft.Json.Linq;
using System;

namespace DynamicTest
{
    public class Program
    {
        public void Main(string[] args)
        {

            dynamic dobject = JObject.Parse("{number:1000, str:'string', array: [1,2,3,4,5,6]}");

            Console.WriteLine(dobject.number);
            Console.WriteLine(dobject.str);
            Console.WriteLine(dobject.array.Count);
            Console.ReadLine();
        }
    }
}

project.json

{
    "version": "1.0.0-*",
    "dependencies": {
        "Newtonsoft.Json" :  "6.0.7"
    },
    "commands": { 
        "run" : "run"
    },
    "frameworks" : {
        "aspnet50" : { },
        "aspnetcore50" : { 
            "dependencies": {
                "System.Console": "4.0.0-beta-22231",
                "System.Dynamic.Runtime": "4.0.0-beta-22231",
                "Microsoft.CSharp": "4.0.0-beta-22231"
            }
        }
    }
}

答案 1 :(得分:2)

我正在解决这个问题,还有一个更有用的错误信息......

名称空间'System.Data'

中不存在类型或命名空间名称“Linq”

但是,我在IIS服务器(2012 R2 - IIS 8)上遇到了问题。我读到的关于这些问题的大多数帖子都是在处理他们的开发环境,而不是他们的Web服务器。

为了解决这两个问题,我不得不将System.Core.dll从服务器框架文件夹(%windows path%\ Microsoft.Net \ Framework \ v4.0.30319)复制到我的web应用程序bin文件夹中。

我不清楚为什么这是必要的,但我花了3天时间阅读文档和论坛帖子,但没有任何工作。我们很幸运...

也许这会帮助其他正在挣扎的人。