.NET標準1.6を対象とするC#.netコアアプリでdynamic
変数を使用しようとしています。 (プラットフォーム?ライブラリ?フレームワーク?メタフレームワーク?)私は最初に実際のアプリケーションでこの問題に遭遇しましたが、最小限の再現に減らしました。
_{
"version": "1.0.0-*",
"buildOptions": { "emitEntryPoint": true },
"dependencies": { "NETStandard.Library": "1.6.0" },
"frameworks": {
"netstandard1.6": { "imports": "dnxcore50" }
},
"runtimes": { "win10-x64": {} }
}
_
_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
変数を使用することはできますか?どうやって?
System.Dynamic.Runtime および Microsoft.CSharp を依存関係として追加します。
ライブラリではなくアプリケーションを作成する場合は、Microsoft.NETCore.App
ではなくNETStandard.Library
およびnetcoreapp1.0
ではなくnetstandard1.6
を使用する必要があります。そうすることで問題が解決します。
ライブラリ(またはMicrosoft.NETCore.App
に依存しないアプリケーション)でdynamic
を使用する場合は、Microsoft.CSharp
を依存関係として追加する必要があります。