在ASP.NET核心应用程序中安装包时出错

时间:2017-01-14 16:04:00

标签: asp.net asp.net-core sendgrid visual-studio-2017

我正在使用VS 2017来创建ASP.NET Core Web应用程序。在安装Sendgrid软件包时,我收到了以下错误。

  

Package Sendgrid 8.0.5与netcoreapp1.0(.NETCoreApp,Version = v1.0)不兼容。 Package Sendgrid 8.0.5支持:net(.NETFramework,Version = v0.0)   软件包Microsoft.AspNet.WebApi.Client 5.2.3与netcoreapp1.0(.NETCoreApp,Version = v1.0)不兼容。软件包Microsoft.AspNet.WebApi.Client 5.2.3支持:   net45(.NETFramework,Version = v4.5)   portable-net45 + netcore45 + wp8 + wp81 + wpa81(.NETPortable,Version = v0.0,Profile = wp8 + netcore45 + net45 + wp81 + wpa81)   包SendGrid.CSharp.HTTP.Client 3.0.0与netcoreapp1.0(.NETCoreApp,Version = v1.0)不兼容。包SendGrid.CSharp.HTTP.Client 3.0.0支持:net(.NETFramework,Version = v0.0)   一个或多个程序包与.NETCoreApp,Version = v1.0。

不兼容

此错误的任何解决方案?

2 个答案:

答案 0 :(得分:3)

您可能需要使用预发布版本。

https://www.nuget.org/packages/SendGrid.NetCore/

答案 1 :(得分:1)

该错误为您提供了SendGrid 8.0.5及其依赖项的支持矩阵。

                                net     net45   portable-net45+netcore45+wp8+wp81+wpa81
SendGrid                         1
Microsoft.AspNet.WebApi.Client            1             1
SendGrid.CSharp.HTTP.Client      1

您可以看到它们都不支持核心框架(netcoreapp),而是需要完整框架(net)。

如果您需要在Core Framework上运行您的应用,则无法使用SendGrid 8.0.5。您的选项包括(但不限于)使用SendGrid.NetCore或使用MailKit

如果您不要求您的应用程序在Core Framework上运行,并且只支持完整框架(net),那么您可以使用SendGrid 8.0.5。

对于我们自己的应用,我们选择使用MailKit版本1.10.0,因为它比SendGrid.NetCore更成熟,并且它支持核心框架。我们按如下方式使用它:

project.json

"dependencies": {                                                        
    "MailKit": "1.10.0"                                                  
},                                                                       
"frameworks": {                                                          
    "netcoreapp1.1": {}                                                  
}

使用带有MailKit的SendGrid发送电子邮件。

var mimeMessage = new MimeMessage();
mimeMessage.From.Add(new MailboxAddress("Admin", "admin@mailbox.com"));
mimeMessage.To.Add(new MailboxAddress("Jon Doe", "jon@doe.com"));
mimeMessage.Subject = "An Email for You!";
mimeMessage.Body = new TextPart("html")
{
    Text = "This is the message.";
};

using (var client = new SmtpClient())
{
    client.ServerCertificateValidationCallback = (s, c, h, e) => true;
    client.Connect("smtp.sendgrid.net", 587);
    await client.AuthenticateAsync("myuser@foobar.com", "ASD43234GDX");    
    await client.SendAsync(mimeMessage);
    client.Disconnect(true);  
}