C# 无法正确加载基础压缩例程

C# 无法正确加载基础压缩例程,c#,.net,uwp,C#,.net,Uwp,我不能再在我的UWP应用程序中使用System.IO.Compression库,我需要它来压缩一个字符串,该字符串太大,未压缩,无法放入独立的存储中。我怀疑这是从我更新所有Nuget软件包开始的。我一直得到下面的错误,下面是代码 编辑这似乎仅在调试模式下发生。当我在发布模式下编译我的应用程序并部署到设备或本地机器时,它可以在这两种模式下工作。但当我尝试调试时,它崩溃了(崩溃发生在稍后的代码中,该代码尝试使用不包含任何内容的解压缩字符串,因为压缩/解压缩在using语句中以静默方式失败,并且我的应

我不能再在我的UWP应用程序中使用System.IO.Compression库,我需要它来压缩一个字符串,该字符串太大,未压缩,无法放入独立的存储中。我怀疑这是从我更新所有Nuget软件包开始的。我一直得到下面的错误,下面是代码

编辑这似乎仅在调试模式下发生。当我在发布模式下编译我的应用程序并部署到设备或本地机器时,它可以在这两种模式下工作。但当我尝试调试时,它崩溃了(崩溃发生在稍后的代码中,该代码尝试使用不包含任何内容的解压缩字符串,因为压缩/解压缩在using语句中以静默方式失败,并且我的应用程序中的其余代码被执行)

信息

无法正确加载基础压缩例程

堆栈跟踪

在System.IO.Compression.Deflater.DeflateInit(压缩级别 压缩级别,Int32窗口位,Int32 memLevel, 压缩策略 系统IO压缩放气器ctor(压缩水平 压缩级别,Int32(窗口位) System.IO.Compression.DeflatestStream.InitializedFlater(流, Boolean leaveOpen,Int32窗口位,压缩级别 压缩水平) System.IO.Compression.DeflatestStream..ctor(流, 压缩模式,Boolean leaveOpen,Int32 windowBits)at System.IO.Compression.DeflatestStream..ctor(流, 压缩模式,布尔值(打开)在 myApp.Utilities.Extensions.Compress(字符串解压缩字符串)位于 myApp.extendedssplash.d_u17.MoveNext()

我想这可能与此有关

我不知道该怎么办。是否有一个不依赖System.IO的Zip库,我可以在UWP中使用我试图安装DotNetZip,但无法安装

代码

公共静态类扩展
{
/// 
///压缩字符串并返回一个deflate压缩的Base64编码字符串。
/// 
///要压缩的字符串
公共静态字符串压缩(此字符串未压缩)
{
var compressedStream=新内存流();
var uncompressedStream=新内存流(Encoding.UTF8.GetBytes(uncompressedStream));
使用(var compressorStream=新的deflatestStream(compressedStream,CompressionMode.Compress,true))
{
未压缩流.CopyTo(压缩流);
}
返回Convert.tobase64字符串(compressedStream.ToArray());
}
/// 
///解压缩deflate压缩、Base64编码的字符串并返回未压缩的字符串。
/// 
///要解压缩的字符串。
公共静态字符串解压缩(此字符串压缩字符串)
{
var decompressedStream=新内存流();
var compressedStream=newmemoryStream(Convert.FromBase64String(compressedString));
使用(var decompressorStream=新的deflatestStream(压缩流,压缩模式.解压缩))
{
CopyTo(解压数据流);
}
返回Encoding.UTF8.GetString(decompressedStream.ToArray());
}
}

我已经测试了您的代码。但我无法复制您的问题,我的项目中的Microsoft.NETCore.UniversalWindowsPlatfom版本是5.1.0。您可以提供更多关于您引用的nuget包版本的详细信息,就像您在案例中提到的那样。
public static class Extensions
{
    /// <summary>
    /// Compresses a string and returns a deflate compressed, Base64 encoded string.
    /// </summary>
    /// <param name="uncompressedString">String to compress</param>
    public static string Compress(this string uncompressedString)
    {
        var compressedStream = new MemoryStream();
        var uncompressedStream = new MemoryStream(Encoding.UTF8.GetBytes(uncompressedString));

        using (var compressorStream = new DeflateStream(compressedStream, CompressionMode.Compress, true))
        {
            uncompressedStream.CopyTo(compressorStream);
        }

        return Convert.ToBase64String(compressedStream.ToArray());
    }

    /// <summary>
    /// Decompresses a deflate compressed, Base64 encoded string and returns an uncompressed string.
    /// </summary>
    /// <param name="compressedString">String to decompress.</param>
    public static string Decompress(this string compressedString)
    {
        var decompressedStream = new MemoryStream();
        var compressedStream = new MemoryStream(Convert.FromBase64String(compressedString));

        using (var decompressorStream = new DeflateStream(compressedStream, CompressionMode.Decompress))
        {
            decompressorStream.CopyTo(decompressedStream);
        }

        return Encoding.UTF8.GetString(decompressedStream.ToArray());
    }
}