【问题标题】:Unity not finding DLL dependency of another DLL (both in Assets folder)Unity 没有找到另一个 DLL 的 DLL 依赖项(都在 Assets 文件夹中)
【发布时间】:2018-11-30 23:37:42
【问题描述】:

背景信息(可能相关):

  • 使用 Unity 2017.2 并将“脚本运行时版本”设置为“实验性(.NET 4.6 等效)”
  • 在 Visual Studio 2017(不是 MonoDevelop)中编写代码

我有一个直接使用第三方 DLL(“库 A”)的 Unity 项目,我已将其添加到项目的 Assets 文件夹中。库 A 依赖于另一个 DLL,“库 B”,我也将它添加到 Assets 文件夹中。 Unity 项目中的任何脚本都不使用库 B。库 A 和 B 都是用 C# 编写并以 .NET 4 为目标,即它们都是托管代码。

添加到 Assets 文件夹后,当在 Visual Studio 中打开项目并且将两者的“Copy Local”设置为“True”时,库 A 和 B 都列在“References”下(尽管我不知道是否Unity 使用该属性)。

但是,在 Unity 编辑器中运行项目时,对库 A 的各种调用会引发异常,表明库 B 不可用。我能够让它工作的唯一方法是将库 B 的副本放在C:\Program Files\Unity\Editor(包含 Unity.exe,Unity 编辑器可执行文件的目录)中。

我在其他非 Unity 项目中使用过库 A 和 B,并且从未遇到任何问题(Visual Studio 将它们都复制到输出目录,只要它们被引用)。我是否错过了需要告诉它需要库 B 的 Unity 特定步骤?

【问题讨论】:

  • 您是否尝试过删除项目中的Library文件夹并重新打开?
  • @BenjaFriend 感谢您的建议;刚试过,但没有运气。
  • 顺便说一句,我尝试了this answer 并确认 VS 2017 表现出相同的行为,但它对 Unity 没有影响(可能不使用 MSBuild)。
  • 我相信 DLL 应该放在 Unity 中的 Assets/Plugins/ 下。 编辑: 根据最新的文档,情况似乎并非如此。我以为我在哪里看到过。 耸耸肩
  • 您是否碰巧将其中一个放在 FirstPass 文件夹(插件)中,而将另一个放在外面?

标签: c# unity3d dll dependencies


【解决方案1】:

我只是想分享一下我是如何完成这项工作的。顺便说一句,我正在使用 Unity 2019.2.10f1。

我的项目中有许多我自己和第三方托管的 dll 文件,我将它们全部复制到 ProjectFolder\Assets\Resources\

而且我在调用任何库或那些库相互调用时从来没有遇到任何问题。

也许问题在于,由于您的第二个库(库 B)没有被任何脚本引用,Unity 没有捆绑它并使其在调试/运行时可用。

根据我的经验,我发现如果您希望在构建中保留某些内容(任何可能在运行时动态消耗的未引用资产),请将其粘贴到 Assets 的 Resources 子文件夹中.

第二种选择可能是对第二个“库 B”构造一些虚拟调用(什么都不做,可能是构造和转储),以便 Unity 认为需要它并将其包含在您的构建中。

不确定这是否有帮助,但祝你好运!

【讨论】:

    【解决方案2】:

    Unity 实际上在 Assets 文件夹下有一个名为“Plugins”的特殊文件夹,您可以使用它。这将允许您添加对在 Unity 之外创建的 dll 的引用并链接它们。您甚至可以按目标对它们进行排序!

    • 资产/插件/x86
    • 资产/插件/Android
    • ...

    接受的插件都是以下扩展名:.dll、.winmd、.so、.jar、.aar、.xex、.def、.suprx、.prx、.sprx、.rpl、.cpp、.cc 、.c、.h、.jslib、.jspre、.bc、.a、.m、.mm、.swift、.xib、.dylib、.framework、.bundle、.plugin

    Unity 2020.3 Plugins Documentation

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-19
      • 2019-12-16
      • 2023-03-17
      • 2010-12-08
      • 1970-01-01
      • 1970-01-01
      • 2012-02-12
      • 1970-01-01
      相关资源
      最近更新 更多