【问题标题】:Missing compiler required member 'microsoft.csharp.runtimebinder.binder.convert'缺少编译器所需的成员“microsoft.csharp.runtimebinder.binder.convert”
【发布时间】:2018-04-03 19:02:52
【问题描述】:

我第一次使用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];

请告诉我缺少什么?谢谢!

【问题讨论】:

  • MissingMethodException 是一个 DLL Hell 问题。 Microsoft.CSharp.dll 非常不寻常,它的版本并不多。使用 Fuslogvw.exe 并记录所有绑定,向我们展示您获得的跟踪信息。

标签: c# excel


【解决方案1】:

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

【讨论】:

  • 这就像一个魅力,我在运行返回“动态”类型的 UnitTest 时遇到了这个问题。谢谢。
  • 给那些路过这里的人。我新创建的 .NET Standard 包出现此构建错误,因此我添加了 Microsoft.CSharp Nuget package然后关闭并重新打开 Visual Studio
  • 我在进行单元测试后遇到了问题。谢谢。
【解决方案2】:

除了@Alex Ghiondea 所说的,请转到您项目的参考部分:

右键单击参考并检查提示选项。

  1. 单击添加引用,将出现带有左侧菜单(程序集、项目、COM 和浏览)的模式。
  2. 点击程序集
  3. 检查 Microsoft.CSharp 并单击确定。
  4. 清理并构建您的项目,错误应该会消失。

【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

      添加 Microsoft.CSharp 的引用 使用 NuGet 到您的项目。

      Install-Package Microsoft.CSharp -Version 4.7.0 代表项目

      【讨论】:

        【解决方案5】:

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

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

        【讨论】:

        • 如果您有新问题,请点击 按钮提出问题。如果有助于提供上下文,请包含指向此问题的链接。 - From Review
        • 我遇到了与此完全相同的问题,并且不得不做额外的事情来解决它,因此得到了额外的响应。此外,事实证明,如果不更新解决方案的其余部分,我就无法更新一个项目,这是不行的,因此使用其他地方未提供的替代解决方案进行编辑。
        • 非常感谢您的留言。我一直在为 3.5 项目寻找解决方案。
        • EmbedInteropTypes = False 正是我所需要的——非常感谢!
        【解决方案6】:

        右键单击项目名称(在解决方案资源管理器中), 添加引用:Microsoft.CSharp 在程序集中,然后再次右键单击并清理。 就是这样。

        【讨论】:

          【解决方案7】:

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

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2016-11-28
            • 2011-05-20
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-04-17
            • 2011-09-26
            • 2023-03-05
            相关资源
            最近更新 更多