[英]Unity not finding DLL dependency of another DLL (both in Assets folder)
背景信息(可能相關):
我有一個直接使用第三方 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 的引用並鏈接到它們。 您甚至可以按目標對它們進行排序!
接受的插件包括以下所有擴展名:.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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.