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

Unity调用外部.NET控制台exe:StreamingAssets重复DLL报错求助

解决Unity中StreamingAssets内同名DLL重复加载报错问题

针对你遇到的Unity识别到StreamingAssets中不同架构同名DLL(如libSkiaSharp.dll)导致的重复插件报错,以下是几个实用解决方案:

方案1:发布单架构的控制台程序

直接让.NET控制台程序只输出当前开发/运行所需的单一架构产物,避免多架构DLL共存:

  • 在Visual Studio中右键控制台项目,选择「发布」
  • 在发布设置的「目标运行时」下拉菜单中,选择单一架构(比如你开发用的win-x64)
  • 取消勾选「生成多个运行时的包」选项
  • 完成发布后,将单架构的输出文件复制到Unity的StreamingAssets文件夹中

这样产物里只会有对应架构的DLL,不会出现跨架构的同名文件,从根源上解决重复报错。

方案2:手动编辑插件的.meta配置文件

StreamingAssets中的文件也会生成对应的.meta文件,你可以通过编辑这些文件来指定每个DLL的兼容平台,让Unity Editor只加载当前架构的DLL:

  1. 在Unity项目中找到重复DLL对应的.meta文件(比如Assets/StreamingAssets/VideoCaptureService/runtimes/win-arm64/native/libSkiaSharp.dll.meta)
  2. 用文本编辑器打开该文件,找到platformData节点
  3. 修改配置,让该DLL仅在对应架构的Standalone模式下启用,禁用Editor模式的兼容:
platformData:
  - first:
      Any:
    second:
      enabled: 0
  - first:
      Standalone:
        Windows:
          ARM64:
    second:
      enabled: 1
  1. 对其他架构的同名DLL执行相同操作,分别指定对应的平台(如win-x86对应x86,win-x64对应x86_64),并将Any下的enabled设为0

修改后Unity Editor会忽略非当前架构的DLL,不再抛出重复插件错误。

方案3:将控制台程序打包为单文件

利用.NET的单文件发布功能,把所有依赖打包到单个exe中,彻底消除独立DLL文件:

  • 在Visual Studio的控制台项目发布设置中,勾选「生成单个文件」选项
  • 选择目标运行时为对应的架构(如win-x64)
  • 发布后得到一个独立的exe文件,将其复制到StreamingAssets文件夹中

这种方式下没有额外的DLL文件,自然不会触发Unity的重复插件检测。

方案4:分离依赖DLL到Plugins文件夹(可选)

将控制台程序的依赖DLL从StreamingAssets移至Unity的Plugins文件夹,并为每个DLL设置正确的平台兼容:

  • 将不同架构的DLL分别放到Plugins下的对应子文件夹(如Plugins/Windows/x86、Plugins/Windows/x86_64)
  • 在Unity Inspector中为每个DLL设置对应的「兼容平台」,禁用Editor模式的兼容(仅勾选对应架构的Standalone平台)
  • 运行控制台程序时,确保Process.Start的工作目录指向StreamingAssets中的exe,或者将DLL复制到exe的运行目录

这个方案操作稍复杂,适合需要复用DLL的场景,优先推荐前三个方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 05:25:23