web-dev-qa-db-ja.com

ネット標準1.6を対象とする.netコアアプリの動的参照?

.NET標準1.6を対象とするC#.netコアアプリでdynamic変数を使用しようとしています。 (プラットフォーム?ライブラリ?フレームワーク?メタフレームワーク?)私は最初に実際のアプリケーションでこの問題に遭遇しましたが、最小限の再現に減らしました。

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変数を使用することはできますか?どうやって?

25
recursive

System.Dynamic.Runtime および Microsoft.CSharp を依存関係として追加します。

46
Set

プロジェクトを右クリックし、NuGetパッケージの管理...>次の2つの強調表示されたパッケージを追加します。 enter image description here

22
Hong

ライブラリではなくアプリケーションを作成する場合は、Microsoft.NETCore.AppではなくNETStandard.Libraryおよびnetcoreapp1.0ではなくnetstandard1.6を使用する必要があります。そうすることで問題が解決します。

ライブラリ(またはMicrosoft.NETCore.Appに依存しないアプリケーション)でdynamicを使用する場合は、Microsoft.CSharpを依存関係として追加する必要があります。

5
svick