title: C# .NET Missing Method Exception when opening ZipArchive created with System.IO.Compression
body: <p>I have a C# WinForms .NET app in which I'm trying to write to a zip archive and read from it using System.IO.Compression.</p>
  
  <p>Here's now I create the ziparchive:</p>
  
  <pre><code>    public void SaveStdV20ZipProject(string strfilepath, clsProjectInfo GameInfo)
      {
          using (var ms = new MemoryStream())
          {
              using (var archive = new ZipArchive(ms, ZipArchiveMode.Create, true))
              {
                  string strProjectData = String.Empty;
                  StringBuilder sb = new StringBuilder();
  
                  // First, we add the Game Info data...
                  sb.AppendLine(GameInfo.strGameVersion);
                  sb.AppendLine(GameInfo.strProjectType);
                  sb.AppendLine(GameInfo.strGameTitle);
                  sb.AppendLine(GameInfo.strAuthor);
                  sb.AppendLine(GameInfo.strCreationDate);
                  sb.AppendLine(GameInfo.blTSImagePresent.ToString());
                  sb.AppendLine(GameInfo.blTSAudioPresent.ToString());
                  sb.AppendLine(GameInfo.blTSVideoPresent.ToString());
                  sb.AppendLine(GameInfo.blFSSImagePresent.ToString());
                  sb.AppendLine(GameInfo.blFSSAudioPresent.ToString());
                  sb.AppendLine(GameInfo.blFSSVideoPresent.ToString());
                  sb.AppendLine(GameInfo.intTotalQuestions.ToString());
                  sb.AppendLine(GameInfo.intTotalMediaItems.ToString());
                  sb.AppendLine(GameInfo.intTotalCategories.ToString());
                  sb.AppendLine(GameInfo.blTiebreakerPresent.ToString());
  
                  // Next, create an archive entry for the Game Data string...
                  strProjectData = sb.ToString();
  
                  var ProjectData = archive.CreateEntry("ProjectData.txt");
  
                  using (var entryStream = ProjectData.Open())
                  using (var streamWriter = new StreamWriter(entryStream))
                  {
                      streamWriter.Write(strProjectData);
                  }
  
                  // We're done writing all the data for this project. Now let's write it to the file...
                  using (var fileStream = new FileStream(@strfilepath, FileMode.Create))
                  {
                      ms.Seek(0, SeekOrigin.Begin);
                      ms.CopyTo(fileStream);
                  }
              }
          }
      }
  </code></pre>
  
  <p>And here's how I open it:</p>
  
  <pre><code>    public void OpenStdV20ZipProject(string strfilepath)
      {
          string zipPath = strfilepath;
          string extractPath = Path.GetTempFileName();
  
          using (ZipArchive archive = ZipFile.OpenRead(zipPath))
          {
              foreach (ZipArchiveEntry entry in archive.Entries)
              {
                  if (entry.FullName.EndsWith(".txt", StringComparison.OrdinalIgnoreCase))
                  {
                      using (StreamReader sr = new StreamReader(extractPath))
                      {
                          clsProjInfo.strGameVersion = (string)sr.ReadLine();
                          clsProjInfo.strProjectType = (string)sr.ReadLine();
                          clsProjInfo.strGameTitle = (string)sr.ReadLine();
                          clsProjInfo.strAuthor = (string)sr.ReadLine();
                          clsProjInfo.strCreationDate = (string)sr.ReadLine();
                          clsProjInfo.blTSImagePresent = Convert.ToBoolean(sr.ReadLine());
                          clsProjInfo.blTSAudioPresent = Convert.ToBoolean(sr.ReadLine());
                          clsProjInfo.blTSVideoPresent = Convert.ToBoolean(sr.ReadLine());
                          clsProjInfo.blFSSImagePresent = Convert.ToBoolean(sr.ReadLine());
                          clsProjInfo.blFSSAudioPresent = Convert.ToBoolean(sr.ReadLine());
                          clsProjInfo.blFSSVideoPresent = Convert.ToBoolean(sr.ReadLine());
                          clsProjInfo.intTotalQuestions = Convert.ToInt32(sr.ReadLine());
                          clsProjInfo.intTotalMediaItems = Convert.ToInt32(sr.ReadLine());
                          clsProjInfo.intTotalCategories = Convert.ToInt32(sr.ReadLine());
                          clsProjInfo.blTiebreakerPresent = Convert.ToBoolean(sr.ReadLine());
                      }
                  }
              }
          }
      }         // &lt;-THIS IS LINE 1320
  </code></pre>
  
  <p>It throws a Missing Method Exception and I've looked high and low in the Internet for a fix. Here's the stack trace:</p>
  
  <pre><code>System.MissingMethodException occurred
    HResult=0x80131513
    Message=Method not found: 'System.IO.Compression.ZipArchive       System.IO.Compression.ZipFile.OpenRead(System.String)'.
    Source=TASv20ClsLib
    StackTrace:
     at TASv20ClsLib.clsOpenStandardProject.OpenStdV20ZipProject(String strfilepath) in C:\Users\Reuben\Documents\Visual Studio 2017\Projects\C# Projects\TRIVIA AUTHOR SUITE V20 PROJECTS 2\TAS v20 Zip Test Jun14 2\TASv20ClsLib\Class1.cs:line 1320
     at Trivia_Author_v20.frmMain.openV20ProjectToolStripMenuItem_Click(Object sender, EventArgs e) in C:\Users\Reuben\Documents\Visual Studio 2017\Projects\C# Projects\TRIVIA AUTHOR SUITE V20 PROJECTS 2\TAS v20 Zip Test Jun14 2\Trivia Author v10 New Approach\frmMain.cs:line 1627
     at System.Windows.Forms.ToolStripItem.RaiseEvent(Object key, EventArgs e)
     at System.Windows.Forms.ToolStripMenuItem.OnClick(EventArgs e)
     at System.Windows.Forms.ToolStripItem.HandleClick(EventArgs e)
     at System.Windows.Forms.ToolStripItem.HandleMouseUp(MouseEventArgs e)
     at System.Windows.Forms.ToolStripItem.FireEventInteractive(EventArgs e,     ToolStripItemEventType met)
     at System.Windows.Forms.ToolStripItem.FireEvent(EventArgs e, ToolStripItemEventType met)
     at System.Windows.Forms.ToolStrip.OnMouseUp(MouseEventArgs mea)
     at System.Windows.Forms.ToolStripDropDown.OnMouseUp(MouseEventArgs mea)
     at System.Windows.Forms.Control.WmMouseUp(Message&amp; m, MouseButtons button, Int32 clicks)
     at System.Windows.Forms.Control.WndProc(Message&amp; m)
     at System.Windows.Forms.ScrollableControl.WndProc(Message&amp; m)
     at System.Windows.Forms.ToolStrip.WndProc(Message&amp; m)
     at System.Windows.Forms.ToolStripDropDown.WndProc(Message&amp; m)
     at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message&amp; m)
     at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message&amp; m)
     at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
     at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG&amp; msg)
     at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
     at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
     at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
     at System.Windows.Forms.Application.Run(Form mainForm)
     at Trivia_Author_v20.Program.Main(String[] args) in C:\Users\Reuben\Documents\Visual Studio 2017\Projects\C# Projects\TRIVIA AUTHOR SUITE V20 PROJECTS 2\TAS v20 Zip Test Jun14 2\Trivia Author v10 New Approach\Program.cs:line 126
  </code></pre>