diff --git a/.github/workflows/build-tests-artifact.yml b/.github/workflows/build-tests-artifact.yml
new file mode 100644
index 00000000..a20377f0
--- /dev/null
+++ b/.github/workflows/build-tests-artifact.yml
@@ -0,0 +1,98 @@
+name: Build Tests Artifact
+
+on:
+ workflow_dispatch:
+ push:
+ branches: [ develop ]
+ pull_request:
+ branches: [ develop ]
+
+jobs:
+ collect-and-upload-tests:
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v4
+
+ - name: Create _Tests_ directory
+ run: mkdir -p _Tests_
+
+ # TODO: The toolkit will need to be built before copying files. This will need to be done before this step, including building the dependecies BHoM, BHoM_Engine and BHoM_Adapter.continue-on-error:
+ # TODO: For now this is just pushing up the files that are already in the Build directory to enable quicker evaluation of overall workflow of test files.
+ - name: Copy files from Build directory
+ run: |
+ # Copy .dll files (only from Build directory, not subdirectories)
+ find Build -maxdepth 1 -name "*.dll" -type f -exec cp {} _Tests_/ \;
+
+ # Copy .exe files (only from Build directory, not subdirectories)
+ find Build -maxdepth 1 -name "*.exe" -type f -exec cp {} _Tests_/ \;
+
+ # Copy .json files (only from Build directory, not subdirectories)
+ find Build -maxdepth 1 -name "*.json" -type f -exec cp {} _Tests_/ \;
+
+
+ # List copied files for verification
+ echo "Files copied to _Tests_:"
+ ls -la _Tests_/
+
+ - name: Identify tests
+ run: |
+ set -euo pipefail
+ echo "Searching for test DLLs in _Tests_ folder..."
+
+ tests_dir="_Tests_"
+ if [ ! -d "$tests_dir" ]; then
+ echo "✗ $tests_dir folder not found"
+ exit 1
+ fi
+
+ # Prepare output file
+ out_file="$tests_dir/TestDlls.txt"
+ : > "$out_file"
+
+ found=0
+ shopt -s nullglob
+ for dll in "$tests_dir"/*.dll; do
+ base=$(basename "$dll" .dll)
+
+ # Skip known non-test DLLs by name patterns
+ case "$base" in
+ NUnit_Engine|TestSetup_Engine|testhost|testcentric.engine.metadata|\
+ Microsoft.*|System.*|nunit3.*|nunit.*|NUnit3.*|Newtonsoft.*|NuGet.*)
+ continue ;;
+ *_oM|*_Engine)
+ continue ;;
+ esac
+
+ # Check for test frameworks by scanning binary strings
+ if command -v strings >/dev/null 2>&1; then
+ if strings -a "$dll" 2>/dev/null | grep -qiE '(^|/)nunit\.framework|xunit|mstest\.testframework'; then
+ echo "$base.dll" >> "$out_file"
+ echo " ✓ $base.dll"
+ found=$((found+1))
+ fi
+ else
+ if grep -a -qiE 'nunit\.framework|xunit|mstest\.testframework' "$dll"; then
+ echo "$base.dll" >> "$out_file"
+ echo " ✓ $base.dll"
+ found=$((found+1))
+ fi
+ fi
+ done
+
+ if [ "$found" -eq 0 ]; then
+ echo "✗ No test DLLs found in $tests_dir"
+ exit 1
+ fi
+
+ echo "✓ Wrote $found test DLL name(s) to $out_file"
+
+ - name: Upload Tests artifact
+ uses: actions/upload-artifact@v4
+ with:
+ name: Tests
+ path: |
+ _Tests_/
+ StartupHook/*.dll
+ retention-days: 30
diff --git a/CodeComplianceTest_Engine/CodeComplianceTest_Engine.csproj b/CodeComplianceTest_Engine/CodeComplianceTest_Engine.csproj
index be644e6b..9cb5a5f9 100644
--- a/CodeComplianceTest_Engine/CodeComplianceTest_Engine.csproj
+++ b/CodeComplianceTest_Engine/CodeComplianceTest_Engine.csproj
@@ -1,28 +1,26 @@
-
-netstandard2.0
- Library
- BH.Engine.Test.CodeCompliance
- true
- true
- ..\Build\
- ComplianceTestBuild;Debug;Release
- CodeComplianceTest_Engine
- https://github.com/BHoM/Test_Toolkit
- CodeComplianceTest_Engine
- Copyright � https://github.com/BHoM
- 9.0.0.0
- 9.3.0.0
- true
-
-
-
-
-
- true
- ..\Build\
- MinimumRecommendedRules.ruleset
-
+
+ netstandard2.0
+ 8.0.0.0
+ https://github.com/BHoM/BHoM_Engine
+ 5.0.0
+ BHoM
+ Copyright © https://github.com/BHoM
+ true
+ BH.Engine.Test.CodeCompliance
+ 8.2.0.0
+ ..\Build\
+ Debug;Release
+
+
+
+
+
+
+
+
+
+
$(ProgramData)\BHoM\Assemblies\Dimensional_oM.dll
@@ -64,27 +62,9 @@
$(ProgramData)\BHoM\Assemblies\Test_oM.dll
False
-
- all
- runtime; build; native; contentfiles; analyzers; buildtransitive
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
\ No newline at end of file
diff --git a/CodeComplianceTest_Engine/Compute/Check.cs b/CodeComplianceTest_Engine/Compute/Check.cs
index 009f68bc..cd130a1a 100644
--- a/CodeComplianceTest_Engine/Compute/Check.cs
+++ b/CodeComplianceTest_Engine/Compute/Check.cs
@@ -59,7 +59,9 @@ public static TestResult Check(this MethodInfo method, SyntaxNode node, string c
method.GetCustomAttributes().All(condition => condition.IPasses(node)) &&
(checkType != null && method.GetCustomAttribute()?.ComplianceType == checkType))
{
- Func