簡體   English   中英

Unity 沒有找到另一個 DLL 的 DLL 依賴項(都在 Assets 文件夾中)

[英]Unity not finding DLL dependency of another DLL (both in Assets folder)

背景信息(可能相關):

  • 使用 Unity 2017.2 並將“腳本運行時版本”設置為“實驗性(.NET 4.6 等效)”
  • 在 Visual Studio 2017 中編寫代碼(不是 MonoDevelop)

我有一個直接使用第三方 DLL(“庫 A”)的 Unity 項目,我已將其添加到項目的 Assets 文件夾中。 庫 A 依賴於另一個 DLL,即“庫 B”,我也將其添加到 Assets 文件夾中。 庫 B 未被 Unity 項目中的任何腳本使用。 庫 A 和 B 都是用 C# 編寫的,目標是 .NET 4,也就是說,它們都是托管代碼。

添加到 Assets 文件夾后,當在 Visual Studio 中打開項目時,庫 A 和 B 都列在“參考”下,並且“Copy Local”都設置為“True”(雖然我不知道 Unity 是否使用它)財產)。

但是,在 Unity 編輯器中運行項目時,對庫 A 的各種調用都會引發異常,表明庫 B 不可用。 我能夠讓它工作的唯一方法是將庫 B 的副本放在C:\\Program Files\\Unity\\Editor (包含 Unity.exe 的目錄,Unity 編輯器可執行文件)。

我在其他非 Unity 項目中使用過庫 A 和 B,並且從未遇到任何問題(只要引用它們,Visual Studio 就會將它們都復制到輸出目錄中)。 我是否缺少告訴它需要庫 B 所必需的特定於 Unity 的步驟?

我只是想分享我是如何完成這項工作的。 順便說一下,我正在使用 Unity 2019.2.10f1。

我的項目中有許多我自己和第三方管理的 dll 文件,我將它們全部復制到 ProjectFolder\\Assets\\Resources\\

我從來沒有遇到過調用任何庫或那些庫相互調用的問題。

也許問題在於,由於您的第二個庫(庫 B)沒有被任何腳本引用,Unity 沒有捆綁它並使其在調試/運行時可用。

根據我的經驗,我發現如果您希望在構建中保留某些內容(任何可能在運行時動態使用的未引用資產),請將其粘貼到 Assets 的Resources子文件夾中。

第二種選擇可能是構造對第二個“庫 B”的一些虛擬調用(它什么也不做,可能是構造和轉儲),以便 Unity 認為它是必要的並將其包含在您的構建中。

不確定這是否有幫助,但祝你好運!

Unity 實際上在 Assets 文件夾下有一個名為“Plugins”的特殊文件夾,您可以使用它。 這將允許您添加對在 Unity 之外創建的 dll 的引用並鏈接到它們。 您甚至可以按目標對它們進行排序!

  • 資產/插件/x86
  • 資產/插件/安卓
  • ...

接受的插件包括以下所有擴展名:.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 插件文檔

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM