diff --git a/csharp/autobuilder/Semmle.Autobuild.CSharp/BUILD.bazel b/csharp/autobuilder/Semmle.Autobuild.CSharp/BUILD.bazel
index 904edb3ca5596..b1143162a6464 100644
--- a/csharp/autobuilder/Semmle.Autobuild.CSharp/BUILD.bazel
+++ b/csharp/autobuilder/Semmle.Autobuild.CSharp/BUILD.bazel
@@ -14,6 +14,7 @@ codeql_csharp_binary(
"//csharp/autobuilder/Semmle.Autobuild.Shared",
"//csharp/extractor/Semmle.Extraction.CSharp",
"//csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching",
+ "//csharp/extractor/Semmle.Extraction.CSharp.Driver:bin/Semmle.Extraction.CSharp.Driver",
"//csharp/extractor/Semmle.Extraction.CSharp.Standalone:bin/Semmle.Extraction.CSharp.Standalone",
"//csharp/extractor/Semmle.Util",
"@paket.main//microsoft.build",
diff --git a/csharp/autobuilder/Semmle.Autobuild.CSharp/CSharpAutobuilder.cs b/csharp/autobuilder/Semmle.Autobuild.CSharp/CSharpAutobuilder.cs
index dafda9a8f2ab6..577eed2a0c8cf 100644
--- a/csharp/autobuilder/Semmle.Autobuild.CSharp/CSharpAutobuilder.cs
+++ b/csharp/autobuilder/Semmle.Autobuild.CSharp/CSharpAutobuilder.cs
@@ -15,6 +15,7 @@ public class CSharpAutobuildOptions : AutobuildOptionsShared
private const string extractorOptionPrefix = "CODEQL_EXTRACTOR_CSHARP_OPTION_";
public bool Buildless { get; }
+ public string? Binlog { get; }
public override Language Language => Language.CSharp;
@@ -29,7 +30,7 @@ public CSharpAutobuildOptions(IBuildActions actions) : base(actions)
actions.GetEnvironmentVariable(extractorOptionPrefix + "BUILDLESS").AsBool("buildless", false) ||
actions.GetEnvironmentVariable(buildModeEnvironmentVariable)?.ToLower() == "none";
-
+ Binlog = actions.GetEnvironmentVariable(extractorOptionPrefix + "BINLOG");
}
}
diff --git a/csharp/autobuilder/Semmle.Autobuild.CSharp/Semmle.Autobuild.CSharp.csproj b/csharp/autobuilder/Semmle.Autobuild.CSharp/Semmle.Autobuild.CSharp.csproj
index 7c4f1d6817730..515fecd5bec69 100644
--- a/csharp/autobuilder/Semmle.Autobuild.CSharp/Semmle.Autobuild.CSharp.csproj
+++ b/csharp/autobuilder/Semmle.Autobuild.CSharp/Semmle.Autobuild.CSharp.csproj
@@ -6,6 +6,7 @@
+
diff --git a/csharp/autobuilder/Semmle.Autobuild.CSharp/StandaloneBuildRule.cs b/csharp/autobuilder/Semmle.Autobuild.CSharp/StandaloneBuildRule.cs
index 5b844e6cf6c84..e0e40213895fc 100644
--- a/csharp/autobuilder/Semmle.Autobuild.CSharp/StandaloneBuildRule.cs
+++ b/csharp/autobuilder/Semmle.Autobuild.CSharp/StandaloneBuildRule.cs
@@ -10,7 +10,9 @@ internal class StandaloneBuildRule : IBuildRule
{
public BuildScript Analyse(IAutobuilder builder, bool auto)
{
- return BuildScript.Create(_ => Semmle.Extraction.CSharp.Standalone.Program.Main([]));
+ return builder.Options.Binlog is string binlog
+ ? BuildScript.Create(_ => Semmle.Extraction.CSharp.Driver.Main(["--binlog", binlog]))
+ : BuildScript.Create(_ => Semmle.Extraction.CSharp.Standalone.Program.Main([]));
}
}
}
diff --git a/csharp/codeql-extractor.yml b/csharp/codeql-extractor.yml
index 6c3285c412b92..43c4adaafbf99 100644
--- a/csharp/codeql-extractor.yml
+++ b/csharp/codeql-extractor.yml
@@ -65,3 +65,9 @@ options:
- progress+++
type: string
pattern: "^(off|errors|warnings|(info|progress)|(debug|progress\\+)|(trace|progress\\+\\+)|progress\\+\\+\\+)$"
+ binlog:
+ title: Binlog
+ description: >
+ [EXPERIMENTAL] The value is a path to the MsBuild binary log file that should be extracted.
+ This option only works when `--build-mode none` is also specified.
+ type: string
diff --git a/csharp/extractor/Semmle.Extraction.CSharp.Driver/BUILD.bazel b/csharp/extractor/Semmle.Extraction.CSharp.Driver/BUILD.bazel
index a32dc3a376502..c5e34f7977660 100644
--- a/csharp/extractor/Semmle.Extraction.CSharp.Driver/BUILD.bazel
+++ b/csharp/extractor/Semmle.Extraction.CSharp.Driver/BUILD.bazel
@@ -9,7 +9,7 @@ codeql_csharp_binary(
"*.cs",
"Properties/*.cs",
]),
- visibility = ["//csharp:__pkg__"],
+ visibility = ["//csharp:__subpackages__"],
deps = [
"//csharp/extractor/Semmle.Extraction.CSharp",
],