From 8c38e03ba987764c4f49496f65aef0158c60eccc Mon Sep 17 00:00:00 2001
From: bicijinlian <bicijinlian@163.com>
Date: Mon, 21 Apr 2025 09:07:28 +0800
Subject: [PATCH] =?UTF-8?q?=E6=96=87=E6=A1=A3=E6=9B=B4=E6=96=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 Docs/0.目录结构.ipynb             |  57 ++++
 Docs/1.0.项目管理.ipynb           | 362 ++++++++++++++++++++++++++
 Docs/1.0项目管理.dib              | 135 ----------
 Docs/{学习.ps1 => 练习测试.ps1} |   0
 Docs/{说明.md => 项目说明.md}   |   0
 5 files changed, 419 insertions(+), 135 deletions(-)
 create mode 100644 Docs/0.目录结构.ipynb
 create mode 100644 Docs/1.0.项目管理.ipynb
 delete mode 100644 Docs/1.0项目管理.dib
 rename Docs/{学习.ps1 => 练习测试.ps1} (100%)
 rename Docs/{说明.md => 项目说明.md} (100%)

diff --git a/Docs/0.目录结构.ipynb b/Docs/0.目录结构.ipynb
new file mode 100644
index 0000000..20d93ce
--- /dev/null
+++ b/Docs/0.目录结构.ipynb
@@ -0,0 +1,57 @@
+{
+ "cells": [
+  {
+   "cell_type": "markdown",
+   "id": "ca0f6117",
+   "metadata": {
+    "polyglot_notebook": {
+     "kernelName": "csharp"
+    }
+   },
+   "source": [
+    "目录结构\n",
+    "========"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "5330fed8",
+   "metadata": {},
+   "source": [
+    "学习项目的目录结构及简要说明!"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "polyglot_notebook": {
+     "kernelName": "csharp"
+    }
+   },
+   "outputs": [],
+   "source": []
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": ".NET (C#)",
+   "language": "C#",
+   "name": ".net-csharp"
+  },
+  "polyglot_notebook": {
+   "kernelInfo": {
+    "defaultKernelName": "csharp",
+    "items": [
+     {
+      "aliases": [],
+      "languageName": "csharp",
+      "name": "csharp"
+     }
+    ]
+   }
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5
+}
diff --git a/Docs/1.0.项目管理.ipynb b/Docs/1.0.项目管理.ipynb
new file mode 100644
index 0000000..5d954ab
--- /dev/null
+++ b/Docs/1.0.项目管理.ipynb
@@ -0,0 +1,362 @@
+{
+ "cells": [
+  {
+   "cell_type": "markdown",
+   "id": "b96595a0",
+   "metadata": {
+    "polyglot_notebook": {
+     "kernelName": "csharp"
+    }
+   },
+   "source": [
+    "管理相关项目\n",
+    "==========="
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "4b3b657a",
+   "metadata": {},
+   "source": [
+    "## 编译并启动项目"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "846f306a",
+   "metadata": {
+    "polyglot_notebook": {
+     "kernelName": "pwsh"
+    }
+   },
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "适用于 .NET MSBuild 版本 17.8.22+bfbb05667\n",
+      "  Determining projects to restore...\n",
+      "  已还原 C:\\Users\\ruyu\\Desktop\\HttpClientStudy\\HttpClientStudy.Model\\HttpClientStudy.Model.csproj (用时 1.72 秒)。\n",
+      "  已还原 C:\\Users\\ruyu\\Desktop\\HttpClientStudy\\HttpClientStudy.Config\\HttpClientStudy.Config.csproj (用时 2.09 秒)。\n",
+      "  已还原 C:\\Users\\ruyu\\Desktop\\HttpClientStudy\\HttpClientStudy.Core\\HttpClientStudy.Core.csproj (用时 2.45 秒)。\n",
+      "  已还原 C:\\Users\\ruyu\\Desktop\\HttpClientStudy\\HttpClientStudy.Service\\HttpClientStudy.Service.csproj (用时 2.46 秒)。\n",
+      "  已还原 C:\\Users\\ruyu\\Desktop\\HttpClientStudy\\HttpClientStudy.WebApp\\HttpClientStudy.WebApp.csproj (用时 2.45 秒)。\n",
+      "  已还原 C:\\Users\\ruyu\\Desktop\\HttpClientStudy\\HttpClientStudy.WebClient\\HttpClientStudy.WebClient.csproj (用时 2.46 秒)。\n",
+      "  已还原 C:\\Users\\ruyu\\Desktop\\HttpClientStudy\\HttpClientStudy.UnitTest\\HttpClientStudy.UnitTest.csproj (用时 2.46 秒)。\n",
+      "  HttpClientStudy.Config -> C:\\Users\\ruyu\\Desktop\\HttpClientStudy\\HttpClientStudy.Config\\bin\\Debug\\net6.0\\HttpClientStudy.Config.dll\n",
+      "  HttpClientStudy.Model -> C:\\Users\\ruyu\\Desktop\\HttpClientStudy\\HttpClientStudy.Model\\bin\\Debug\\net8.0\\HttpClientStudy.Model.dll\n",
+      "  HttpClientStudy.Core -> C:\\Users\\ruyu\\Desktop\\HttpClientStudy\\HttpClientStudy.Core\\bin\\Debug\\net8.0\\HttpClientStudy.Core.dll\n",
+      "  HttpClientStudy.Service -> C:\\Users\\ruyu\\Desktop\\HttpClientStudy\\HttpClientStudy.Service\\bin\\Debug\\net8.0\\HttpClientStudy.Service.dll\n",
+      "  HttpClientStudy.WebClient -> C:\\Users\\ruyu\\Desktop\\HttpClientStudy\\HttpClientStudy.WebClient\\bin\\Debug\\net8.0\\HttpClientStudy.WebClient.dll\n",
+      "  HttpClientStudy.WebApp -> C:\\Users\\ruyu\\Desktop\\HttpClientStudy\\HttpClientStudy.WebApp\\bin\\Debug\\net8.0\\HttpClientStudy.WebApp.dll\n",
+      "  HttpClientStudy.UnitTest -> C:\\Users\\ruyu\\Desktop\\HttpClientStudy\\HttpClientStudy.UnitTest\\bin\\Debug\\net8.0\\HttpClientStudy.UnitTest.dll\n",
+      "\n",
+      "已成功生成。\n",
+      "    0 个警告\n",
+      "    0 个错误\n",
+      "\n",
+      "已用时间 00:00:36.54\n"
+     ]
+    }
+   ],
+   "source": [
+    "# 编译整个解决方案\n",
+    "dotnet build ..\\HttpClientStudy.sln"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "1decd98c",
+   "metadata": {},
+   "source": [
+    "## 发布项目"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "6d436074",
+   "metadata": {
+    "polyglot_notebook": {
+     "kernelName": "pwsh"
+    }
+   },
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "适用于 .NET MSBuild 版本 17.8.22+bfbb05667\n",
+      "  Determining projects to restore...\n",
+      "  所有项目均是最新的,无法还原。\n",
+      "  HttpClientStudy.Config -> C:\\Users\\ruyu\\Desktop\\HttpClientStudy\\HttpClientStudy.Config\\bin\\Release\\net6.0\\HttpClientStudy.Config.dll\n",
+      "  HttpClientStudy.Config -> C:\\Users\\ruyu\\Desktop\\HttpClientStudy\\Docs\\Publish\\HttpClientStudy.Config\\\n",
+      "适用于 .NET MSBuild 版本 17.8.22+bfbb05667\n",
+      "  Determining projects to restore...\n",
+      "  所有项目均是最新的,无法还原。\n",
+      "  HttpClientStudy.Model -> C:\\Users\\ruyu\\Desktop\\HttpClientStudy\\HttpClientStudy.Model\\bin\\Release\\net8.0\\HttpClientStudy.Model.dll\n",
+      "  HttpClientStudy.Model -> C:\\Users\\ruyu\\Desktop\\HttpClientStudy\\Docs\\Publish\\HttpClientStudy.Model\\\n",
+      "适用于 .NET MSBuild 版本 17.8.22+bfbb05667\n",
+      "  Determining projects to restore...\n",
+      "  所有项目均是最新的,无法还原。\n",
+      "  HttpClientStudy.Config -> C:\\Users\\ruyu\\Desktop\\HttpClientStudy\\HttpClientStudy.Config\\bin\\Release\\net6.0\\HttpClientStudy.Config.dll\n",
+      "  HttpClientStudy.Model -> C:\\Users\\ruyu\\Desktop\\HttpClientStudy\\HttpClientStudy.Model\\bin\\Release\\net8.0\\HttpClientStudy.Model.dll\n",
+      "  HttpClientStudy.Core -> C:\\Users\\ruyu\\Desktop\\HttpClientStudy\\HttpClientStudy.Core\\bin\\Release\\net8.0\\HttpClientStudy.Core.dll\n",
+      "  HttpClientStudy.Core -> C:\\Users\\ruyu\\Desktop\\HttpClientStudy\\Docs\\Publish\\HttpClientStudy.Core\\\n",
+      "适用于 .NET MSBuild 版本 17.8.22+bfbb05667\n",
+      "  Determining projects to restore...\n",
+      "  所有项目均是最新的,无法还原。\n",
+      "  HttpClientStudy.Model -> C:\\Users\\ruyu\\Desktop\\HttpClientStudy\\HttpClientStudy.Model\\bin\\Release\\net8.0\\HttpClientStudy.Model.dll\n",
+      "  HttpClientStudy.Config -> C:\\Users\\ruyu\\Desktop\\HttpClientStudy\\HttpClientStudy.Config\\bin\\Release\\net6.0\\HttpClientStudy.Config.dll\n",
+      "  HttpClientStudy.Core -> C:\\Users\\ruyu\\Desktop\\HttpClientStudy\\HttpClientStudy.Core\\bin\\Release\\net8.0\\HttpClientStudy.Core.dll\n",
+      "  HttpClientStudy.Service -> C:\\Users\\ruyu\\Desktop\\HttpClientStudy\\HttpClientStudy.Service\\bin\\Release\\net8.0\\HttpClientStudy.Service.dll\n",
+      "  HttpClientStudy.Service -> C:\\Users\\ruyu\\Desktop\\HttpClientStudy\\Docs\\Publish\\HttpClientStudy.Service\\\n",
+      "适用于 .NET MSBuild 版本 17.8.22+bfbb05667\n",
+      "  Determining projects to restore...\n",
+      "  所有项目均是最新的,无法还原。\n",
+      "  HttpClientStudy.Model -> C:\\Users\\ruyu\\Desktop\\HttpClientStudy\\HttpClientStudy.Model\\bin\\Release\\net8.0\\HttpClientStudy.Model.dll\n",
+      "  HttpClientStudy.Config -> C:\\Users\\ruyu\\Desktop\\HttpClientStudy\\HttpClientStudy.Config\\bin\\Release\\net6.0\\HttpClientStudy.Config.dll\n",
+      "  HttpClientStudy.Core -> C:\\Users\\ruyu\\Desktop\\HttpClientStudy\\HttpClientStudy.Core\\bin\\Release\\net8.0\\HttpClientStudy.Core.dll\n",
+      "  HttpClientStudy.Service -> C:\\Users\\ruyu\\Desktop\\HttpClientStudy\\HttpClientStudy.Service\\bin\\Release\\net8.0\\HttpClientStudy.Service.dll\n",
+      "  HttpClientStudy.WebApp -> C:\\Users\\ruyu\\Desktop\\HttpClientStudy\\HttpClientStudy.WebApp\\bin\\Release\\net8.0\\HttpClientStudy.WebApp.dll\n",
+      "  HttpClientStudy.WebApp -> C:\\Users\\ruyu\\Desktop\\HttpClientStudy\\Docs\\Publish\\HttpClientStudy.WebApp\\\n",
+      "适用于 .NET MSBuild 版本 17.8.22+bfbb05667\n",
+      "  Determining projects to restore...\n",
+      "  所有项目均是最新的,无法还原。\n",
+      "  HttpClientStudy.Model -> C:\\Users\\ruyu\\Desktop\\HttpClientStudy\\HttpClientStudy.Model\\bin\\Release\\net8.0\\HttpClientStudy.Model.dll\n",
+      "  HttpClientStudy.Config -> C:\\Users\\ruyu\\Desktop\\HttpClientStudy\\HttpClientStudy.Config\\bin\\Release\\net6.0\\HttpClientStudy.Config.dll\n",
+      "  HttpClientStudy.Core -> C:\\Users\\ruyu\\Desktop\\HttpClientStudy\\HttpClientStudy.Core\\bin\\Release\\net8.0\\HttpClientStudy.Core.dll\n",
+      "  HttpClientStudy.Service -> C:\\Users\\ruyu\\Desktop\\HttpClientStudy\\HttpClientStudy.Service\\bin\\Release\\net8.0\\HttpClientStudy.Service.dll\n",
+      "  HttpClientStudy.WebClient -> C:\\Users\\ruyu\\Desktop\\HttpClientStudy\\HttpClientStudy.WebClient\\bin\\Release\\net8.0\\HttpClientStudy.WebClient.dll\n",
+      "  HttpClientStudy.WebClient -> C:\\Users\\ruyu\\Desktop\\HttpClientStudy\\Docs\\Publish\\HttpClientStudy.WebClient\\\n",
+      "发布结束!\n"
+     ]
+    }
+   ],
+   "source": [
+    "# 可以发布整个项目,但要发布到默认目录下,指定输出目录的话,会把所有项目都发布到一个目录,造成混乱。\n",
+    "# dotnet publish ..\\HttpClientStudy.sln\n",
+    "\n",
+    "# 分项目发布到Docs目录下\n",
+    "dotnet publish ..\\HttpClientStudy.Config\\HttpClientStudy.Config.csproj -c Release -o .\\Publish\\HttpClientStudy.Config\n",
+    "dotnet publish ..\\HttpClientStudy.Model\\HttpClientStudy.Model.csproj -c Release -o .\\Publish\\HttpClientStudy.Model\n",
+    "dotnet publish ..\\HttpClientStudy.Core\\HttpClientStudy.Core.csproj -c Release -o .\\Publish\\HttpClientStudy.Core\n",
+    "dotnet publish ..\\HttpClientStudy.Service\\HttpClientStudy.Service.csproj -c Release -o .\\Publish\\HttpClientStudy.Service\n",
+    "dotnet publish ..\\HttpClientStudy.WebApp\\HttpClientStudy.WebApp.csproj -c Release -o .\\Publish\\HttpClientStudy.WebApp\n",
+    "dotnet publish ..\\HttpClientStudy.WebClient\\HttpClientStudy.WebClient.csproj -c Release -o .\\Publish\\HttpClientStudy.WebClient\n",
+    "\n",
+    "Write-Host \"发布结束!\""
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "2c600afa",
+   "metadata": {},
+   "source": [
+    "## 启动WebApi"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "2f2b6616",
+   "metadata": {
+    "polyglot_notebook": {
+     "kernelName": "pwsh"
+    }
+   },
+   "outputs": [],
+   "source": [
+    "# 编译并启动WebApi项目\n",
+    "Start-Process -FilePath dotnet -ArgumentList \"run --project ..\\HttpClientStudy.WebApp\\HttpClientStudy.WebApp.csproj\""
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "7eaf7018",
+   "metadata": {
+    "polyglot_notebook": {
+     "kernelName": "pwsh"
+    }
+   },
+   "outputs": [],
+   "source": [
+    "#启动已发布的WebApi项目\n",
+    "Start-Process -FilePath \"Publish\\HttpClientStudy.WebApp\\HttpClientStudy.WebApp.exe\""
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "4067f4b5",
+   "metadata": {},
+   "source": [
+    "## 关闭WebApi"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "ae775f96",
+   "metadata": {
+    "polyglot_notebook": {
+     "kernelName": "pwsh"
+    }
+   },
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "\n",
+      "    $WebAppProcName =\"HttpClientStudy.WebApp.exe\";\n",
+      "    $WebAppProc = Get-Process $WebAppProcName -ErrorAction Ignore\n",
+      "    if($null -eq $WebAppProc)\n",
+      "    {\n",
+      "        Write-Host \"进程没有找到,可能已经退出\"\n",
+      "    }\n",
+      "    else {\n",
+      "        $WebAppProc.Kill();\n",
+      "        Write-Host \"$WebAppProcName 进程已退出\"\n",
+      "    }\n",
+      "\n"
+     ]
+    }
+   ],
+   "source": [
+    "# 关闭项目进程\n",
+    "{\n",
+    "    $WebAppProcName =\"HttpClientStudy.WebApp\";\n",
+    "    $WebAppProc = Get-Process $WebAppProcName -ErrorAction Ignore\n",
+    "    if($null -eq $WebAppProc)\n",
+    "    {\n",
+    "        Write-Host \"进程没有找到,可能已经退出\"\n",
+    "    }\n",
+    "    else {\n",
+    "        $WebAppProc.Kill();\n",
+    "        Write-Host \"$WebAppProcName 进程已退出\"\n",
+    "    }\n",
+    "}"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "a4ef55bc",
+   "metadata": {},
+   "source": [
+    "## 查看应用各种路径"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "7e6f752c",
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "Application.ExecutablePath => Application.ExecutablePath 只适用于WinForm\r\n",
+      "Application.StartupPath => Application.StartupPath 只适用于WinForm\r\n",
+      "AppContext.BaseDirectory => C:\\Users\\ruyu\\.nuget\\packages\\microsoft.dotnet-interactive\\1.0.617701\\tools\\net9.0\\any\\\r\n",
+      "AppDomain.CurrentDomain.BaseDirectory => C:\\Users\\ruyu\\.nuget\\packages\\microsoft.dotnet-interactive\\1.0.617701\\tools\\net9.0\\any\\\r\n",
+      "AppDomain.CurrentDomain.SetupInformation.ApplicationBase => C:\\Users\\ruyu\\.nuget\\packages\\microsoft.dotnet-interactive\\1.0.617701\\tools\\net9.0\\any\\\r\n",
+      "Process.GetCurrentProcess().MainModule.FileName => C:\\Program Files\\dotnet\\dotnet.exe\r\n",
+      "Environment.CurrentDirectory => c:\\Users\\ruyu\\Desktop\\HttpClientStudy\\Docs\r\n",
+      "Environment.GetCommandLineArgs()[0] => C:\\Users\\ruyu\\.nuget\\packages\\microsoft.dotnet-interactive\\1.0.617701\\tools\\net9.0\\any\\Microsoft.DotNet.Interactive.App.dll\r\n",
+      "Directory.GetCurrentDirectory => c:\\Users\\ruyu\\Desktop\\HttpClientStudy\\Docs\r\n",
+      "Assembly.GetExecutingAssembly().Location => \r\n",
+      "Assembly.GetEntryAssembly().Location => C:\\Users\\ruyu\\.nuget\\packages\\microsoft.dotnet-interactive\\1.0.617701\\tools\\net9.0\\any\\Microsoft.DotNet.Interactive.App.dll\r\n",
+      "Assembly.GetExecutingAssembly().CodeBase => file:///C:/Program Files/dotnet/shared/Microsoft.NETCore.App/9.0.4/System.Private.CoreLib.dll\r\n",
+      "Assembly.GetEntryAssembly().CodeBase => file:///C:/Users/ruyu/.nuget/packages/microsoft.dotnet-interactive/1.0.617701/tools/net9.0/any/Microsoft.DotNet.Interactive.App.dll\r\n",
+      "\r\n"
+     ]
+    }
+   ],
+   "source": [
+    "using System;\n",
+    "using System.IO;\n",
+    "using System.Threading;\n",
+    "using System.Threading.Tasks;\n",
+    "using System.Diagnostics;\n",
+    "using System.Reflection;\n",
+    "\n",
+    "//查看各种程序路径\n",
+    "{\n",
+    "    var pathDic = new Dictionary<string, (string desc, string? path)>() \n",
+    "    {\n",
+    "        //当前运行的exe的完整路径,包含exe文件名,只用于WinForm\n",
+    "        {\"Application.ExecutablePath\",(\"程序集基完整路径(仅WinForm)\", \"Application.ExecutablePath 只适用于WinForm\") },\n",
+    "\n",
+    "        //程序的启动路径:只用于WinForm\n",
+    "        {\"Application.StartupPath\",(\"程序集启动路径(仅WinForm)\", \"Application.StartupPath 只适用于WinForm\") },\n",
+    "\n",
+    "        //当前执行的exe或启动项目的路径,通过AppContext\n",
+    "        {\"AppContext.BaseDirectory\",(\"执行或启动路径\", AppContext.BaseDirectory) },  \n",
+    "\n",
+    "        //当前执行的exe的目录,不包含exe名,使用AppDomain\n",
+    "        {\"AppDomain.CurrentDomain.BaseDirectory\",(\"程序集解析程序用于探测程序集的基目录\", AppDomain.CurrentDomain.BaseDirectory) }, \n",
+    "\n",
+    "        //程序安装或启动基目录  包含应用程序的目录的名称\n",
+    "        {\"AppDomain.CurrentDomain.SetupInformation.ApplicationBase\",(\"程序安装或启动基目录\", AppDomain.CurrentDomain.SetupInformation.ApplicationBase) }, \n",
+    "\n",
+    "        //当前进程的主模块路径,包含exe名\n",
+    "        {\"Process.GetCurrentProcess().MainModule.FileName\",(\"当前进程的主模块路径\", Process.GetCurrentProcess()?.MainModule?.FileName) }, \n",
+    "\n",
+    "        //环境变量:用户当前工作目录的完整限定路径\n",
+    "        {\"Environment.CurrentDirectory\",(\"用户当前工作目录的完整限定路径\", Environment.CurrentDirectory) }, \n",
+    "\n",
+    "        //环境变量:当前exe的完整路径,包含exe名,通过命令行参数\n",
+    "        {\"Environment.GetCommandLineArgs()[0]\",(\"当前exe的完整路径\", Environment.GetCommandLineArgs()[0]) }, \n",
+    "\n",
+    "        //当前工作目录的路径(可变)\n",
+    "        {\"Directory.GetCurrentDirectory\",(\"当前工作目录的路径(可变)\", Directory.GetCurrentDirectory()) },\n",
+    "        \n",
+    "        //当前Assembly的加载路径,包含dll或exe名\n",
+    "        {\"Assembly.GetExecutingAssembly().Location\",(\"当前Assembly的加载路径\", Assembly.GetExecutingAssembly().Location) },\n",
+    "\n",
+    "        //入口程序集的路径\n",
+    "        {\"Assembly.GetEntryAssembly().Location\",(\"入口程序集的路径\", Assembly.GetEntryAssembly()?.Location) },\n",
+    "\n",
+    "        //已过时:当前程序集的CodeBase路径,可能为file URI格式\n",
+    "        {\"Assembly.GetExecutingAssembly().CodeBase\",(\"当前程序集的CodeBase路径\", Assembly.GetExecutingAssembly()?.CodeBase) },\n",
+    "\n",
+    "        //已过时:入口程序集的CodeBase路径,可能为file URI格式\n",
+    "        {\"Assembly.GetEntryAssembly().CodeBase\",(\"入口程序集的CodeBase路径\", Assembly.GetEntryAssembly()?.CodeBase) },\n",
+    "    };\n",
+    "\n",
+    "    var message = string.Empty;\n",
+    "    foreach (var item in pathDic)\n",
+    "    {\n",
+    "        message += $\"{item.Key} => {item.Value.path}{Environment.NewLine}\";\n",
+    "    }\n",
+    "\n",
+    "    Console.WriteLine(message);\n",
+    "}"
+   ]
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": ".NET (C#)",
+   "language": "C#",
+   "name": ".net-csharp"
+  },
+  "polyglot_notebook": {
+   "kernelInfo": {
+    "defaultKernelName": "csharp",
+    "items": [
+     {
+      "aliases": [],
+      "languageName": "csharp",
+      "name": "csharp"
+     }
+    ]
+   }
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5
+}
diff --git a/Docs/1.0项目管理.dib b/Docs/1.0项目管理.dib
deleted file mode 100644
index de9f77c..0000000
--- a/Docs/1.0项目管理.dib
+++ /dev/null
@@ -1,135 +0,0 @@
-#!meta
-
-{"kernelInfo":{"defaultKernelName":"csharp","items":[{"name":"csharp","languageName":"csharp"},{"name":"fsharp","languageName":"F#","aliases":["f#","fs"]},{"name":"html","languageName":"HTML"},{"name":"http","languageName":"HTTP"},{"name":"javascript","languageName":"JavaScript","aliases":["js"]},{"name":"mermaid","languageName":"Mermaid"},{"name":"pwsh","languageName":"PowerShell","aliases":["powershell"]},{"name":"value"}]}}
-
-#!markdown
-
-# 管理相关项目
-
-#!markdown
-
-## 编译并启动项目
-
-#!pwsh
-
-# 编译整个解决方案
-dotnet build ..\HttpClientStudy.sln
-
-#!markdown
-
-## 发布项目
-
-#!pwsh
-
-# 可以发布整个项目,但要发布到默认目录下,指定输出目录的话,会把所有项目都发布到一个目录,造成混乱。
-# dotnet publish ..\HttpClientStudy.sln
-
-# 分项目发布到Docs目录下
-dotnet publish ..\HttpClientStudy.Config\HttpClientStudy.Config.csproj -c Release -o .\Publish\HttpClientStudy.Config
-dotnet publish ..\HttpClientStudy.Model\HttpClientStudy.Model.csproj -c Release -o .\Publish\HttpClientStudy.Model
-dotnet publish ..\HttpClientStudy.Core\HttpClientStudy.Core.csproj -c Release -o .\Publish\HttpClientStudy.Core
-dotnet publish ..\HttpClientStudy.Service\HttpClientStudy.Service.csproj -c Release -o .\Publish\HttpClientStudy.Service
-dotnet publish ..\HttpClientStudy.WebApp\HttpClientStudy.WebApp.csproj -c Release -o .\Publish\HttpClientStudy.WebApp
-dotnet publish ..\HttpClientStudy.WebClient\HttpClientStudy.WebClient.csproj -c Release -o .\Publish\HttpClientStudy.WebClient
-
-Write-Host "发布结束!"
-
-#!markdown
-
-## 启动WebApi
-
-#!pwsh
-
-# 编译并启动WebApi项目
-Start-Process -FilePath dotnet -ArgumentList "run --project ..\HttpClientStudy.WebApp\HttpClientStudy.WebApp.csproj"
-
-#!pwsh
-
-#启动已发布的WebApi项目
-Start-Process -FilePath "Publish\HttpClientStudy.WebApp\HttpClientStudy.WebApp.exe"
-
-#!markdown
-
-## 关闭WebApi
-
-#!pwsh
-
-# 关闭项目进程
-{
-    $WebAppProcName ="HttpClientStudy.WebApp";
-    $WebAppProc = Get-Process $WebAppProcName -ErrorAction Ignore
-    if($null -eq $WebAppProc)
-    {
-        Write-Host "进程没有找到,可能已经退出"
-    }
-    else {
-        $WebAppProc.Kill();
-        Write-Host "$WebAppProcName 进程已退出"
-    }
-}
-
-#!markdown
-
-## 查看应用各种路径
-
-#!csharp
-
-using System;
-using System.IO;
-using System.Threading;
-using System.Threading.Tasks;
-using System.Diagnostics;
-using System.Reflection;
-
-//查看各种程序路径
-{
-    var pathDic = new Dictionary<string, (string desc, string? path)>() 
-    {
-        //当前运行的exe的完整路径,包含exe文件名,只用于WinForm
-        {"Application.ExecutablePath",("程序集基完整路径(仅WinForm)", "Application.ExecutablePath 只适用于WinForm") },
-
-        //程序的启动路径:只用于WinForm
-        {"Application.StartupPath",("程序集启动路径(仅WinForm)", "Application.StartupPath 只适用于WinForm") },
-
-        //当前执行的exe或启动项目的路径,通过AppContext
-        {"AppContext.BaseDirectory",("执行或启动路径", AppContext.BaseDirectory) },  
-
-        //当前执行的exe的目录,不包含exe名,使用AppDomain
-        {"AppDomain.CurrentDomain.BaseDirectory",("程序集解析程序用于探测程序集的基目录", AppDomain.CurrentDomain.BaseDirectory) }, 
-
-        //程序安装或启动基目录  包含应用程序的目录的名称
-        {"AppDomain.CurrentDomain.SetupInformation.ApplicationBase",("程序安装或启动基目录", AppDomain.CurrentDomain.SetupInformation.ApplicationBase) }, 
-
-        //当前进程的主模块路径,包含exe名
-        {"Process.GetCurrentProcess().MainModule.FileName",("当前进程的主模块路径", Process.GetCurrentProcess()?.MainModule?.FileName) }, 
-
-        //环境变量:用户当前工作目录的完整限定路径
-        {"Environment.CurrentDirectory",("用户当前工作目录的完整限定路径", Environment.CurrentDirectory) }, 
-
-        //环境变量:当前exe的完整路径,包含exe名,通过命令行参数
-        {"Environment.GetCommandLineArgs()[0]",("当前exe的完整路径", Environment.GetCommandLineArgs()[0]) }, 
-
-        //当前工作目录的路径(可变)
-        {"Directory.GetCurrentDirectory",("当前工作目录的路径(可变)", Directory.GetCurrentDirectory()) },
-        
-        //当前Assembly的加载路径,包含dll或exe名
-        {"Assembly.GetExecutingAssembly().Location",("当前Assembly的加载路径", Assembly.GetExecutingAssembly().Location) },
-
-        //入口程序集的路径
-        {"Assembly.GetEntryAssembly().Location",("入口程序集的路径", Assembly.GetEntryAssembly()?.Location) },
-
-        //已过时:当前程序集的CodeBase路径,可能为file URI格式
-        {"Assembly.GetExecutingAssembly().CodeBase",("当前程序集的CodeBase路径", Assembly.GetExecutingAssembly()?.CodeBase) },
-
-        //已过时:入口程序集的CodeBase路径,可能为file URI格式
-        {"Assembly.GetEntryAssembly().CodeBase",("入口程序集的CodeBase路径", Assembly.GetEntryAssembly()?.CodeBase) },
-    };
-
-    var message = string.Empty;
-    foreach (var item in pathDic)
-    {
-        message += $"{item.Key} => {item.Value.path}{Environment.NewLine}";
-    }
-
-    Console.WriteLine(message);
-}
diff --git a/Docs/学习.ps1 b/Docs/练习测试.ps1
similarity index 100%
rename from Docs/学习.ps1
rename to Docs/练习测试.ps1
diff --git a/Docs/说明.md b/Docs/项目说明.md
similarity index 100%
rename from Docs/说明.md
rename to Docs/项目说明.md