【发布时间】: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