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()

这应该是一个明显的错误。您可能会认为我使用的是 .net framework 3.5 或更低版本,因为 Dispose()它只是在 .net 4.0 中作为成员添加到 SmtpClient 中。但是,我使用的是 4.0!

在网站属性页面中,它声明 4.0。还有其他地方我需要设置为 4.0 吗?编译器设置可能在某处?

4

2 回答 2

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 回答
0

我现在已经解决了这个问题。不太确定实际上是什么原因造成的,但对于遇到类似问题的其他人来说,这是我修复它的方法。

转到您的属性页面。(右键单击项目 --> 属性页)(或者只是 Shift+F4)

在左侧框中选择“构建”。(图片

将“目标框架”更改为“.NET Framework 3.5”

完成后,关闭您的项目/解决方案。

重新打开您的项目并重复该过程,这次选择“.NET Framework 4.0”。

完成后关闭并重新打开您的项目。

我猜这会将所有必需的引用重置为 4.0。也许VS甚至缓存引用?这会清除缓存吗?不确定,但它对我有用,如果你有同样的问题,值得一试。

于 2012-06-22T18:30:41.960 回答