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

VS2022 C#中'DllExport'类型或命名空间未找到问题求助

解决[DllExport]报CS0246错误的方案

首先明确:.NET原生类库中没有DllExportAttribute,System.Runtime.InteropServices里只有用于导入非托管代码的DllImport,导出托管函数为非托管DLL接口需要依赖第三方工具或NuGet包,这就是你报错的核心原因。

以下是针对不同.NET版本的解决办法:

针对.NET Framework项目

  • 安装RGiesecke.DllExport NuGet包,这是实现DllExport最常用的第三方库。安装完成后,项目会自动添加必要的程序集引用和构建配置。
  • 确认代码中添加了对应的命名空间引用:
    using RGiesecke.DllExport;
    
  • 重新编译项目,错误应该会消失。

针对.NET Core/.NET 5+项目

.NET 5及以上版本推荐使用原生支持的[UnmanagedCallersOnly]属性替代第三方DllExport:

  • 替换原有的[DllExport]属性为:
    [UnmanagedCallersOnly(CallingConvention = CallingConvention.StdCall)]
    
  • 确保项目启用NativeAOT发布(右键项目 -> 属性 -> 发布 -> 目标框架选择对应版本,发布方式选NativeAOT),因为托管代码导出为非托管接口需要AOT编译支持。
  • 该属性属于System.Runtime.InteropServices命名空间,你的项目已经引用了这个命名空间,无需额外添加。

额外检查点

  • 如果项目是从GitHub克隆的,先查看项目的README或packages.config/Project.csproj文件,确认原项目依赖的DllExport相关包,严格按照原配置安装对应版本,避免版本不兼容问题。
  • 清理项目的bin/obj目录后重新构建,排除缓存导致的引用异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 19:06:26