0

Visual Studio 2012 で発生している正確なエラーは次のとおりです。

エラー BC30456: 'Dispose' は 'System.Net.Mail.SmtpClient' のメンバーではありません。

    Dim SmtpServer As New SmtpClient()
    Dim mail As New MailMessage()
    SmtpServer.Port = 25
    SmtpServer.Host = MYHOST.com"
    mail = New MailMessage()
    mail.From = New MailAddress("MYADDRESS@DOMAIN.com")
    mail.To.Add("RECIPIENT@DOMAIN.com")
    mail.Subject = "Test Mail"
    mail.Body = "This is for testing SMTP mail"
    SmtpServer.Send(mail)
    SmtpServer.Dispose()

これは明らかなエラーです。Dispose().net 4.0 で SmtpClient のメンバーとしてのみ追加されたため、.net フレームワーク 3.5 以下を使用していたと思わ れるかもしれません。しかし、私は4.0を使用しています!

Web サイトのプロパティ ページには 4.0 と記載されています。4.0 として設定する必要がある場所は他にありますか? コンパイラの設定はどこかにありますか?

4

2 に答える 2

0

この問題を修正しました。実際に何が原因なのかはよくわかりませんが、同様の問題が発生している他の人のために、私が修正した方法を次に示します。

プロパティ ページに移動します。(プロジェクトを右クリック --> プロパティ ページ) (または単に Shift+F4)

左側のボックスで [ビルド] を選択します。(イメージ)

「ターゲット フレームワーク」を「.NET Framework 3.5」に変更します。

それが終わったら、プロジェクト/ソリューションを閉じます。

プロジェクトを再度開き、プロセスを繰り返します。今回は「.NET Framework 4.0」を選択します。

プロジェクトが終了したら、プロジェクトを閉じて再度開きます。

これにより、必要なすべての参照が 4.0 にリセットされると思います。多分VSは参照をキャッシュしますか?そして、これはキャッシュをクリアしますか?確かではありませんが、私にとってはうまくいきました。同じ問題が発生している場合は、試してみる価値があります。

于 2012-06-22T18:30:41.960 に答える
0

ご覧のとおり、実際に System.Net.Mail.SmtpClient の 3.5 バージョンを使用しています。

バージョン 4 を使用していることを確認するには:

  • Visual Studio でプロジェクトの参照ディレクトリに移動します
  • System.Net への参照を削除します
  • 右クリック、参照の追加
  • 以下のように、リストでアセンブリを見つけます

ここに画像の説明を入力

ここに画像の説明を入力

また、Usingブロックを持つようにコードをリファクタリングすることを検討してください。

Using smtp As New SmtpClient()    
   smtp.Port = 25
   'etc etc
End Using
于 2012-06-21T21:59:56.013 に答える