From f46980481055e0c3642bb7048e51e658f6f92124 Mon Sep 17 00:00:00 2001 From: Dev Date: Thu, 2 Apr 2026 12:00:47 +0200 Subject: [PATCH] feat(01-01): create WPF solution with Generic Host entry point and NuGet packages - SharepointToolbox.slnx solution with WPF project - net10.0-windows target, PublishTrimmed=false, StartupObject set - App.xaml StartupUri removed, App demoted from ApplicationDefinition to Page - App.xaml.cs: [STAThread] Main with Host.CreateDefaultBuilder + Serilog rolling file - All NuGet packages: CommunityToolkit.Mvvm 8.4.2, MSAL 4.83.3, PnP.Framework 1.18.0, Serilog 4.3.1 - Build: 0 errors, 0 warnings --- SharepointToolbox.slnx | 3 ++ SharepointToolbox/App.xaml | 8 +++++ SharepointToolbox/App.xaml.cs | 40 ++++++++++++++++++++++ SharepointToolbox/MainWindow.xaml | 12 +++++++ SharepointToolbox/MainWindow.xaml.cs | 23 +++++++++++++ SharepointToolbox/SharepointToolbox.csproj | 30 ++++++++++++++++ 6 files changed, 116 insertions(+) create mode 100644 SharepointToolbox.slnx create mode 100644 SharepointToolbox/App.xaml create mode 100644 SharepointToolbox/App.xaml.cs create mode 100644 SharepointToolbox/MainWindow.xaml create mode 100644 SharepointToolbox/MainWindow.xaml.cs create mode 100644 SharepointToolbox/SharepointToolbox.csproj diff --git a/SharepointToolbox.slnx b/SharepointToolbox.slnx new file mode 100644 index 0000000..3c0e3f2 --- /dev/null +++ b/SharepointToolbox.slnx @@ -0,0 +1,3 @@ + + + diff --git a/SharepointToolbox/App.xaml b/SharepointToolbox/App.xaml new file mode 100644 index 0000000..1cfc57a --- /dev/null +++ b/SharepointToolbox/App.xaml @@ -0,0 +1,8 @@ + + + + + diff --git a/SharepointToolbox/App.xaml.cs b/SharepointToolbox/App.xaml.cs new file mode 100644 index 0000000..ad241e0 --- /dev/null +++ b/SharepointToolbox/App.xaml.cs @@ -0,0 +1,40 @@ +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Hosting; +using Serilog; +using System.Windows; + +namespace SharepointToolbox; + +/// +/// Interaction logic for App.xaml +/// +public partial class App : Application +{ + [STAThread] + public static void Main(string[] args) + { + using IHost host = Host.CreateDefaultBuilder(args) + .UseSerilog((ctx, cfg) => cfg + .WriteTo.File( + System.IO.Path.Combine( + Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), + "SharepointToolbox", "logs", "app-.log"), + rollingInterval: RollingInterval.Day, + retainedFileCountLimit: 30)) + .ConfigureServices(RegisterServices) + .Build(); + + host.Start(); + App app = new(); + app.InitializeComponent(); + app.MainWindow = host.Services.GetRequiredService(); + app.MainWindow.Visibility = Visibility.Visible; + app.Run(); + } + + private static void RegisterServices(HostBuilderContext ctx, IServiceCollection services) + { + // Placeholder — services registered in subsequent plans + services.AddSingleton(); + } +} diff --git a/SharepointToolbox/MainWindow.xaml b/SharepointToolbox/MainWindow.xaml new file mode 100644 index 0000000..2dbf194 --- /dev/null +++ b/SharepointToolbox/MainWindow.xaml @@ -0,0 +1,12 @@ + + + + + diff --git a/SharepointToolbox/MainWindow.xaml.cs b/SharepointToolbox/MainWindow.xaml.cs new file mode 100644 index 0000000..bce9213 --- /dev/null +++ b/SharepointToolbox/MainWindow.xaml.cs @@ -0,0 +1,23 @@ +using System.Text; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace SharepointToolbox; + +/// +/// Interaction logic for MainWindow.xaml +/// +public partial class MainWindow : Window +{ + public MainWindow() + { + InitializeComponent(); + } +} \ No newline at end of file diff --git a/SharepointToolbox/SharepointToolbox.csproj b/SharepointToolbox/SharepointToolbox.csproj new file mode 100644 index 0000000..ad202f4 --- /dev/null +++ b/SharepointToolbox/SharepointToolbox.csproj @@ -0,0 +1,30 @@ + + + + WinExe + net10.0-windows + enable + enable + true + false + SharepointToolbox.App + + + + + + + + + + + + + + + + + + + +