使用C#动态编译的ASP.NET Core 1.1缺少编译器所需的成员'Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo.Create'

Sim*_*tes 5 c# asp.net-core asp.net-core-1.1

我正在使用Visual Studio 2017 RC并启动了一个针对完整.NET Framework的新ASP.NET Core项目.

这行代码不会编译.

 dynamic handler = _container.GetService(handlerType);

 if (handler == null) _logger.LogError("Can't find handler to handle " + cmd.GetType().Name);
Run Code Online (Sandbox Code Playgroud)

我收到以下错误

CS0656  Missing compiler required member 'Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo.Create'
Run Code Online (Sandbox Code Playgroud)

经过一些谷歌搜索后,看起来这是因为我错过了Microsoft.CSharp程序集.有很多人偶然发现了他的问题,但似乎没有使用.NET Core 1.1.

所以我做了这个Install-Package Microsoft.CSharp并获得了4.3.0版本.我的项目仍然无法建立.

如果我将程序集引用添加到Microsoft.CSharp(GAC的版本),那么它将编译并运行.

这是一个Bug吗?我原本期望NuGet包能解决这个问题吗?

She*_*iff 13

只需添加 Microsoft.CSharp.dll 的引用,您的错误将被删除。


Ram*_*yev 6

我遇到了这个问题。我为我解决了这个问题。您必须Microsoft.CSharp从 nuget将库安装到您的解决方案中。

您可以使用包管理器控制台安装Microsoft.CSharp。例如,如果要安装 Microsoft.CSharp 4.7.0 版本,则必须在包管理器控制台上运行此命令:

Install-Package Microsoft.CSharp -Version 4.7.0
Run Code Online (Sandbox Code Playgroud)

Nuget 链接:Microsoft.CSharp