缺少编译器所需的成员' microsoft.csharp.runtimebinder.binder.convert'

时间:2018-04-03 19:02:52

标签: c# excel

我第一次使用Excel用Selenium WebDriver读取c#中的数据,但是当我构建这段代码时,它会弹出一个错误:

  

"缺少编译器所需的成员' microsoft.csharp.runtimebinder.binder.convert'"

使用excel的代码用红色标记:

 excel.Application x1Appl = new excel.Application();
 excel.Workbook x1WorkBook = x1Appl.Workbooks.Open(@"C:\app\o\SearchBy.xlsx");

 excel._Worksheet x1WorkSheet = x1WorkBook.Sheets[1];

请让我知道缺少什么?谢谢!

7 个答案:

答案 0 :(得分:55)

Office的参考程序集通过dynamic返回类型公开。为了能够编译,您需要添加对Microsoft.CSharp.dll的引用。

答案 1 :(得分:28)

除了@Alex Ghiondea所说的内容之外,请转到项目的参考部分:

右键单击引用并检查提示选项。

  1. 点击添加引用,将出现左侧菜单(程序集,项目,COM和浏览)的模式。
  2. 单击“装配”
  3. 检查Microsoft.CSharp并单击“确定”。
  4. 清理并构建项目,错误应该消失。
  5. enter image description here

答案 2 :(得分:10)

如果您的项目面向.Net Core或.Net Standard,则安装Microsoft.CSharp NuGet软件包将解决此错误。

答案 3 :(得分:5)

我使用的是Visual Studio 2017版本15.7.1(不确定这是否重要,但我更新后似乎出现了这个错误)。我有一个针对.NET Framework 3.5的项目。因此,除了为添加Microsoft.CSharp提供的其他答案之外,我还需要将此项目更新为.NET Framework 4.5,然后当我添加引用时Microsoft.CSharp出现在Assemblies下。在此之前,我必须找到DLL的绝对路径,这似乎没有用。

对于那些无法升级到4.5的用户,您可以尝试将csproj文件中所有互操作引用的EmbedInteropTypes设置为False,如下所示:http://answers.flyppdevportal.com/MVC/Post/Thread/b1554cdd-ad9e-4453-b4d6-8eb03da175ea?category=visualstudiogeneral

答案 4 :(得分:2)

右键单击项目名称(在解决方案资源管理器中), 添加参考:组件中的Microsoft.CSharp,然后再次右键单击并清理。 就是这样。

答案 5 :(得分:0)

我也有这个问题。如果右键单击并选择“属性”(突出显示项目),则会有一个复选框显示:自动生成绑定重定向。这为我解决了这个问题。

我正在使用Visual Studio 2017,它是一个C#类库。

答案 6 :(得分:0)

使用NuGet为您的项目添加引用。

enter image description here

Install-Package Microsoft.CSharp -Version 4.7.0用于项目