diff --git a/TUnit.Core.SourceGenerator/CodeGenerators/LanguageVersionCheckGenerator.cs b/TUnit.Core.SourceGenerator/CodeGenerators/LanguageVersionCheckGenerator.cs
new file mode 100644
index 0000000000..48a1ff8ab1
--- /dev/null
+++ b/TUnit.Core.SourceGenerator/CodeGenerators/LanguageVersionCheckGenerator.cs
@@ -0,0 +1,42 @@
+using Microsoft.CodeAnalysis;
+using Microsoft.CodeAnalysis.CSharp;
+
+namespace TUnit.Core.SourceGenerator;
+
+[Generator]
+public class LanguageVersionCheckGenerator : IIncrementalGenerator
+{
+ public void Initialize(IncrementalGeneratorInitializationContext context)
+ {
+ var settings = context.CompilationProvider
+ .Select((c, _) =>
+ {
+ LanguageVersion? csharpVersion = c is CSharpCompilation comp
+ ? comp.LanguageVersion
+ : null;
+
+ return csharpVersion;
+ });
+
+ context.RegisterSourceOutput(settings, static (sourceProductionContext, languageVersion) =>
+ {
+ if (languageVersion is null)
+ {
+ return;
+ }
+
+ if((int)languageVersion.Value < 1200)
+ {
+ sourceProductionContext.ReportDiagnostic(Diagnostic.Create(
+ new DiagnosticDescriptor(
+ "TUNIT_LANG_001",
+ "Language Version Check",
+ "TUnit requires C# 12 or higher when using Source Generation.",
+ "Usage",
+ DiagnosticSeverity.Error,
+ true),
+ Location.None));
+ }
+ });
+ }
+}
\ No newline at end of file
diff --git a/TUnit.Engine/TUnit.Engine.props b/TUnit.Engine/TUnit.Engine.props
index bc9b6a2c9b..3bf80f5228 100644
--- a/TUnit.Engine/TUnit.Engine.props
+++ b/TUnit.Engine/TUnit.Engine.props
@@ -7,7 +7,6 @@
true
true
false
- latest
Exe
false
diff --git a/TUnit.Engine/TUnit.Engine.targets b/TUnit.Engine/TUnit.Engine.targets
index 9908ae471d..e1ab616fe2 100644
--- a/TUnit.Engine/TUnit.Engine.targets
+++ b/TUnit.Engine/TUnit.Engine.targets
@@ -1,6 +1,10 @@
-
+
+
+ latest
+
+
@@ -13,4 +17,4 @@
-
+
\ No newline at end of file
diff --git a/TUnit.TestProject.VB.NET/TUnit.TestProject.VB.NET.vbproj b/TUnit.TestProject.VB.NET/TUnit.TestProject.VB.NET.vbproj
index 7a6918c49a..504c6d87f3 100644
--- a/TUnit.TestProject.VB.NET/TUnit.TestProject.VB.NET.vbproj
+++ b/TUnit.TestProject.VB.NET/TUnit.TestProject.VB.NET.vbproj
@@ -1,5 +1,9 @@
+
+ latest
+
+
diff --git a/TUnit/TUnit.props b/TUnit/TUnit.props
index 860822c9b1..d03d97b2d0 100644
--- a/TUnit/TUnit.props
+++ b/TUnit/TUnit.props
@@ -7,7 +7,6 @@
true
true
false
- latest
Exe
diff --git a/TUnit/TUnit.targets b/TUnit/TUnit.targets
index 341ff22152..5a237a978c 100644
--- a/TUnit/TUnit.targets
+++ b/TUnit/TUnit.targets
@@ -1,6 +1,10 @@
+
+ latest
+
+