在ASP.NET Core应用程序中安装软件包时出错。

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

包Sendgrid 8.0.5与netcoreapp1.0(.NETCoreApp,Version = v1.0)不兼容。包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不兼容。

有没有解决这个错误的方法?

请你能否发布你的 project.json 文件。 - undefined
2个回答

3

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)。
如果你的应用程序需要在核心框架上运行,你不能使用SendGrid 8.0.5。你可以选择使用SendGrid.NetCoreMailKit等其他选项。
如果你不需要你的应用程序在核心框架上运行,并且只支持完整框架(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);  
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接