Skip to content

Docker 镜像中 --additional的插件 互相引用插件之间 不能互相识别到对方 #3260

@Duck15

Description

@Duck15

我猜测:
正常启动服务端:
读serverplugins 插件
插件引用了 其他插件
引用时 读取全局程序集
此时 ServerPlugins内被设置为全局程序集
插件正常引用其他插件 服务器继续加载

我看到的:
docker启动服务端:
读serverplugins 插件
读 -additional插件
插件引用了 其他插件
引用时 读取全局程序集
此时:additional插件并不在全局程序集范围内(?
插件无法引用其他插件
服务器崩溃

[Server API] Error Startup aborted due to an exception in the Server API initialization:
System.InvalidOperationException: Plugin "自动钓鱼R" has thrown an exception during initialization.
 ---> System.IO.FileNotFoundException: Could not load file or assembly 'YamlDotNet, Version=16.0.0.0, Culture=neutral, PublicKeyToken=ec19458f3c15af5e'. The system cannot find the file specified.

File name: 'YamlDotNet, Version=16.0.0.0, Culture=neutral, PublicKeyToken=ec19458f3c15af5e'
   at AutoFish.AFMain.Configuration.Read()
   at AutoFish.AFMain.AutoFish.LoadConfig() in AutoFishR.dll:token 0x6000018+0x0
   at AutoFish.AFMain.AutoFish.Initialize() in AutoFishR.dll:token 0x6000014+0x0
   at TerrariaApi.Server.PluginContainer.Initialize() in /TShock/TerrariaServerAPI/TerrariaServerAPI/TerrariaApi.Server/PluginContainer.cs:line 36
   at TerrariaApi.Server.ServerApi.LoadPlugins() in /TShock/TerrariaServerAPI/TerrariaServerAPI/TerrariaApi.Server/ServerApi.cs:line 447
   --- End of inner exception stack trace ---
   at TerrariaApi.Server.ServerApi.LoadPlugins() in /TShock/TerrariaServerAPI/TerrariaServerAPI/TerrariaApi.Server/ServerApi.cs:line 452
   at TerrariaApi.Server.ServerApi.Initialize(String[] commandLineArgs, Main game) in /TShock/TerrariaServerAPI/TerrariaServerAPI/TerrariaApi.Server/ServerApi.cs:line 127
   at TerrariaApi.Server.HookManager.InitialiseAPI() in /TShock/TerrariaServerAPI/TerrariaServerAPI/TerrariaApi.Server/HookManager.cs:line 29
docker run -it --rm         \
-p 7777:7777 -p 7878:7878         \
-v "$(pwd):/tshock"     \
-v "$(pwd)/worlds:/worlds"     \
-v "$(pwd)/ServerPlugins:/plugins" \
-v "$(pwd)/ServerPlugins/linq2db.dll:/server/ServerPlugins/linq2db.dll" \
-v "$(pwd)/ServerPlugins/LazyAPI.dll:/server/ServerPlugins/LazyAPI.dll"         \
ghcr.io/pryaxis/tshock:stable

其中 /linq2db.dll /LazyAPI.dll
我的$(pwd)/ServerPlugins有YamlDotNet.dll并被挂载到/plugins
但是无法被识别 只有挂载到/server/ServerPlugins/才能被识别
没看懂欸 什么鬼

// AutoFishR, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
// AutoFish.AFMain.Configuration
using System;
using System.Collections.Generic;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Reflection;
using AutoFish.AFMain;
using TShockAPI;
using YamlDotNet.Serialization;
using YamlDotNet.Serialization.NamingConventions;

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions