我猜测:
正常启动服务端:
读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;
我猜测:
正常启动服务端:
读serverplugins 插件
插件引用了 其他插件
引用时 读取全局程序集
此时 ServerPlugins内被设置为全局程序集
插件正常引用其他插件 服务器继续加载
我看到的:
docker启动服务端:
读serverplugins 插件
读 -additional插件
插件引用了 其他插件
引用时 读取全局程序集
此时:additional插件并不在全局程序集范围内(?
插件无法引用其他插件
服务器崩溃
其中 /linq2db.dll /LazyAPI.dll
我的$(pwd)/ServerPlugins有YamlDotNet.dll并被挂载到/plugins
但是无法被识别 只有挂载到/server/ServerPlugins/才能被识别
没看懂欸 什么鬼