開發 .NET 專案時常用 NeGet 安裝/管理各種套件, 然而若需要將套件安裝在 Unity 專案會發現無法生效, 這是由於 Unity 編輯器會自動產生 Visual Studio 專案並重置其組態設定.

整合外部套件置 Unity 專案有 2 件事要解決:
1. Unity 重建組態時能加入外部套件
2. Unity 建置遊戲內容時不把外部套件排除 (code stripping)
加入外部套件
- Unity 專案 Assets 目錄下新增 Plugins 目錄. 這是 Unity 默認用來提供使用者使用外部套件的目錄, 包含 Managed plug-ins (即 .NET assemblies) 以及 Native plug-ins (OS 相關, 還沒用過暫不討論).
- 回到 Visual Studio 專案 .sln 所在目錄, Packages 即是存放 NuGet 安裝套件的目錄. 以 Json.NET 套件為例, 複製 .\Packages\Newtonsoft.Json.12.0.3\lib\netstandard2.0\Newtonsoft.Json.dll 至 Plugins 資料夾

建置時外部套件不被排除
- 於 Assets 目錄建立 link.xml 檔案. 加入以下內容:
<linker>
<assembly fullname="System.Core">
<type fullname="System.Linq.Expressions.Interpreter.LightLambda" preserve="all" />
</assembly>
</linker>
- 這是為了防止 Unity 執行 code stripping 時去除這些外部套件 (僅 Unity 適用).

以上設定完成後, 便能在 Unity 專案使用外部套件了.
謝謝觀看~
參考:
1. Unity Plugins https://docs.unity3d.com/Manual/Plugins.html
2. Unity Code Stripping https://docs.unity3d.com/Manual/ManagedCodeStripping.html
3. Unity .NET 整合 https://docs.microsoft.com/zh-tw/visualstudio/cross-platform/unity-scripting-upgrade?view=vs-2019
4. Json.NET https://www.newtonsoft.com/json