2016-05-27 3 views
0

Ich versuche, ein "Updater" für mein Programm zu erstellen, und eines der Dinge, die ich tun muss, ist das Herunterladen der Exe von einer URL. Ich versuche, WebClient.DownloadFile (https://msdn.microsoft.com/en-us/library/ez801hhe(v=vs.110).aspx) zu verwenden, aber ich erhalte einen Fehler: An object reference is required for the nonstatic field, method, or property 'WebClient.DownloadFile(string, string)'. Ich nehme an, das ist etwas Dummes, das ich übersehen habe, aber ich habe Schwierigkeiten, es herauszufinden. Jede Hilfe wird geschätzt.Winforms - Für das nicht statische Feld, die Methode oder die Eigenschaft ist eine Objektreferenz erforderlich.

Code:

private void Update() 
{ 
    string downloadURL = EXE_LOCATION; 
    string progName = Application.ExecutablePath.Substring(Application.ExecutablePath.LastIndexOf("\\") + 1); 
    string progLoc = Application.ExecutablePath.Substring(0, Application.ExecutablePath.LastIndexOf("\\") + 1); 

    if (File.Exists(progLoc + progName)) 
    { 
     try 
     { 
      File.Move(progLoc + progName, progLoc + "Old-version.exe"); 
     } 
     catch (Exception ex) 
     { 
      Console.WriteLine("Problem renaming: " + ex.Message); 
     } 
    } 

    WebClient.DownloadFile(downloadURL, progLoc + progName); 
} 
+1

'DownloadFile' ist nicht statisch. Sie benötigen eine Instanz von 'WebClient'. –

+0

WebClient webclient = neuer WebClient(); webclient.DownloadFile (downloadURL, progLoc + progName); Ich muss wirklich herausfinden, wie man den Code korrekt in Kommentare einfügt, lol. – jpaugh78

+0

Es gibt Methoden in .Net, die den Pfad und die Datei für Sie aufteilen - 'Path.GetDirectoryName (Application.ExecutablePath)', um den Speicherort zu erhalten, und 'Path.GetFileName (Application.ExecutablePath)' für den Namen. – stuartd

Antwort

4
using (var wc = new WebClient()) 
{ 
    wc.DownloadFile(downloadURL, progLoc + progName); 
} 

WebClient ist nur der Name der Klasse. Sie benötigen einen Verweis auf eine Instanz der Klasse. Es ist wichtig, den Unterschied zwischen Typen, Instanzen, Referenzen und Variablen zu verstehen. Solange dies nicht gut verstanden wird, werden Sie Schwierigkeiten haben, ein effektiver Programmierer zu sein.

Während ich hier bin: die File.Exists() Überprüfung loswerden. Sie fangen bereits eine Ausnahme. Lassen Sie das Problem behandeln, wenn die Datei nicht existiert.

Verwandte Themen