加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

我可以强制C#/ .NET使用最新版本的程序集

发布时间:2020-12-15 22:04:41 所属栏目:百科 来源:网络整理
导读:在处理tAPI(一个Terraria(如果你不知道游戏,只是查找它,它很棒)modding API)时,我们遇到了跨模式代码引用的问题.基本上,你可以从另一个mod调用方法(只要你告诉mod构建器显然添加对该mod的引用),但是当你尝试重新加载mod时,你不能确定东西会起作用:if你从其
在处理tAPI(一个Terraria(如果你不知道游戏,只是查找它,它很棒)modding API)时,我们遇到了跨模式代码引用的问题.基本上,你可以从另一个mod调用方法(只要你告诉mod构建器显然添加对该mod的引用),但是当你尝试重新加载mod时,你不能确定东西会起作用:if你从其他mod引用任何类,它将始终使用加载游戏的FIRST版本,而不是最新版本.这意味着你不能调用任何静态的东西或者从其他mod中实例化这些类,这在你处理某种API mod时是一个真正的问题.

mods本身是标准的C#代码,我们解析了一些额外的JSON数据.

我尝试在tAPI源代码之外做同样的事情,这是我的看法(长代码,告诉pastebin.com永不过期粘贴):http://pastebin.com/hjY57xJh

它有完全相同的问题.第二次调用静态方法时,它应该打印“456”,而不是“123”.

所以,我的问题是:我可以做任何事情来强制游戏使用最新的程序集而不是第一个程序集吗?

我们考虑过使用AppDomains,但是实现它们很麻烦,据我所知,它们通过序列化数据来工作,这可能会使游戏因为必须对mod进行调用而无法播放.

编辑:我真的不介意这样的事实,即在“重新加载”mod之后程序集仍然耗尽内存.我只是希望在“重新加载”之后的新组件优先于旧组件.

解决方法

我完全忘记了这个问题,但是:最后我们忽略了这个问题. tAPI mods现在可以扩展ModBase或APIModBase.如果你正在使用后者,游戏将永远不会真正尝试重新加载mod(程序集) – 它将在第一次加载后保持不变,直到你重新开始游戏.这对于modders来说有点烦人,但是关于这个事实并没有太多可以做的事情.至少所有仅依赖于API mod的内容mod可以自由地重新加载而不会引起任何问题.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读