feat.融合桌面组件展示优化

This commit is contained in:
lincube
2026-06-07 00:40:48 +08:00
parent 8df0271032
commit 11b8216e5b
20 changed files with 733 additions and 129 deletions

View File

@@ -18,27 +18,37 @@ internal static class NativeDependencyBootstrapper
"libSkiaSharp.dll"
];
public static void Prepare()
public static bool TryPrepare()
{
if (!OperatingSystem.IsWindows())
{
return;
return true;
}
var nativeDirectory = GetNativeDirectory();
Directory.CreateDirectory(nativeDirectory);
var extractedLibraries = new List<string>(NativeLibraryNames.Length);
foreach (var libraryName in NativeLibraryNames)
try
{
extractedLibraries.Add(ExtractLibrary(nativeDirectory, libraryName));
var nativeDirectory = GetNativeDirectory();
Directory.CreateDirectory(nativeDirectory);
var extractedLibraries = new List<string>(NativeLibraryNames.Length);
foreach (var libraryName in NativeLibraryNames)
{
extractedLibraries.Add(ExtractLibrary(nativeDirectory, libraryName));
}
AddToProcessDllSearchPath(nativeDirectory);
foreach (var libraryPath in extractedLibraries)
{
NativeLibrary.Load(libraryPath);
}
return true;
}
AddToProcessDllSearchPath(nativeDirectory);
foreach (var libraryPath in extractedLibraries)
catch (Exception ex)
{
NativeLibrary.Load(libraryPath);
System.Diagnostics.Debug.WriteLine($"[NativeDependencyBootstrapper] Failed to prepare native dependencies: {ex}");
return false;
}
}

View File

@@ -7,8 +7,18 @@ public static class Program
[STAThread]
public static void Main(string[] args)
{
NativeDependencyBootstrapper.Prepare();
BuildAvaloniaApp().StartWithClassicDesktopLifetime(args);
try
{
if (!NativeDependencyBootstrapper.TryPrepare())
{
System.Diagnostics.Debug.WriteLine("[Program] Failed to prepare native dependencies, but continuing...");
}
BuildAvaloniaApp().StartWithClassicDesktopLifetime(args);
}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine($"[Program] Unhandled exception: {ex}");
}
}
public static AppBuilder BuildAvaloniaApp()