加入Plastic SCM后Newtonsoft.Json.dll出现问题

2023-10-09 18:50

本文主要是介绍加入Plastic SCM后Newtonsoft.Json.dll出现问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

加入Plastic SCM后Newtonsoft.Json.dll出现问题

​ 前阵子自己新开了个人项目,由于是新项目,所以想什么东西都用最新的。所以,版本控制这块我使用了Unity官方推出的Plastic SCM。
​ 一开始安装这个插件了,没啥毛病,使用起来也还算OK。但是随着项目代码越堆越多,嗯,问题出现了。

​ 由于我使用到了强大的 Newtonsoft.json库。把它加入工程后,前几天用着没啥毛病,能正常使用,但后来我在编辑器部分的代码里使用到了这个库时,引用了Newtonsoft.json命名空间,发现问题出来了,Unity一直报错:

请添加图片描述

工程里Newtonsoft.json存在了倆。这让我莫名其妙了,定位之下,发现Plastic SCM 这个包里也有个Newtonsoft.json库:

请添加图片描述

好家伙!你还给人家改了个名字,#¥%@#¥,好歹你也改下命名空间呀……你这还藏了个大惊喜!好吧,那我认了,谁叫我用你的东西咧

既然你是铁了心用的了,那我就想想怎么解决咯。由于之前我在非编辑器代码里没问题,可能是因为SCM包里的Json库本身就仅Editor模式运行,而我们写的编辑器部分代码,在引用时,便引用了SCM包里的这个库了……无语……

请添加图片描述

目前我的解决方案:

方案1:

​ 删除原有的库,拷贝Plastic SCM里的到工程,以保持两个dll的版本一致:

​ 1、删除工程里我们自己引用的Json库

​ 2、右键找到Plastic SCM里的Json库的物理路径:

请添加图片描述

请添加图片描述

3、找到它并复制它到我们工程的Plugins目录下,并修改其名字为:Newtonsoft.Json.dll

请添加图片描述

4、再进入工程,等待编译完成即可

方案2:

​ 不删除自己放到工程里的json库,保留它和Plastic SCM共存,但对代码文件的物理路径的存放位置有要求,因为要用到.asmdef。

​ 1、整理好我们编辑器部分的代码,在代码的相对根目录下,创建一个asmdef文件(程序集定义文件):

请添加图片描述

​ 例如我的项目里,我在做一个关卡编辑器,所以我把关卡编辑器的代码都整理到了一个LevelMaker/Scripts目录下,然后在LevelMaker目录下右键创建了asmdef:

请添加图片描述

关于整理代码这块,如果你前期在目录规划上做的好的话,这个应该没什么问题。至于一个asmdef文件囊括多少代码,这个看项目情况,有的项目细粒度会大点。而关于编辑器部分的代码,我一般都会喜欢按每个工具来做划分。

2、创建.asmdef文件后,Unity会把我们编辑器代码括起来,最终编译成一个独立的dll。在这里要勾选.asmdef的设置里的Override Reference选项,会出现Assembly References设置项:

请添加图片描述

3、点积+号增加一个引用,选择我们需要指定引用的dll文件,Apply之后等待编译即可

请添加图片描述

请添加图片描述

4、最后别忘了勾选下设置里的平台选项,不然在发布时编译会出现问题……

请添加图片描述

方案3:

​ 这个方法不推荐,因为我也没用过。只是想到的……

​ 把Plastic SCM单独拷出来,不受PackagesManager维护,放到Plugins目录下,我们就可以对其为所欲为了……比如把它所引用到的Json库替换成我们自己的……嗯,这个听起来和方案1有点像……事实上unity对它所引用的json库也做了修改的……

​ 我不推荐吧,毕竟PackagesManager维护挺香的,有什么版本迭代也能尽快更新到……毕竟,Plastic SCM也仅仅是个工具而已……

方案4:

