6

私はスプレッドシートライトをヌゴットしました。後で使用するには、次の使用法を追加する必要があります。

using DocumentFormat.OpenXml;
using DocumentFormat.OpenXml.Spreadsheet;
using SpreadsheetLight;

最初の 2 つ ("DocumentFormat") が認識されるようにするには、NuGet Microsoft の "Open XML Format SDK" も必要でした。

その最新バージョン、2.5 を入手しました。

ただし、それでも、参照が必要であるというエラーメッセージが表示されました。

タイプ 'DocumentFormat.OpenXml.Spreadsheet.InlineString' は、参照されていないアセンブリで定義されています。アセンブリ 'DocumentFormat.OpenXml, Version=2.0.5022.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' への参照を追加する必要があります。

SpreadsheetLight コードのこの行は、次のメッセージを引き起こしました。

sl.SetCellValue("A1", true); // "sl" is an SLDocument

そのため、NuGot (バージョン 2.6.0.0、ランタイム バージョン v4.0.30319) の参照をプロジェクトから削除し、C:\Program Files(x86)\Open XML SDK\V2 を参照して参照を再度追加しました。 0\lib を開き、「DocumentFormat.OpenXml.dll」を選択します

その後、コンパイラの警告が表示されました:

同じ依存アセンブリの異なるバージョン間で競合が見つかりました。プロジェクト ファイルで「AutoGenerateBindingRedirects」プロパティを true に設定してください。詳細については、 http: //go.microsoft.com/fwlink/?LinkId=294190を参照してください。

ファイル システムから追加した DLL はバージョン 2.5.5631.0 であり、NuGot で参照としてインストールされていたものはバージョン 2.6.0.0 であることに気付きました。ランタイム バージョンも異なります (v4.0.30319 はNuGetting "Open XML Format SDK" ですが、手動で追加した DLL のバージョンは 2.5.5631.0、ランタイム バージョン v4.0.30319 です。

thisによると、.csproj ファイル<AutoGenerateBindingRedirects>false</AutoGenerateBindingRedirects>を true に変更して編集する必要があることがわかりましたが、そこには AutoGenerateBindingRedirects が存在しません。

追加する必要があるかどうか、追加する場合は(どの「ブロック」に)わかりません。私はそれを安全にプレイし、警告エンジンを和らげることを好みます。OpenXml アセンブリが競合を引き起こさないようにするにはどうすればよいですか?

4

3 に答える 3

5

その警告を緩和する (日没まで乗り切る) には、DocumentFormat.OpenXML のバージョンをバージョン 2.0.5022.0 (ランタイム バージョン v2.0.50727) にダウングレードする必要があります。

これは、「Hello World」の例のコードがここにあるためです。

SLDocument sl = new SLDocument();
sl.SetCellValue("A1", true);
. . .

...最初の行で「ファイルまたはアセンブリ 'DocumentFormat.OpenXml, Version=2.0.5022.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' またはその依存関係の 1 つを読み込めませんでした」で失敗しました

バージョン 2.0 が想定されているため、そのファイルの 2.5.5631.0 を削除し、代わりに NuGot "OpenXML SDK 2.0" を削除しました。バージョン 2.0.5022.0 およびランタイム バージョン v2.0.50727 です。

つまり、結局のところ、難解なブール プロパティでプロジェクト ファイルを更新する必要はありません。

ただし、古いバージョンのアセンブリを使用する必要があるというファントッドが得られます。

アップデート

DocumentFormat.OpenXml を使用して「レトロにする」必要性は、ここで裏付けられています。

于 2016-03-22T22:28:32.060 に答える
3

DocumentFormat.OpenXmlバージョン 2.0.5022.0 からより新しいバージョン (たとえば、バージョン ) にリダイレクトすることで、問題を解決でき2.5.5631.0ます。これを行うにはweb.config、新しい<dependentAssembly>アイテムを追加する必要があります。

<configuration>
  ...
  <runtime>
      <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
         ...
         <dependentAssembly>
            <assemblyIdentity name="DocumentFormat.OpenXml" publicKeyToken="31bf3856ad364e35"/>
            <bindingRedirect oldVersion="1.0.0.0-2.0.5022.0" newVersion="2.5.5631.0"/>
         </dependentAssembly>
      </assemblyBinding>
  </runtime>
  ...
<configuration>
于 2016-04-30T22:18:51.477 に答える