C#.net Windowsデスクトップアプリケーションを使用しています。これらのアプリケーションを他のプラットフォームでも実行したいです。だから、私はMono 2.10をクロスコンパイラとして使用しています。実行中に、予期せずにアプリケーションが終了します
エラー:選択したフォルダーを開けませんでした。
ファイルまたはアセンブリ 'DocumentFormat.OpenXml.dll、version = 2.0.5022.0、culture = neutral、PublicKeyToken = 31bf3856ad364e35'またはその依存関係の1つをロードできませんでした。
ここで何が問題なのかわかりません... openxml sdk2.0をc:\ program files\open xml sdk\v2\lib\DocumentFormat.OpenXml.dllにインストールしました。
また、テスト目的でアプリケーションeXeを同じ場所に配置します...
この問題の解決方法を教えてください...
また、WindowsBase
への参照を設定する必要があります。これは、System.IO.Packaging
(OPCドキュメントとして圧縮された.docx/.xlsx/.pptxを解凍して開くために使用される)を処理するSDKを使用するために必要です。
私自身これに慣れていないので、私がやったことは次のとおりです。
MS Visual Studio 2010 Proを使用しています。
DocumentFormatクラスを使用して、オフにして実行する必要があります。
referencesの下のDocumentFormat.OpenXmlを選択し、そのプロパティを表示して、Copy LocalオプションをTrueに設定して、出力フォルダーにコピーします。それは私のために働いた。
Nuget Package Managerに移動して、openxmlを検索します。そして、DocumentFormat.OpenXmlをインストールします
私のために働いたもの:
ThirdParty
という名前を付けます。ThirdParty
フォルダーに両方ともDocumentFormat.OpenXML.dll
およびWindowsBase.dll
ThirdParty
dirを使用していることを確認してください私のアプリケーションでは、.Netタブの下に「DocumentFormat.OpenXml」への参照を追加するだけで、両方の参照(DocumentFormat.OpenXmlおよびWindowsBase)が常に自動的に追加されます。しかし、それらはBinフォルダーには含まれていません。そのため、アプリケーションを外部サーバーに公開するときは、常にDocumentFormat.OpenXml.dllをBinフォルダーに手動で配置します。または、参照「ローカルのコピー」プロパティをtrueに設定します。
DocumentFormat.OpenXML.dllは、アプリケーションと同じフォルダー、またはASP.NETアプリケーションを開発している場合は「bin」パスに配置する必要があります。ただし、OpenXML SDKがWindows以外のオペレーティングシステムでサポートされているかどうかは定かではありません。サードパーティのソリューションを調べる必要がある場合があります。
はい、この答えは正しいです。唯一の違いは、.dllをプロジェクトのbinフォルダーにコピーすることです。
PCLライブラリと混合すると、上記の問題自体が発生し、WindowsBaseライブラリにSystem.IO.Packagingが含まれているのは事実ですが、それ自体が物理システムの独自のコピーを提供するOpenXMLSDK-MOT 2.6.0.0ライブラリを使用していたことがわかりました.IO.Packagingライブラリ。私にとって欠けていた参照は、csharpプロジェクトで次のように見つけることができました
<Reference Include="System.IO.Packaging, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\..\..\..\packages\OpenXMLSDK-MOT.2.6.0.0\lib\System.IO.Packaging.dll</HintPath>
<Private>True</Private>
</Reference>
XMLSDKのバージョンを2.6にダウングレードすると、この問題は解決されたようです。しかし、物理的なAssembly System.IO.Packaging.dllがあることがわかります。
私にとっての問題は、DocumentFormat.OpenXml.dll
Win7開発ボックスのグローバルアセンブリキャッシュ(GAC)に存在していました。そのため、VS2013でプロジェクトを公開すると、GACでファイルが検出されたため、公開フォルダーへのコピーが省略されました。
解決策:DLLをGACから削除します。
%windir%\Microsoft.NET\Assembly
)OpenXml
を検索GACファイルを削除するより適切な方法があるかもしれません(下記)が、それは私がやったことであり、うまくいきました。 gacutil –u DocumentFormat.OpenXml.dll
お役に立てば幸いです!
プロパティを表示してDocumentFormat.OpenXmlに変更した後、特定バージョンをfalseに変更する必要もありました。