【发布时间】:2019-11-15 00:36:17
【问题描述】:
具体说明:
- dot net core 3 mvc 项目使用 SmtpClient
- 作为单个文件发布,修剪(在 csproj 文件中发布修剪为 true)
步骤: 创建新的 dotnetcore 3 项目:
dotnet new mvc
在 HomeController.cs 中,在 Index() 下添加一个空白的 SmtpClient 命令:
public IActionResult Index()
{
using (SmtpClient client = new SmtpClient())
{
}
return View();
}
为单个文件修改 csproj 文件,修剪,输出运行时。 csproj 文件:
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp3.0</TargetFramework>
<PublishSingleFile>true</PublishSingleFile>
<PublishTrimmed>false</PublishTrimmed>
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
</PropertyGroup>
<ItemGroup>
</ItemGroup>
</Project>
发布命令:
dotnet publish
运行,然后导航到 /
错误信息:
System.TypeLoadException: Could not load type 'System.Net.Mail.SmtpClient' from assembly 'Microsoft.AspNetCore, Version=3.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'.
at PubTrimmedSmtpIssue.Controllers.HomeController.Index()
如果我在 csproj 中删除 PublishTrimmed 或将其切换为 false,则项目可以正常运行。
关于 PublishTrimmed 为什么会导致错误的任何想法?
【问题讨论】:
-
您使用的是 System.Net.Mail 还是 MailKit?我知道 System.Net.Mail 已被 Microsoft 弃用。
-
确实,它已被弃用。感谢您提供的信息,我会考虑继续使用 MailKit,但仍然保持开放状态,因为 SmtpClient 仍然是核心和 dn 标准框架的一部分。
-
@R.StackUser 我看到
System.Net.Mail没有被弃用。这是文档中的一个错误。 github.com/dotnet/dotnet-api-docs/issues/2986 -
谢谢你的澄清。不确定这是您问题的一部分。希望您能找到问题的解决方案。
-
@TanvirArjeI,微软文档声明它已过时:docs.microsoft.com/en-us/dotnet/api/…
标签: .net-core visual-studio-code asp.net-core-mvc csproj