针对净标准1.6的.net核心应用中的动态参考?

时间:2016-09-02 21:15:08

标签: c# roslyn .net-core .net-standard-1.6

我试图在C#.net核心应用程序中使用dynamic变量,该应用程序的目标是.net标准1.6。 (平台?库?框架?元框架?)我在实际应用程序中首次遇到此问题,但我已将其减少到最小的再现。

project.json

{
    "version": "1.0.0-*",
    "buildOptions": { "emitEntryPoint": true },
    "dependencies": { "NETStandard.Library": "1.6.0" },
    "frameworks": {
        "netstandard1.6": { "imports": "dnxcore50" }
    },
    "runtimes": { "win10-x64": {} }
}

Program.cs的

using System;

public class Program {
    public static void Main(string[] args) {
        dynamic hello = "hello world";
        Console.WriteLine(hello);
    }
}

当我尝试构建此内容时,我在Console.WriteLine(hello);上发现了构建错误。

  

CS0656缺少编译器所需的成员' Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo.Create'

是否可以在面向netstandard 1.6的应用中使用dynamic个变量?怎么样?

3 个答案:

答案 0 :(得分:40)

添加System.Dynamic.RuntimeMicrosoft.CSharp作为依赖项。

答案 1 :(得分:21)

右键单击项目>管理NuGet包...>添加以下两个突出显示的包: enter image description here

答案 2 :(得分:5)

如果您正在编写应用程序而不是库,则应使用Microsoft.NETCore.App,而不是NETStandard.Librarynetcoreapp1.0,而不是netstandard1.6。这样做可以解决您的问题。

如果要在库(或不依赖dynamic的应用程序)中使用Microsoft.NETCore.App,则需要添加Microsoft.CSharp作为依赖项。