unity3d 使用外部dll的Unity“多个同名预编译程序集”

1qczuiv0  于 2022-11-16  发布在  其他
关注(0)|答案(4)|浏览(831)

我有一个“共享”项目,在客户端(Unity)和服务器(C#服务器)之间共享代码
这两个项目都需要Newtonsoft.Json.dll
当我编译Shared.dll并将其放在Unity的Resources文件夹中时(因此它包含在构建中),我收到以下错误:

PrecompiledAssemblyException: Multiple precompiled assemblies with the same name Newtonsoft.Json.dll included or the current platform. Only one assembly with the same name is allowed per platform. Assembly paths: 
Assets/Resources/Shared/Newtonsoft.Json.dll
C:/Users/rotmg/Documents/GitHub/AG-LNL/AG-LNL-Client/Library/PackageCache/com.unity.nuget.newtonsoft-json@2.0.0-preview/Runtime/Newtonsoft.Json.dll

我意识到这是Unity对Newtonsoft.Json的依赖和我的Shared.dll之间的冲突。
本回答:
https://answers.unity.com/questions/1697304/how-to-resolve-multiple-precompiled-assemblies-err.html
要求使用“将所有依赖项合并为一个.dll”
因此,我尝试使用Costura.Fody构建一个捆绑所有依赖项的.dll,但随后出现一个错误,提示我应该添加对Shared所具有的依赖项的引用。(NLog、BouncyCastle等)
如何解决此冲突?

i2byvkas

i2byvkas1#

在我的情况下,从Unity 2020.3.8f1更新到2020.3.17f1,将com.unity.collab-proxy包从1.3.9更新到1.7.1后,它得到了依赖com.unity.nuget.newtonsoft-json,这与我在Assets文件夹中手动导入的JsonDotNet包冲突。

从Assets文件夹中删除手动导入JsonDotNet包有帮助删除后,关闭Unity,删除文件夹YouProjectFolder\Library\PackageCacheYouProjectFolder\Library\ScriptAssemblies并重新启动Unity

ep6jt1vc

ep6jt1vc2#

基于这个答案:https://www.gitmemory.com/issue/juicycleff/flutter-unity-view-widget/414/859018825
最好方法是导入不带JsonDotNet文件夹项目,或者在导入之前删除JsonDotNet文件夹

i7uaboj4

i7uaboj43#

我在使用newtonsoftiderjsoniderdll添加另一个包后遇到了这个问题,导致了冲突。对我来说,删除其中一个重复项解决了这个问题。

djmepvbi

djmepvbi4#

您在Console部分有两个错误消息,分别指示了具有相同名称的每个文件的位置。搜索其中一个文件(您要删除的文件)并将其删除。Unity将重新编译脚本,不会出现任何错误。
从Windows的“Windows资源管理器”或MacOS的“Finder”中搜索文件
不要听别人的,大多数的答案会让你打破你的整个项目。

相关问题