You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Script在VS Code可运行但PowerShell失效——MailKit/MimeKit发件问题

解决方案

这个问题核心是缺少依赖库或Windows PowerShell 5.1对.NET Standard 2.0兼容不足,VS Code能运行是因为它的PowerShell集成环境自动补全了依赖。以下是具体解决方法:

1. 加载所有依赖库

MailKit和MimeKit依赖BouncyCastle等第三方库,只加载主dll会导致加载失败。可以批量加载所有相关dll:

$nugetPath = "C:\ProgramFiles\PackageManagement\NuGet\Packages"
# 获取MailKit和MimeKit目录下的所有dll
$allDlls = Get-ChildItem "$nugetPath\MailKit.4.0.0\lib\netstandard2.0\*.dll", "$nugetPath\MimeKit.4.0.0\lib\netstandard2.0\*.dll"
foreach ($dll in $allDlls) {
    Add-Type -Path $dll.FullName -ErrorAction SilentlyContinue
}

2. 切换到PowerShell 7+版本

Windows PowerShell 5.1对.NET Standard库的支持有限,换成PowerShell 7或更高版本(基于.NET Core),兼容性更好,能直接避免这类加载问题。

3. 查看具体缺失的依赖

如果不知道缺了什么,可以捕获异常查看LoaderExceptions:

try {
    Add-Type -Path "C:\ProgramFiles\PackageManagement\NuGet\Packages\MimeKit.4.0.0\lib\netstandard2.0\MimeKit.dll"
} catch {
    $_.Exception.LoaderExceptions | ForEach-Object {
        Write-Host "缺失依赖: $_" -ForegroundColor Red
    }
}

根据输出找到对应的dll,手动添加加载即可。

4. 改用Assembly.LoadFile加载

相比Add-Type,直接用.NET的加载方法更稳定:

[System.Reflection.Assembly]::LoadFile("C:\ProgramFiles\PackageManagement\NuGet\Packages\MailKit.4.0.0\lib\netstandard2.0\MailKit.dll") | Out-Null
[System.Reflection.Assembly]::LoadFile("C:\ProgramFiles\PackageManagement\NuGet\Packages\MimeKit.4.0.0\lib\netstandard2.0\MimeKit.dll") | Out-Null

内容的提问来源于stack exchange,提问作者trysailmajor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 17:16:06