web-dev-qa-db-ja.com

不足しているコンパイラに必要なメンバー「Microsoft.csharp.runtimebinder.binder.convert」

私は初めてSelenium WebDriverを使用してc#でデータを読み取るためにExcelを使用しましたが、このコードをビルドするとエラーが表示されます。

「欠落しているコンパイラにはメンバー '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];

何が足りないのか教えてください。ありがとうございました!

27
Excellent

Officeの参照アセンブリは、dynamic戻り型を介して公開されます。コンパイルするには、Microsoft.CSharp.dllへの参照を追加する必要があります。

66

@Alex Ghiondeaの発言に加えて、プロジェクトの参照セクションにアクセスしてください。

参照を右クリックして、プロンプトのオプションを確認します。

  1. [参照の追加]をクリックすると、左側のメニュー(アセンブリ、プロジェクト、COM、参照)のモーダルが表示されます。
  2. アセンブリをクリックします
  3. Microsoft.CSharpを確認し、[OK]をクリックします。
  4. プロジェクトをクリーンおよびビルドすると、エラーが消えます。

enter image description here

35
eduardo92

プロジェクトが.Net Coreまたは.Net Standardをターゲットにしている場合、 Microsoft.CSharp NuGetパッケージをインストールするとこのエラーが解決します。

16
Kolappan Nathan

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

5
brrrrth

私もこの問題を抱えていました。右クリックして[プロパティ](プロジェクトが強調表示されている間)を選択すると、[バインディングリダイレクトを自動生成する]というチェックボックスが表示されます。これは私のためにそれを修正しました。

Visual Studio 2017を使用していますが、これはC#クラスライブラリです。

0
Pat

(ソリューションエクスプローラーで)プロジェクト名を右クリックし、アセンブリ内の参照:Microsoft.CSharpを追加し、もう一度右クリックして[クリーン]をクリックします。それで全部です。

0
Sharif Lotfi