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

SQL Server CLR程序集发邮件报错:缺失指定版本依赖DLL

解决SQL Server中加载.NET类库程序集的依赖问题

1. 查找DLL依赖的匹配版本(如4.0.4.1)

  • 用ildasm.exe工具:打开VS开发者命令行,执行ildasm.exe 你的目标DLL路径,在弹出的窗口里展开Manifest节点,就能看到所有依赖程序集的完整版本信息。
  • 用.NET CLI命令:在项目根目录运行dotnet list package --include-transitive,可以列出项目直接和间接依赖的所有包版本,对应到编译后DLL的版本号。
  • 查看项目文件:打开类库的.csproj文件,找到PackageReference节点,里面的Version字段就是对应依赖包的版本,编译后DLL的版本和这个一致。
  • 查看DLL属性:右键DLL文件→属性→详细信息,查看“产品版本”或“文件版本”,部分DLL的版本信息直接在这里显示。

2. 打包类库项目的所有引用DLL

  • 用dotnet publish命令:在项目根目录执行dotnet publish -c Release -r win-x64 --self-contained false(根据SQL Server所在系统调整win-x64为对应架构),发布完成后,publish目录里会包含主DLL和所有依赖的DLL文件。
  • 配置项目自动复制依赖:在.csproj文件中添加以下配置,编译时会自动把所有依赖DLL复制到输出目录:
    <PropertyGroup>
      <CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
    </PropertyGroup>
    
    之后编译bin/Release/netX目录下就会有全部依赖文件。

额外提示(针对SQL Server场景)

SQL Server加载程序集时版本匹配要求严格,必须先加载底层依赖的DLL,再加载上层依赖。比如先执行:

CREATE ASSEMBLY [System.Runtime.CompilerServices.Unsafe] FROM '你的DLL路径\System.Runtime.CompilerServices.Unsafe.dll' WITH PERMISSION_SET = UNSAFE;

再依次加载System.Text.Json、MSGraphMail,最后加载你的主类库DLL。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 08:04:57