我第一次使用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];
请让我知道缺少什么?谢谢!
答案 0 :(得分:55)
Office的参考程序集通过dynamic
返回类型公开。为了能够编译,您需要添加对Microsoft.CSharp.dll
的引用。
答案 1 :(得分:28)
除了@Alex Ghiondea所说的内容之外,请转到项目的参考部分:
右键单击引用并检查提示选项。
答案 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)