文档更新

main
bicijinlian 1 day ago
parent 54b62a5278
commit 8c38e03ba9

@ -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
}

@ -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
}

@ -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);
}
Loading…
Cancel
Save