2016-09-22 8 views
0

私は最終的にAzureで動作するASPNET Core/EF Core/MVC 6 Webサイトを構築しています。私は前に遭遇したことのない依存関係DLLを含む奇妙な問題にぶち当たっています。System.IO.Compression DLLが見つからない可能性のあるバージョンの衝突

解決策はいくつかのプロジェクトで構成されています。それらのうちのいくつかはZipArchiveを介してzipファイルを操作するので、System.IO.Compressionに依存します。ソリューションは問題なくコンパイルされます。

ただし、System.IO.Compression DLLは最終的なbinディレクトリにコピーされませんでした。そのため、サイト内でそのアセンブリ内のルーチンにアクセスしようとするとクラッシュすることがありました。

System.IO.Compression.dllを最終的なbinディレクトリに手動でコピーすることで、この問題を "解決"しました。サイトは私の開発システム上で正常に動作します。

サイトをAzureに公開すると、System.IO.Compression.dllが展開されず、欠落しているアセンブリにアクセスしようとするとAzureサイトがクラッシュします。

不足しているDLLをAzureに手作業でコピーできるかどうかはわかりませんが、それが1つの解決策だと思います。

しかし、これはすべてkludgyを感じ、私は何かが欠けているようです。

私は戻って、各プロジェクトの参考文献を見て、奇妙なことに気づいた。

"補助"プロジェクト - ConnellData - 参照を表示すると、期待どおりSystem.IO.Compression、v4.1.0への依存関係が表示されます。

ConnellDataに依存する「メイン」プロジェクトを見て、ConnellDataの参照を展開すると、System.IO.Compressionに依存しますが、バージョン4.0.10に依存します。

これはDLLの問題に関連しているかどうかわかりませんが、そのように思われます。

この問題を解決する方法についてのご意見やご提案は大変ありがたいです。

+0

私が知っているように、dllが見つからない場合はAzureにアップロードしてください。問題を解決するのに役立ちます。しかし、重要なことは、DLLの競合を修正することです。 –

答えて

0

問題は解決しやすくなりました...しかし、診断するのは難しいです。

"frameworks": { 
    "net46": { 
    } 
    }, 

はまた、依存関係を述べ、依存関係のセクションの下で、System.IO.Compression用:

マイproject.jsonファイルには、次のフレームワークのエントリを持っていました。

残念ながら、それは>>別です< < System.IO.Compression、Net Coreの一部です。組み込みのnet46アセンブリSystem.IO.Compressionとして使用していたもの。このプロジェクトでは、あなたがframeworkAssembliesセクションではなく、依存関係のセクションに追加する必要があることを含めるに

"frameworks": { 
    "net46": { 
     "frameworkAssemblies": { 
     "System.IO.Compression": "4.0.0.0" 
     }, 
    } 
    }, 

これを行うには、net46バージョンに頼っていた私の溶液中のプロジェクトの各ですSystem.IO.Compressionを削除し、DependenciesセクションからSystem.IO.Compressionエントリを削除すると、問題が解決しました。

関連する問題