BadImageFormatException - 如何在我的 Windows Phone 8.1 应用程序中引用 System.IO.Compression?

BadImageFormatException - How to reference System.IO.Compression in my Windows Phone 8.1 app?

我需要参考 System.IO.Compression 在我的 Windows Phone Silverlight 中使用 ZipArchive class 8.1 应用程序。我用 Object Explorer 添加它,所以它将 dll C:\Program Files\Reference Assemblies\Microsoft\Framework.NETCore\v4.5.1\System.IO.Compression.dll 复制到我的根路径项目,它被复制到 .xap 包中。

我可以构建,但当我到达使用此库的代码(ZipArchive 实例化)时,我的应用程序在运行时崩溃。我得到:

Could not load file or assembly 'System.IO.Compression, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' or one of its dependencies. Reference assemblies should not be loaded for execution. They can only be loaded in the Reflection-only loader context. (Exception from HRESULT: 0x80131058)

有 innerException

System.BadImageFormatException: Cannot load a reference assembly for execution.

我对 BadImageFormatException(例如 Troubleshooting BadImageFormatException)的研究经常说 dll 用于 64 位处理器,它用于 32 位系统 但我不知道什么是我应该用于 Windows Phone.

的好 dll

我注意到我在 C:\Program Files\Reference Assemblies\Microsoft\Framework\WindowsPhoneApp\v8.1 中还有另一个 System.IO.Compression.dll 但是我无法通过 Visual Studio 导入它,如果我手动复制它,我会得到同样的 BadImageFormatException 错误。 在 C:\Program Files\Reference Assemblies\Microsoft\Framework\WindowsPhone\v8.1 文件夹中,我有一个 System.IO.Compression.xml 文件,但是不是 dll。

我哪里错了?我怎样才能使用这个命名空间来处理我的代码?

参考程序集通常不包含任何实际代码——它们只是关于类型的元数据(有点像 C++ 中的头文件)。因此,当 .NET 尝试在运行时使用程序集时,没有实现。

考虑在 WP 8 上使用 Microsoft.Bcl.Compression 进行压缩。