diff --git a/src/AssemblyInfo.Constants.cs b/src/AssemblyInfo.Constants.cs
index e811efc00..0412c727b 100644
--- a/src/AssemblyInfo.Constants.cs
+++ b/src/AssemblyInfo.Constants.cs
@@ -13,9 +13,11 @@ public static partial class AssemblyInfo
///
/// 与应用程序关联的产品名称。
///
- public const string Product =
-#if APP_REVERSE_PROXY
- $"{Trademark} - Accelerator and script module sub-process";
+ public const string Trademark = "Watt Toolkit";
+
+ public const string Title =
+#if DEBUG
+ $"[Debug] {Trademark}";
#else
Trademark;
#endif
@@ -23,7 +25,7 @@ public static partial class AssemblyInfo
///
/// 与应用程序关联的产品名称。
///
- public const string Trademark = "Watt Toolkit";
+ public const string Product = Trademark;
///
/// 与该应用程序关联的公司名称。
diff --git a/src/AssemblyInfo.cs b/src/AssemblyInfo.cs
index 8938a2460..d31c3c4c0 100644
--- a/src/AssemblyInfo.cs
+++ b/src/AssemblyInfo.cs
@@ -13,9 +13,22 @@ using AssemblyInfo = BD.WTTS.AssemblyInfo;
#endif
#if !UNIT_TEST
+#if APP_REVERSE_PROXY
+[assembly: AssemblyTitle($"{AssemblyInfo.Title}(Accelerator)")]
+#elif APP_HOST
+[assembly: AssemblyTitle($"{AssemblyInfo.Title}(AppHost)")]
+#elif DESIGNER
+[assembly: AssemblyTitle($"{AssemblyInfo.Title}(Designer)")]
+#else
+[assembly: AssemblyTitle(AssemblyInfo.Title)]
+#endif
[assembly: AssemblyTrademark(AssemblyInfo.Trademark)]
[assembly: AssemblyDescription(AssemblyInfo.Description)]
+#if APP_REVERSE_PROXY
+[assembly: AssemblyProduct($"{AssemblyInfo.Product} - Accelerator and script module sub-process")]
+#else
[assembly: AssemblyProduct(AssemblyInfo.Product)]
+#endif
[assembly: AssemblyCopyright(AssemblyInfo.Copyright)]
[assembly: AssemblyCompany(AssemblyInfo.Company)]
[assembly: AssemblyVersion(AssemblyInfo.Version)]
diff --git a/src/BD.WTTS.Client.Avalonia.App/BD.WTTS.Client.Avalonia.App.csproj b/src/BD.WTTS.Client.Avalonia.App/BD.WTTS.Client.Avalonia.App.csproj
index 40838452f..0d20f9da9 100644
--- a/src/BD.WTTS.Client.Avalonia.App/BD.WTTS.Client.Avalonia.App.csproj
+++ b/src/BD.WTTS.Client.Avalonia.App/BD.WTTS.Client.Avalonia.App.csproj
@@ -90,6 +90,21 @@
+
+
+
+
+ all
+
+
+ $(NugetPackageRoot)\splat.drawing\$(Version_Splat_Drawing)\lib\net7.0\Splat.Drawing.dll
+
+
+
+ PreserveNewest
+
+
+
diff --git a/src/BD.WTTS.Client/BD.WTTS.Client.csproj b/src/BD.WTTS.Client/BD.WTTS.Client.csproj
index e054b8a37..6dae094b1 100644
--- a/src/BD.WTTS.Client/BD.WTTS.Client.csproj
+++ b/src/BD.WTTS.Client/BD.WTTS.Client.csproj
@@ -100,8 +100,8 @@
-
+
diff --git a/src/BD.WTTS.Client/Startup/Startup.Commands.cs b/src/BD.WTTS.Client/Startup/Startup.Commands.cs
index e0d672ff6..4f1eef3ae 100644
--- a/src/BD.WTTS.Client/Startup/Startup.Commands.cs
+++ b/src/BD.WTTS.Client/Startup/Startup.Commands.cs
@@ -315,6 +315,77 @@ partial class Startup // 自定义控制台命令参数
}),
};
rootCommand.AddCommand(plugins);
+
+ // -clt types
+ var types = new Command("types", "显示所有类型")
+ {
+ Handler = CommandHandler.Create(() =>
+ {
+ int exitCode = default;
+ using var assemblies_stream = new FileStream(Path.Combine(IOPath.CacheDirectory, "assemblies.txt"), FileMode.OpenOrCreate, FileAccess.Write, FileShare.ReadWrite | FileShare.Delete);
+ using var types_stream = new FileStream(Path.Combine(IOPath.CacheDirectory, "types.txt"), FileMode.OpenOrCreate, FileAccess.Write, FileShare.ReadWrite | FileShare.Delete);
+ try
+ {
+ var assemblies_ = AppDomain.CurrentDomain.GetAssemblies();
+ HashSet assemblies = new(assemblies_);
+ AppDomain.CurrentDomain.AssemblyLoad += (_, args) =>
+ {
+ var assembly = args.LoadedAssembly;
+ if (assemblies.Add(assembly))
+ {
+ ShowAssembly(assembly);
+ }
+ };
+ foreach (var assembly in assemblies_)
+ {
+ ShowAssembly(assembly);
+ }
+
+ void ShowAssembly(Assembly assembly)
+ {
+ lock (types_stream)
+ {
+ var assemblyName = assembly.FullName;
+ if (!string.IsNullOrWhiteSpace(assemblyName))
+ {
+ assemblies_stream.Write(Encoding.UTF8.GetBytes(assemblyName));
+ assemblies_stream.Write("\r\n"u8);
+ }
+ var types = assembly.GetTypes();
+ foreach (var type in types)
+ {
+ var fullName = type.FullName;
+ if (!string.IsNullOrWhiteSpace(fullName))
+ {
+ types_stream.Write(Encoding.UTF8.GetBytes(fullName));
+ types_stream.Write("\r\n"u8);
+ }
+ }
+ }
+ }
+ return exitCode = 200;
+ }
+ catch (Exception ex)
+ {
+ Console.WriteLine(ex);
+ return exitCode = 500;
+ }
+ finally
+ {
+ types_stream.SetLength(types_stream.Position);
+ types_stream.Flush();
+ types_stream.Dispose();
+ assemblies_stream.SetLength(assemblies_stream.Position);
+ assemblies_stream.Flush();
+ assemblies_stream.Dispose();
+ Console.WriteLine($"ExitCode: {exitCode}");
+#if DEBUG
+ Console.ReadLine();
+#endif
+ }
+ }),
+ };
+ rootCommand.AddCommand(types);
}
}
#endif
\ No newline at end of file
diff --git a/src/Directory.Build.props b/src/Directory.Build.props
index faf67a148..b36c62f12 100644
--- a/src/Directory.Build.props
+++ b/src/Directory.Build.props
@@ -9,6 +9,7 @@
enable
true
git
+ false
false
false
false