不能将动态类型与 asp.net vnext 核心一起使用

cannot use dynamic type with asp.net vnext core

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

ASP.NET Core 5.0 error CS1980: Cannot define a class or member that utilizes 'dynamic' because the compiler required type 'System.Runtime.CompilerServices.DynamicAttribute' cannot be found. Are you missing a reference?

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

您需要为 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"
            }
        }
    }
}

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

命名空间 'System.Data'

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

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

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

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

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