diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 000000000..0fd6a74d5
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,3 @@
+[submodule "src/PluginCore"]
+ path = src/PluginCore
+ url = git@github.com:yiyungent/PluginCore.git
diff --git a/QQBotHub.sln b/QQBotHub.sln
index 5813a0b7c..e36081789 100644
--- a/QQBotHub.sln
+++ b/QQBotHub.sln
@@ -23,6 +23,10 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "QQBotHub.Sdk", "src\QQBotHu
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MoLiPlugin", "plugins\MoLiPlugin\MoLiPlugin.csproj", "{F6087CC7-5239-42E3-92D6-51F25F6E3EE8}"
EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PluginCore", "src\PluginCore\src\PluginCore\PluginCore.csproj", "{AE51E530-8545-40F5-9070-8314E722FEF9}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PluginCore.IPlugins", "src\PluginCore\src\PluginCore.IPlugins\PluginCore.IPlugins.csproj", "{3F1C9ACE-0EC3-45FE-B382-97216429086E}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -57,6 +61,14 @@ Global
{F6087CC7-5239-42E3-92D6-51F25F6E3EE8}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F6087CC7-5239-42E3-92D6-51F25F6E3EE8}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F6087CC7-5239-42E3-92D6-51F25F6E3EE8}.Release|Any CPU.Build.0 = Release|Any CPU
+ {AE51E530-8545-40F5-9070-8314E722FEF9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {AE51E530-8545-40F5-9070-8314E722FEF9}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {AE51E530-8545-40F5-9070-8314E722FEF9}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {AE51E530-8545-40F5-9070-8314E722FEF9}.Release|Any CPU.Build.0 = Release|Any CPU
+ {3F1C9ACE-0EC3-45FE-B382-97216429086E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {3F1C9ACE-0EC3-45FE-B382-97216429086E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {3F1C9ACE-0EC3-45FE-B382-97216429086E}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {3F1C9ACE-0EC3-45FE-B382-97216429086E}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -68,6 +80,8 @@ Global
{D4A8C051-C14E-4123-AF20-794A98FD3662} = {4B4BFBBE-8CE4-453C-B05A-EAFE933B79C9}
{56C78578-C690-4013-8AB6-1ED28770C2B1} = {BDFD03E4-0A99-49A3-95A7-F7132EC4FF00}
{F6087CC7-5239-42E3-92D6-51F25F6E3EE8} = {4B4BFBBE-8CE4-453C-B05A-EAFE933B79C9}
+ {AE51E530-8545-40F5-9070-8314E722FEF9} = {BDFD03E4-0A99-49A3-95A7-F7132EC4FF00}
+ {3F1C9ACE-0EC3-45FE-B382-97216429086E} = {BDFD03E4-0A99-49A3-95A7-F7132EC4FF00}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {3F1D77E3-11F8-4B5B-BEED-EE2816D57A86}
diff --git a/src/PluginCore b/src/PluginCore
new file mode 160000
index 000000000..90d07e166
--- /dev/null
+++ b/src/PluginCore
@@ -0,0 +1 @@
+Subproject commit 90d07e166273c523de3d353ba071ec3da7cb0651
diff --git a/src/QQBotHub.Sdk/QQBotHub.Sdk.csproj b/src/QQBotHub.Sdk/QQBotHub.Sdk.csproj
index eef107ce5..82170b66b 100644
--- a/src/QQBotHub.Sdk/QQBotHub.Sdk.csproj
+++ b/src/QQBotHub.Sdk/QQBotHub.Sdk.csproj
@@ -17,8 +17,15 @@
-
+
+
+
+
+
+
+
+
diff --git a/src/QQBotHub.Web/QQBotHub.Web.csproj b/src/QQBotHub.Web/QQBotHub.Web.csproj
index f0edde46a..95bda20c6 100644
--- a/src/QQBotHub.Web/QQBotHub.Web.csproj
+++ b/src/QQBotHub.Web/QQBotHub.Web.csproj
@@ -11,13 +11,16 @@
-
-
-
+
+
+
+
+
+