ASP.NET Core 1.1 使用 C# 动态编译缺少编译器需要成员“Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo.Create”
Posted
技术标签:
【中文标题】ASP.NET Core 1.1 使用 C# 动态编译缺少编译器需要成员“Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo.Create”【英文标题】:ASP.NET Core 1.1 compiling with C# dynamic Missing compiler required member '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 没有自动添加这个引用可能是一个错误。 【参考方案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>
【讨论】:
以上是关于ASP.NET Core 1.1 使用 C# 动态编译缺少编译器需要成员“Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo.Create”的主要内容,如果未能解决你的问题,请参考以下文章
使用 C# 代码 ASP.NET Core 运行 SQL 脚本
C# ASP.NET Core Entity Framework Core 异步 ToQueryable 比较
Asp.net Core-在使用 javascript 或 C# 上传之前选择和验证 excel 文件?