Использование .NET GZipStream Class с Mono - PullRequest
5 голосов
/ 11 мая 2011

Я пытаюсь построить пример из GZipStream Class .С помощью команды gmcs gzip.cs я получил сообщения об ошибках.gzip.cs - тот же источник из msdn.

Кажется, мне нужно добавить ссылку при компиляции.Чего не хватает?

gzip.cs(57,32): error CS1061: Type `System.IO.FileStream' does not contain a definition for `CopyTo' and no extension method `CopyTo' of type `System.IO.FileStream' could be found (are you missing a using directive or an assembly reference?)
/Library/Frameworks/Mono.framework/Versions/2.10.1/lib/mono/2.0/mscorlib.dll (Location of the symbol related to previous error)
gzip.cs(86,40): error CS1061: Type `System.IO.Compression.GZipStream' does not contain a definition for `CopyTo' and no extension method `CopyTo' of type `System.IO.Compression.GZipStream' could be found (are you missing a using directive or an assembly reference?)
/Library/Frameworks/Mono.framework/Versions/2.10.1/lib/mono/gac/System/2.0.0.0__b77a5c561934e089/System.dll (Location of the symbol related to previous error)
Compilation failed: 2 error(s), 0 warnings

решено

Я должен использовать 'dmcs', а не 'gmcs', чтобы использовать функции .NET 4.

1 Ответ

7 голосов
/ 11 мая 2011

Stream.CopyTo поступил только в .NET 4 - возможно, он еще не в Mono (или, возможно, вам нужна более свежая версия).

Подобный метод расширения легко написать, хотя:

public static class StreamExtensions
{
    public static void CopyTo(this Stream input, Stream output)
    {
        byte[] buffer = new byte[16 * 1024];
        int bytesRead;
        while ((bytesRead = input.Read(buffer, 0, buffer.Length)) > 0)
        {
            output.Write(buffer, 0, bytesRead);
        }
    }
}
...