web-dev-qa-db-ja.com

ファイルまたはアセンブリ 'DocumentFormat.OpenXmlをロードできませんでした

このエラーはVS2013です

Could not load file or Assembly 'DocumentFormat.OpenXml, Version=2.0.5022.0, Culture=neutral、PublicKeyToken = 31bf3856ad364e35 'またはその依存関係の1つ。

私のweb.config

    <?xml version="1.0"?>
<!--
  For more information on how to configure your ASP.NET application, please visit
  http://go.Microsoft.com/fwlink/?LinkId=169433
  -->
<configuration>
    <connectionStrings>
        <add name="hjkom_med_web_udvConnectionString" connectionString="Data Source=M95;Initial Catalog=hjkom-med_web;Persist Security Info=True;User ID=HJkom-MED_web;Password=bvkeB7hh" providerName="System.Data.SqlClient"/>
    </connectionStrings>
    <system.web>
        <compilation debug="true" targetFramework="4.0">
            <assemblies>
                <add Assembly="System.Data.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
                <add Assembly="WindowsBase, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
                **<add Assembly="DocumentFormat.OpenXml, Version=2.0.5022.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>**

</assemblies></compilation>
    </system.web>
</configuration>

私はwindowsbaseや他の多くのものを挿入しようとしました。

ソリューションを検索して検索しましたが、修正方法を知っている人はいますか?

11
SanderDk

Localhostで実行されているコンピューターに新しいバージョンの.dllがインストールされていて、サーバーが同じ.dllの古いバージョンを実行していたため、この問題が発生しました。

私はそれを更新しましたが、その後はすべてうまくいきます。

あなたの場合、これで利用可能なDocumentFormat.OpenXmlバージョン2.5をインストールします Microsoft link

12
Lucas

この回答を書いている時点では、Open XML SDKには3つのバージョンがあります。

ほとんどの場合、プロジェクトで参照しているDLLバージョン2.5はマシンにインストールされています。
必要なv2.0アセンブリを取得するには、上記のNuGetを使用することをお勧めします。

5
HRKoder

この例を見ることができます。

http://www.aspsnippets.com/Articles/Solution-ASPNet-GridView-Export-to-Excel-The-file-you-are-trying-to-open-is-in-a-different-ファイル拡張子で指定された形式.aspx

サンプルをダウンロードし、インポートしました

  • ClosedXML.dll
  • DocumentFormat.OpenXml.dll

dlls(realed dllsはプロジェクトに既にあります。私はそれらを使用しました)。その後、私のエラーはなくなりました。試してみてください。理由はわかりません。しかし、重要なのは私のプロジェクトが今働いていることです。

1
Mahmut EFE

最近同じ問題がありました。

ライブラリで参照されているClosedXMLがあり、コンソールアプリケーションでライブラリを使用すると、参照エラーが表示されます。

これは、DocumentFormat.Excel、ExcelNumberFormat、およびFastMember.Signedがコンソールアプリケーションの出力フォルダーにコピーされないためです。

2つのソリューション:

1)closedXML nugetパッケージとそのすべての依存関係をクライアント(この場合はコンソールアプリケーションプロジェクト)にインストールします。

2)dllをコピーするには、ライブラリでそれらを参照する必要があります。次の関数をライブラリに追加し、静的コンストラクターから呼び出します。

    /// <summary>
    /// This code is here to embeed the following libraries : 
    /// - DocumentFormat.Excel
    /// - ExcelNumberFormat
    /// - FastMember.Signed
    /// </summary>
    private static void EmbeedNeededLibraries()
    {
        Action<Type> noop = _ => { };
        var lib1 = typeof(DocumentFormat.OpenXml.OpenXmlAttribute);
        var lib2 = typeof(ExcelNumberFormat.NumberFormat);
        var lib3 = typeof(FastMember.ObjectAccessor);
        noop(lib1);
        noop(lib2);
        noop(lib3);
    }
0
Thomas Pfrimmer

そのソリューション内のすべてのプロジェクトで、Packages.configファイルをチェックインします。ソリューション内のすべてのプロジェクトで同じである必要があります。参考のため

0