我在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的地方吗?编译器设置可能在哪里?
答案 0 :(得分:0)
正如您所观察到的,您确实使用的是System.Net.Mail.SmtpClient的3.5版本。
确保您使用的是版本4:
另外,请考虑重构代码以获得Using
阻止。
Using smtp As New SmtpClient()
smtp.Port = 25
'etc etc
End Using
答案 1 :(得分:0)
我现在已经解决了这个问题。不太确定究竟是什么造成了它,但对于遇到类似问题的其他人来说,这就是我修复它的方法。
转到您的属性页面。 (右键单击项目 - > gt;属性页面)(或只是Shift + F4)
在左侧框中选择“构建”。 (Image)
将“目标框架”更改为“.NET Framework 3.5”
完成后,关闭您的项目/解决方案。
重新打开您的项目并重复此过程,这次选择“.NET Framework 4.0”。
完成后关闭并重新打开项目。
我猜这会重置所有必需的4.0引用。也许VS甚至可以缓存引用?这会清除缓存吗?不确定,但它对我有用,如果你遇到同样的问题,值得一试。