2016-05-27 13 views
0

私のプログラム用に "アップデータ"を作成しようとしていますが、実行する必要があるのはurlからexeをダウンロードすることです。 WebClient.DownloadFilehttps://msdn.microsoft.com/en-us/library/ez801hhe(v=vs.110).aspx)を使用しようとしていますが、エラーが発生しています:An object reference is required for the nonstatic field, method, or property 'WebClient.DownloadFile(string, string)'私はこれが私が見落とした愚かなものだと仮定していますが、それを理解することに問題があります。どんな助けもありがとうございます。Winforms - 非静的なフィールド、メソッド、またはプロパティにオブジェクト参照が必要です

コード:

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'は静的ではありません。 'WebClient'のインスタンスが必要です。 –

+0

WebClient webclient = new WebClient(); webclient.DownloadFile(downloadURL、progLoc + progName);私は実際にコードを正しくコメントに入れる方法を見つけ出す必要があります。 – jpaugh78

+0

.Netには、あなたのためにパスとファイルを分割するメソッドがあります。場所を取得するための 'Path.GetDirectoryName(Application.ExecutablePath)'と、名前のための 'Path.GetFileName(Application.ExecutablePath)'があります。 – stuartd

答えて

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

WebClientは、クラスの名前だけです。クラスのインスタンスへの参照が必要です。型、インスタンス、参照、変数の違いを理解することは重要です。これが十分に理解されていない限り、効果的なプログラマーになるためには苦労します。

私がここにいる間:File.Exists()のチェックを取り除いてください。あなたはすでに例外をキャッチしています。ファイルが存在しない場合は、問題を処理します。

関連する問題