diff --git a/.github/workflows/build_separate_proj.yml b/.github/workflows/build_separate_proj.yml
new file mode 100644
index 000000000..816e38438
--- /dev/null
+++ b/.github/workflows/build_separate_proj.yml
@@ -0,0 +1,56 @@
+name: Build all C# projects separately
+
+on:
+ push:
+ pull_request:
+ workflow_dispatch:
+
+ release:
+ types:
+ - created
+
+concurrency:
+ group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
+ cancel-in-progress: true
+
+jobs:
+ prepare_matrix:
+ runs-on: windows-2019
+ outputs:
+ projects: ${{ steps.set_outputs.outputs.projects }}
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+
+ - name: Get all.csproj files
+ id: set_outputs
+ run: |
+
+ $projects = Get-ChildItem -Recurse '*.csproj' | ForEach-Object { $_.FullName }
+ $json = $projects | ConvertTo-Json -Compress
+ Write-Host $json
+ echo "::set-output name=projects::$json"
+
+ build-and-test:
+ runs-on: windows-2019
+ needs: prepare_matrix
+ strategy:
+ fail-fast: false
+ matrix:
+ project: ${{ fromJson(needs.prepare_matrix.outputs.projects) }}
+
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+
+ - name: Run tests for each project
+ run: |
+
+ $project = "${{ matrix.project }}"
+ .\Studio.bat $project
+
+ $pname = [IO.Path]::GetFileNameWithoutExtension($project)
+ if ($pname -eq 'PABCNETCclear') {
+ '##' | Set-Content 'a.pas'
+ &".\bin\$pname.exe" .\a.pas
+ }
\ No newline at end of file
diff --git a/Compiler/Compiler.csproj b/Compiler/Compiler.csproj
index 86d9c234b..f58a34c0f 100644
--- a/Compiler/Compiler.csproj
+++ b/Compiler/Compiler.csproj
@@ -161,6 +161,16 @@
{1C9C945A-586D-42A2-A06B-65D84FA7FF78}
{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
+
+ PascalLanguage
+ {BD902586-E0D5-407A-904A-32249B8B709E}
+ false
+
+
+ PascalABCSaushkinParser
+ {1443F539-DCC7-4491-B4FD-B716C739DB3C}
+ false
+
diff --git a/VisualPascalABCNET/VisualPascalABCNET.csproj b/VisualPascalABCNET/VisualPascalABCNET.csproj
index fe9376444..8de68ee1e 100644
--- a/VisualPascalABCNET/VisualPascalABCNET.csproj
+++ b/VisualPascalABCNET/VisualPascalABCNET.csproj
@@ -856,6 +856,11 @@
{857CA1A3-FC88-4BE0-AB6A-D1EE772AB288}
ICSharpCode.Core.WinForms
+
+ PABCNETC
+ {2aef58a1-2bcf-4c4b-ab03-f44bbb2628e6}
+ false
+
diff --git a/VisualPascalABCNET/VisualPascalABCNET_40.csproj b/VisualPascalABCNET/VisualPascalABCNET_40.csproj
index f12a99e02..050b651cc 100644
--- a/VisualPascalABCNET/VisualPascalABCNET_40.csproj
+++ b/VisualPascalABCNET/VisualPascalABCNET_40.csproj
@@ -850,6 +850,11 @@
{857CA1A3-FC88-4BE0-AB6A-D1EE772AB288}
ICSharpCode.Core.WinForms
+
+ PABCNETC
+ {2aef58a1-2bcf-4c4b-ab03-f44bbb2628e6}
+ false
+
diff --git a/VisualPascalABCNETLinux/VisualPascalABCNETLinux.csproj b/VisualPascalABCNETLinux/VisualPascalABCNETLinux.csproj
index 0b7779967..d1d9e3f20 100644
--- a/VisualPascalABCNETLinux/VisualPascalABCNETLinux.csproj
+++ b/VisualPascalABCNETLinux/VisualPascalABCNETLinux.csproj
@@ -958,6 +958,11 @@
{a9ab4282-83b4-41a7-86c3-e5bf6a45e7e2}
SyntaxVisitors
+
+ PABCNETC
+ {2aef58a1-2bcf-4c4b-ab03-f44bbb2628e6}
+ false
+