22

我正在使用 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 包解决这个问题?

4

4 回答 4

19

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

于 2020-06-02T06:58:48.477 回答
19

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

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

Install-Package Microsoft.CSharp -Version 4.7.0

Nuget 链接:Microsoft.CSharp

于 2021-01-15T10:02:11.777 回答
0

有一个类似的问题。我想为 NetFramework 4.6.2 环境创建一个 NetStandartd 2.0 库,uses a dynamic object并收到错误“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>
于 2022-02-10T03:47:58.143 回答
0

尝试将类型隐式转换dynamicobject.

    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;
于 2022-02-02T04:47:13.950 回答