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

时间:2016-12-02 10:32:51

标签: 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);

我收到以下错误

CS0656  Missing compiler required member 'Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo.Create'

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

所以我做了这个Install-Package Microsoft.CSharp并获得了4.3.0版本。我的项目仍然没有建成。

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

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

2 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:4)

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

您可以使用 Package Manager Console 来安装 Microsoft.CSharp。例如如果你想安装 Microsoft.CSharp 4.7.0 版本,你必须在包管理器控制台上运行这个命令:

Install-Package Microsoft.CSharp -Version 4.7.0

Nuget 链接:Microsoft.CSharp