.NET Standard 대상으로 빌드 시 dynamic 예약어에서 컴파일 오류 - error CS0656: Missing compiler required member 'Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo.Create'
.NET Standard 타깃으로 다음의 코드를 빌드하면,
using System;
namespace ClassLibrary2
{
public class Class1
{
public void Test(object args)
{
dynamic test = args;
Console.WriteLine(test.Length);
}
}
}
이런 컴파일 오류가 발생합니다.
1>C:\temp\ConsoleApp1\ClassLibrary2\Class1.cs(10,31,10,35): error CS0656: Missing compiler required member 'Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo.Create'
1>Done building project "ClassLibrary2.csproj" -- FAILED.
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
검색해 보면,
Using 'dynamic' variables results in build error: "Missing compiler required member 'Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo.Create'"
; https://github.com/xamarin/Xamarin.Forms/issues/2921
iOS에서의 실행 시 JIT 컴파일 미지원으로 그렇다고 합니다. 따라서 명시적으로 dynamic 예약어를 쓰고 싶다면 NuGet을 통해 "Microsoft.CSharp" 라이브러리를 추가하면 되는데... 재미있군요, ^^ 동적 언어에 대한 지원이 C# 4.0부터 추가되었는데 .NET Standard라는 범용성을 얻기 위해 다시 제약을 가하게 되었군요.
[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]