​ 找到 Json 库源码,改改之后,自己编译自己的 Json 库……嗯……
Newtonsoft.Json库源码:https://github.com/JamesNK/Newtonsoft.Json

这篇关于加入Plastic SCM后Newtonsoft.Json.dll出现问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/174840

相关文章

Springboot3统一返回类设计全过程(从问题到实现)

《Springboot3统一返回类设计全过程(从问题到实现)》文章介绍了如何在SpringBoot3中设计一个统一返回类,以实现前后端接口返回格式的一致性,该类包含状态码、描述信息、业务数据和时间戳,... 目录Spring Boot 3 统一返回类设计:从问题到实现一、核心需求:统一返回类要解决什么问题?

maven异常Invalid bound statement(not found)的问题解决

《maven异常Invalidboundstatement(notfound)的问题解决》本文详细介绍了Maven项目中常见的Invalidboundstatement异常及其解决方案,文中通过... 目录Maven异常:Invalid bound statement (not found) 详解问题描述可

idea粘贴空格时显示NBSP的问题及解决方案

《idea粘贴空格时显示NBSP的问题及解决方案》在IDEA中粘贴代码时出现大量空格占位符NBSP,可以通过取消勾选AdvancedSettings中的相应选项来解决... 目录1、背景介绍2、解决办法3、处理完成总结1、背景介绍python在idehttp://www.chinasem.cna粘贴代码,出

SpringBoot整合Kafka启动失败的常见错误问题总结(推荐)

《SpringBoot整合Kafka启动失败的常见错误问题总结(推荐)》本文总结了SpringBoot项目整合Kafka启动失败的常见错误,包括Kafka服务器连接问题、序列化配置错误、依赖配置问题、... 目录一、Kafka服务器连接问题1. Kafka服务器无法连接2. 开发环境与生产环境网络不通二、序

SpringSecurity中的跨域问题处理方案

《SpringSecurity中的跨域问题处理方案》本文介绍了跨域资源共享(CORS)技术在JavaEE开发中的应用,详细讲解了CORS的工作原理,包括简单请求和非简单请求的处理方式,本文结合实例代码... 目录1.什么是CORS2.简单请求3.非简单请求4.Spring跨域解决方案4.1.@CrossOr

nacos服务无法注册到nacos服务中心问题及解决

《nacos服务无法注册到nacos服务中心问题及解决》本文详细描述了在Linux服务器上使用Tomcat启动Java程序时,服务无法注册到Nacos的排查过程,通过一系列排查步骤,发现问题出在Tom... 目录简介依赖异常情况排查断点调试原因解决NacosRegisterOnWar结果总结简介1、程序在

解决java.util.RandomAccessSubList cannot be cast to java.util.ArrayList错误的问题

《解决java.util.RandomAccessSubListcannotbecasttojava.util.ArrayList错误的问题》当你尝试将RandomAccessSubList... 目录Java.util.RandomAccessSubList cannot be cast to java.

Apache服务器IP自动跳转域名的问题及解决方案

《Apache服务器IP自动跳转域名的问题及解决方案》本教程将详细介绍如何通过Apache虚拟主机配置实现这一功能,并解决常见问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,... 目录​​问题背景​​解决方案​​方法 1:修改 httpd-vhosts.conf(推荐)​​步骤

java反序列化serialVersionUID不一致问题及解决

《java反序列化serialVersionUID不一致问题及解决》文章主要讨论了在Java中序列化和反序列化过程中遇到的问题,特别是当实体类的`serialVersionUID`发生变化或未设置时,... 目录前言一、序列化、反序列化二、解决方法总结前言serialVersionUID变化后,反序列化失

C++ 多态性实战之何时使用 virtual 和 override的问题解析

《C++多态性实战之何时使用virtual和override的问题解析》在面向对象编程中,多态是一个核心概念,很多开发者在遇到override编译错误时,不清楚是否需要将基类函数声明为virt... 目录C++ 多态性实战:何时使用 virtual 和 override?引言问题场景判断是否需要多态的三个关