2017-06-01 5 views
2

Ich habe eine C# .NET (v4.6.2) WinForms App, wo ich auf eine Datei zugreifen kann, die möglicherweise ein .zip-Archiv, das mit "System erstellt wurde .IO.Kompression; ". Ich habe sowohl "System.IO.Compression" und System.IO.Compress.FileSystem "Referenzen im Projekt und" mit System.IO.Compression; "oben, die mit dem NuGet-Paket Installer installiert wurde.System.MissingMethodException beim Versuch, ZipFile aus ZipArchive zu lesen C#

unten ist der Code für den Versuch, die Datei als ZIP-Archiv zu öffnen:

 try 
     { 
      string extractPath = Path.GetTempFileName(); 
      string strGameVersion = ""; 
      string strProjectType = ""; 

      using (ZipArchive archive = ZipFile.OpenRead(OpenFilePath)) 
      { 
       FileStream fs = new FileStream(extractPath, FileMode.Open, FileAccess.Read); 
       StreamReader sr = new StreamReader(fs); 
       foreach (ZipArchiveEntry entry in archive.Entries) 
       { 
        if (entry.FullName.Contains("ProjectData.txt")) 
        { 
         entry.ExtractToFile(Path.Combine(extractPath, entry.FullName)); 
         strGameVersion = sr.ReadLine(); 
         strProjectType = sr.ReadLine(); 
        } 
        File.Delete(extractPath); 
       } 
       sr.Close(); 
       fs.Close(); 
       archive.Dispose(); 
      } 
    } 
    catch(System.IO.FileFormatException flex1) 
    { 
     MessageBox.Show(flex1.ToString(), "oops.", MessageBoxButtons.OK, MessageBox.Icon.Error); 
    } 

die Fehlermeldung lautet „System.MissingMethodException: Methode nicht gefunden:‚System.IO.Compression.ZipArchive System.IO.Compression. ZipFile.OpenRead (System.String) '. " Also, was mache ich falsch oder gar nicht?

+0

Mögliche Duplikat [C# .NET fehlt Methode Exception beim Öffnen ZipArchive mit System.IO.Compression erstellt] (https: // Stackoverflow. com/questions/44556298/c-sharp-net-missing-method-ausnahme-wenn-öffnung-ziparchive-erstellt-mit-syste) –

Antwort

0

Basierend auf Ihrer Eingabe, nehme ich an, dass tha t Abhängigkeits-Assemblies, die versuchen zu laden, können eine falsche Version davon sein. Um ihnen zu sagen, dass Sie das Protokoll der Fusionsbindung überprüfen müssen, um zu sehen, was passiert ist. Im folgenden Tutorial erfahren Sie, wie Sie Fehler bei der Baugruppenbindung beheben können, um deren Grundursache zu erkennen.

http://blogs.msdn.com/suzcook/archive/2003/05/29/57120.aspx

3

Aus irgendeinem Grund OpenRead existiert nicht in net46 Montage. Die schnelle Abhilfe ist

ZipArchive OpenRead(string filename) 
{ 
    return new ZipArchive(File.OpenRead(filename), ZipArchiveMode.Read); 
} 

zu verwenden, wie bei https://stackoverflow.com/a/44598092/75947 beantwortet

0

ich mit zur Arbeit kommen wechseln musste System.IO.Compression von nuget.org dies. Außerdem musste ich die Änderungen vornehmen, die Felix oben vorgeschlagen hatte. Das heißt ersetzen:

ZipFile.OpenRead(file))

mit

new ZipArchive(File.OpenRead(file), ZipArchiveMode.Read)

Verwandte Themen