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

rec*_*ive 28 c# roslyn .net-core .net-standard-1.6

我正在尝试dynamic在C#.net核心应用程序中使用一个变量,该应用程序的目标是.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": {} }
}
Run Code Online (Sandbox Code Playgroud)

Program.cs中

using System;

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

当我尝试构建它时,我在Console.WriteLine(hello);说这个时遇到了构建错误.

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

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

Set*_*Set 51

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

  • `Microsoft.CSharp`依赖于`System.Dynamic.Runtime`,因此您不需要同时添加它们. (6认同)
  • @recursive:我同意。我还必须添加所有这三个。也许这与它是一个 .NET Standard 项目有关? (3认同)
  • 我最终不得不添加以下依赖项和版本:“ System.Dynamic.Runtime”:“ 4.0.11”,“ Microsoft.CSharp”:“ 4.0.1”,“ Microsoft.NETCore.Runtime.CoreCLR”:“ 1.0 .4“。它现在可以构建和运行。 (2认同)

Hon*_*ong 23

右键单击项目>管理NuGet包...>添加以下两个突出显示的包: 在此输入图像描述


svi*_*ick 5

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

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