Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions Modules/PluginManagement/PluginLoader.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ namespace sharwapi.Core.Modules.PluginManagement;

/// <summary>
/// 插件加载器
/// 负责从 Plugins 目录加载实现了 IApiPlugin 的程序集
/// 负责从 plugins 目录加载实现了 IApiPlugin 的程序集
/// </summary>
public class PluginLoader
{
Expand All @@ -33,7 +33,7 @@ public List<IApiPlugin> LoadPlugins()
var loadedPlugins = new List<IApiPlugin>();

// 获取插件目录路径
string pluginsPath = Path.Combine(AppContext.BaseDirectory, "Plugins");
string pluginsPath = Path.Combine(AppContext.BaseDirectory, "plugins");

// 检查插件目录是否存在,如果不存在则创建
if (!Directory.Exists(pluginsPath))
Expand All @@ -50,7 +50,7 @@ public List<IApiPlugin> LoadPlugins()
return loadedPlugins;
}

// 遍历 Plugins 目录下的所有 DLL 文件
// 遍历 plugins 目录下的所有 DLL 文件
foreach (var dllPath in Directory.GetFiles(pluginsPath, "*.dll"))
{
try
Expand Down
23 changes: 23 additions & 0 deletions Modules/Services/ServiceRegistration.cs
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,9 @@ private void RegisterPluginServices(IApiPlugin plugin, IConfiguration configurat
// 确保配置文件存在,如果不存在则从插件的默认配置生成
EnsurePluginConfigFile(plugin, configPath);

// 确保插件专属 data 目录存在
EnsurePluginDataDirectory(plugin);

// 为插件构建独立的配置对象,支持热重载
var pluginConfig = new ConfigurationBuilder()
.AddJsonFile(configPath, optional: true, reloadOnChange: true)
Expand All @@ -60,6 +63,26 @@ private void RegisterPluginServices(IApiPlugin plugin, IConfiguration configurat
plugin.RegisterServices(_services, pluginConfig);
}

/// <summary>
/// 确保插件专属 data 目录存在
/// </summary>
private void EnsurePluginDataDirectory(IApiPlugin plugin)
{
var dataDir = plugin.DataDirectory;
if (!Directory.Exists(dataDir))
{
try
{
Directory.CreateDirectory(dataDir);
_logger.LogInformation("Created data directory for plugin {PluginName} at {DataDir}", plugin.Name, dataDir);
}
catch (Exception ex)
{
_logger.LogError(ex, "Failed to create data directory for plugin {PluginName} at {DataDir}", plugin.Name, dataDir);
}
}
}

/// <summary>
/// 确保插件配置文件存在
/// 如果配置文件不存在,从插件的 DefaultConfig 生成默认配置
Expand Down
2 changes: 1 addition & 1 deletion appsettings.json
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@
"Urls": "http://localhost:5000",
"ApiInfo": {
"Name": "Sharw's API",
"Version": "0.1.0"
"Version": "0.2.2"
},
"RouteOverride": {
}
Expand Down