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