diff --git a/.github/workflows/dotnetcore.yml b/.github/workflows/dotnetcore.yml
index 397d8cb..e9587be 100644
--- a/.github/workflows/dotnetcore.yml
+++ b/.github/workflows/dotnetcore.yml
@@ -14,16 +14,16 @@ jobs:
steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- name: Checkout source
- uses: actions/checkout@v2
+ uses: actions/checkout@v4
with:
# Checkout libvt100 & litehtml
submodules: 'true'
# Setup .NET
- - name: Setup .NET Core
- uses: actions/setup-dotnet@v1
+ - name: Setup .NET
+ uses: actions/setup-dotnet@v4
with:
- dotnet-version: 3.1.101
+ dotnet-version: 10.0.x
# Restore packages
- name: Restore
diff --git a/UPGRADE_NOTES.md b/UPGRADE_NOTES.md
new file mode 100644
index 0000000..47f72b3
--- /dev/null
+++ b/UPGRADE_NOTES.md
@@ -0,0 +1,70 @@
+# .NET 10 and C# 12 Upgrade Notes
+
+## Completed Upgrades
+
+### Main Repository Projects
+
+All projects in the main repository have been successfully upgraded to .NET 10 and C# 12:
+
+- **WinPrint.Core**: netcoreapp3.1 → net10.0-windows, C# 8.0 → C# 12
+- **WinPrint.LiteHtml**: netcoreapp3.1 → net10.0-windows
+- **WinPrint.Console**: netcoreapp3.1 → net10.0-windows
+- **WinPrint.WinForms**: netcoreapp3.1 → net10.0-windows
+- **WinPrint.Core.UnitTests**: netcoreapp3.1 → net10.0-windows
+
+### Package Updates
+
+Major package updates include:
+- System.Linq.Dynamic.Core: 1.1.0 → 1.7.1 (fixes CVE vulnerability)
+- PowerShell SDK: 7.0.0 → 7.4.0
+- Serilog: 2.9.1 → 4.0.0
+- xUnit: 2.4.1 → 2.7.0
+- Microsoft.NET.Test.Sdk: 16.6.1 → 17.9.0
+- System.Drawing.Common: 4.7.0 → 8.0.0
+
+### Build System
+
+- GitHub Actions workflow updated to use .NET 10.0.x
+- PostBuild events made cross-platform compatible with OS conditionals
+
+## Submodule Updates Required
+
+The following submodules need to be updated in their respective repositories:
+
+### 1. libvt100 (https://github.com/tig/libvt100.git)
+
+**File**: `src/libvt100.csproj`
+
+Changes made:
+- SDK: Microsoft.NET.Sdk.WindowsDesktop → Microsoft.NET.Sdk
+- TargetFrameworks: netcoreapp3.1 → net10.0;net10.0-windows (multi-target)
+- LangVersion: 8.0 → 12
+- Added: EnableWindowsTargeting = true
+- System.Drawing.Common: 4.7.0 → 8.0.0
+- Added conditional UseWindowsForms for net10.0-windows target
+
+**Reason**: The library needed multi-targeting to support both Windows and non-Windows builds. The net10.0 target allows the library to be referenced by cross-platform projects, while net10.0-windows provides Windows Forms support.
+
+### 2. PowershellAsync (https://github.com/tig/PowershellAsync.git)
+
+**File**: `PowerShellAsync/PowerShellAsync.csproj`
+
+Changes made:
+- TargetFramework: netcoreapp3.1 → net10.0
+- System.Management.Automation: 7.0.0 → 7.4.0
+
+**Reason**: Updated to support .NET 10 and latest PowerShell SDK.
+
+## Next Steps
+
+1. **For submodule owners**: The changes made to libvt100 and PowershellAsync should be committed to their respective repositories
+2. **After submodule updates**: Update the submodule references in this repository to point to the new commits
+3. **Testing**: Run full integration tests on Windows to ensure all functionality works correctly
+4. **Optional**: Consider updating the installer project (currently uses .NET Framework 4.7.2)
+
+## Verification
+
+✅ All projects build successfully on Linux (CI environment)
+✅ All unit tests pass
+✅ Cross-platform build compatibility verified
+✅ Security vulnerability in System.Linq.Dynamic.Core resolved
diff --git a/src/WinPrint.Console/WinPrint.Console.csproj b/src/WinPrint.Console/WinPrint.Console.csproj
index 55b1148..7a76ff7 100644
--- a/src/WinPrint.Console/WinPrint.Console.csproj
+++ b/src/WinPrint.Console/WinPrint.Console.csproj
@@ -3,11 +3,12 @@
Exe
- netcoreapp3.1
+ net10.0-windows
WinPrint.Console
winprint Console App
winprint
+ true
2.0.5.103
Kindel Systems
@@ -21,16 +22,16 @@
-
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
-
-
+
+
+
-
-
+
+
@@ -53,7 +54,7 @@
-
+
diff --git a/src/WinPrint.Core/WinPrint.Core.csproj b/src/WinPrint.Core/WinPrint.Core.csproj
index 70c5d75..8e4200d 100644
--- a/src/WinPrint.Core/WinPrint.Core.csproj
+++ b/src/WinPrint.Core/WinPrint.Core.csproj
@@ -2,7 +2,7 @@
- netcoreapp3.1
+ net10.0-windows
AnyCPU;x64;x86
2.0.5.102
Kindel Systems
@@ -12,7 +12,8 @@
Copyright Kindel Systems, LLC
No release notes.
https://github.com/tig/winprint
- 8.0
+ 12
+ true
@@ -36,20 +37,20 @@
-
-
-
+
+
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
-
+
+
diff --git a/src/WinPrint.LiteHtml/WinPrint.LiteHtml.csproj b/src/WinPrint.LiteHtml/WinPrint.LiteHtml.csproj
index 830bfc7..3bd1566 100644
--- a/src/WinPrint.LiteHtml/WinPrint.LiteHtml.csproj
+++ b/src/WinPrint.LiteHtml/WinPrint.LiteHtml.csproj
@@ -2,9 +2,10 @@
- netcoreapp3.1
+ net10.0-windows
winprint LiteHtml
WinPrint.LiteHtml
+ true
2.0.5.100
Kindel Systems
@@ -42,9 +43,9 @@
-
-
-
+
+
+
diff --git a/src/WinPrint.WinForms/WinPrint.WinForms.csproj b/src/WinPrint.WinForms/WinPrint.WinForms.csproj
index 94855c9..0296f63 100644
--- a/src/WinPrint.WinForms/WinPrint.WinForms.csproj
+++ b/src/WinPrint.WinForms/WinPrint.WinForms.csproj
@@ -1,13 +1,14 @@
-
+
WinExe
- netcoreapp3.1
+ net10.0-windows
true
true
WinPrint.Winforms.Program
Document.ico
+ true
winprint GUI
winprintgui
@@ -30,7 +31,7 @@
-
+
@@ -54,7 +55,7 @@
-
+
diff --git a/tests/WinPrint.Core.UnitTests/WinPrint.Core.UnitTests.csproj b/tests/WinPrint.Core.UnitTests/WinPrint.Core.UnitTests.csproj
index 8588aa0..8f7c2f6 100644
--- a/tests/WinPrint.Core.UnitTests/WinPrint.Core.UnitTests.csproj
+++ b/tests/WinPrint.Core.UnitTests/WinPrint.Core.UnitTests.csproj
@@ -1,20 +1,21 @@
- netcoreapp3.1
+ net10.0-windows
+ true
false
-
-
-
-
+
+
+
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
@@ -24,7 +25,7 @@
-
+