none
ClosedXMLを導入し実行するとセクション侵入前にエラーが発生した RRS feed

  • 質問

  • ClosedXMLを導入しExcel形式のファイル出力を行うプログラムを構築しています

    ビルドも正常に通りいざ実行すると、当該closedXMLを使用しているファンクションの侵入前にエラーが発生しました

    『FileLoadException はハンドルされませんでした。型:'System.IO.FileLoadException' のハンドルされていない例外が 発生しました 'DocumentFormat.OpenXml, 2.5.5631.0, Dulture=neutral, PublicKeyToken=31bf3856ad364e35'、またはその依存関係の1つが読み込めませんでした。見つかったアセンブリのマニフェスト定義はアセンブリ参照に一致しません。(HRESULTからの例外:0x80131040)』

    Microfost Visual Studio Professional 2015 Version 14.0.23107.0 D14REL

    Microsoft .NET Framework Version 4.6.00081

    ClosedXML 0.87.0.0 ランタイムバージョン v4.0.30319

    DocumentFormat.OpenXML 0.0.1.0 ラインタイムバージョン v4.0.30319

    トラブルシューティングには『ファイルが有効な.NET Frameworkアセンブリであることを確認します。』

    等が記載されていますが、原因がさっぱりです。

    どなたか対応方法をご存知の方、ご教授願います

    2017年6月8日 0:43

回答

  • 行った手順を具体的に書いていただけますでしょうか。前回のスレッドによるとメイン開発はオフライン環境だそうなので、オンライン環境とオフライン環境でのそれぞれの作業を。

    気になるのはDocumentFormat.OpenXml.dllのバージョンです。ClosedXML(今日時点の最新版v0.87.1)をNuGetでインストールしようとすると、今日の時点では自動的にDocumentFormat.OpenXml.dllのv2.5.0またはv2.7.1(「依存関係の動作」の設定によって異なる)がインストールされるようですが、お手元のはv0.0.1.0だそうですね。

    以前、ClosedXMLインストール後に改めてDocumentFormat.OpenXmlを手動でインストールされて起動できなかった方がいらっしゃいましたが…。


    • 編集済み Hongliang 2017年6月8日 2:54
    • 回答としてマーク nkaz0316 2017年6月8日 9:13
    2017年6月8日 2:38
  • またはその依存関係の1つが読み込めませんでした。見つかったアセンブリのマニフェスト定義はアセンブリ参照に一致しません。(HRESULTからの例外:0x80131040)
    最近、これと同じエラーになりました。

    デバッグで実行してもブレイクポイントも効かず意味不明な動きとなっていました。


    ClosedXMLとDocumentFormat.OpenXmlを一度削除し、ClosedXMLのみをインストールしたら治りました。

    Nugetパッケージの管理からClosedXMLをインストールすると、互換性のあるDocumentFormat.OpenXmlを勝手にインストールしてくれるようで、それを知らずに、DocumentFormat.OpenXmlを単品で追加したのがマズかったようです。


    一度削除しても駄目なら、
    いっそ新規に作成し、そこにNugetパッケージの管理からClosedXMLのみインストールして、
    そこにコードをコピペして実行してみて下さい。

    • 回答としてマーク nkaz0316 2017年6月8日 9:15
    2017年6月8日 8:28

すべての返信

  • > 当該closedXMLを使用しているファンクションの侵入前にエラーが発生しました

    「ファンクションの侵入前」というのはどういう意味でしょう? 簡略化したサンプルを作ってそのコードをアップし、どの行でエラーが出るのか示せないですか?

    ClosedXML の .dll は当然入手して参照設定に加えているのですよね?

    Open XML の .dll はどうしました? エラーメッセージを見る限りそれが読み込めないということのように見えます。

    ClosedXML のサイトの Requirements に書いてあるように "To use ClosedXML you must reference the DocumentFormat.OpenXml.dll" ということだそうです。


    2017年6月8日 1:30
  • 行った手順を具体的に書いていただけますでしょうか。前回のスレッドによるとメイン開発はオフライン環境だそうなので、オンライン環境とオフライン環境でのそれぞれの作業を。

    気になるのはDocumentFormat.OpenXml.dllのバージョンです。ClosedXML(今日時点の最新版v0.87.1)をNuGetでインストールしようとすると、今日の時点では自動的にDocumentFormat.OpenXml.dllのv2.5.0またはv2.7.1(「依存関係の動作」の設定によって異なる)がインストールされるようですが、お手元のはv0.0.1.0だそうですね。

    以前、ClosedXMLインストール後に改めてDocumentFormat.OpenXmlを手動でインストールされて起動できなかった方がいらっしゃいましたが…。


    • 編集済み Hongliang 2017年6月8日 2:54
    • 回答としてマーク nkaz0316 2017年6月8日 9:13
    2017年6月8日 2:38
  • またはその依存関係の1つが読み込めませんでした。見つかったアセンブリのマニフェスト定義はアセンブリ参照に一致しません。(HRESULTからの例外:0x80131040)
    最近、これと同じエラーになりました。

    デバッグで実行してもブレイクポイントも効かず意味不明な動きとなっていました。


    ClosedXMLとDocumentFormat.OpenXmlを一度削除し、ClosedXMLのみをインストールしたら治りました。

    Nugetパッケージの管理からClosedXMLをインストールすると、互換性のあるDocumentFormat.OpenXmlを勝手にインストールしてくれるようで、それを知らずに、DocumentFormat.OpenXmlを単品で追加したのがマズかったようです。


    一度削除しても駄目なら、
    いっそ新規に作成し、そこにNugetパッケージの管理からClosedXMLのみインストールして、
    そこにコードをコピペして実行してみて下さい。

    • 回答としてマーク nkaz0316 2017年6月8日 9:15
    2017年6月8日 8:28
  • SurferOnWww 様

    文言が可笑しかったですね

    固定ファンクション内にClosedXMLを使用したExcelファイルの作成処理を記載しており、そのファンクションを呼び出す段階で呼び出し元のCALL文でエラーになるという意味でした。

    OpenXMLのDLLはモチロン導入していましたが、別の方の記載にあるように手動で導入していたためバージョンの不一致によるエラーだったようです。

    当該案件は解決しました。

    ご意見賜りありがとうございました。


    • 編集済み nkaz0316 2017年6月8日 9:09
    2017年6月8日 9:09
  • HongLiang 様

    ご指摘の通りv2.7.1をダウンロードし、Closeと同一のローカルフォルダにコピー後NuGetより適用したのですが、なぜかそのように表示されていました。原因はよくわかりませんが、Close適用の際に自動的に判別されるという事でしたので、ダウンロード可能なすべてのバージョンをローカルコピーし、アンインストール後に再度Closeのみをインストールすると正常に機能しました。

    お騒がせして申し訳ありません。

    2017年6月8日 9:13
  • ustardpudding 様

    ご指導ありがとうございました

    ご指摘の通り、一度アンインストールした後、全バージョンのOpenをローカルコピーしCloseのみをインストールすると自動的にOpenもインストールされました。

    2017年6月8日 9:15