【问题标题】:ASP.NET Core 1.1 compiling with C# dynamic Missing compiler required member 'Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo.Create'ASP.NET Core 1.1 使用 C# 动态编译缺少编译器需要成员“Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo.Create”
【发布时间】:2017-04-17 05:43:36
【问题描述】:

我正在使用 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 版本)添加程序集引用,则它会编译并运行。

这是一个错误吗?我本来希望 NuGet 包能解决这个问题?

【问题讨论】:

  • 此 NuGet 包用于针对 .NET Standard。对于完整的框架,应该使用 GAC 的版本。没关系。但是 Visual Studio 2017 RC 没有自动添加这个引用可能是一个错误。

标签: c# asp.net-core asp.net-core-1.1


【解决方案1】:

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

您可以使用 Package Manager Console 来安装 Microsoft.CSharp。例如如果要安装 Microsoft.CSharp 4.7.0 版本,则必须在 Package Manager Console 上运行此命令:

Install-Package Microsoft.CSharp -Version 4.7.0

Nuget 链接:Microsoft.CSharp

【讨论】:

  • 安装后,您必须关闭解决方案并重新打开它才能正常工作
  • @ruben 谢谢你的评论。但是我刚安装,没有重新打开项目
【解决方案2】:

只需添加 Microsoft.CSharp.dll 的引用即可消除您的错误。

【讨论】:

    【解决方案3】:

    我在尝试将类型 dynamic 隐式转换为 object 时遇到了这个问题。

        var output = new Dictionary<string, object>(); // <- object
        foreach(var attribute in attributes)
        {
            var attr = attribute as IEntityAttribute<dynamic>; // <- dynamic
            if (attr != null)
            {
                output.Add(attr.GetType().Name, attr.Value);
            }
        }
        return output;
    

    【讨论】:

      【解决方案4】:

      有一个类似的问题。 我想为uses a dynamic object 的 NetFramework 4.6.2 环境创建一个 NetStandartd 2.0 库,并收到错误“Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo.Create”。此错误是由缺少of the Microsoft.CSharp library 引起的。 通过correcting .csproj 文件我可以to make the correct linking

      <Project Sdk="Microsoft.NET.Sdk">
        <PropertyGroup>
          <TargetFramework>net462</TargetFramework>
          <DependsOnNETStandard>netstandard2.0</DependsOnNETStandard>
        </PropertyGroup>
        <ItemGroup>
          <Reference Include="Microsoft.CSharp" />
        </ItemGroup>
      </Project>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-11-28
        • 2011-05-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-30
        相关资源
        最近更新 更多