diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Extractor/CompilerVersion.cs b/csharp/extractor/Semmle.Extraction.CSharp/Extractor/CompilerVersion.cs index e52c79a17e1..6691ce51ab8 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Extractor/CompilerVersion.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Extractor/CompilerVersion.cs @@ -74,7 +74,9 @@ namespace Semmle.Extraction.CSharp specifiedFramework = compilerDir; } - var versionInfo = FileVersionInfo.GetVersionInfo(SpecifiedCompiler); + // If csc is specified as compiler name, then attempt to read the version information from csc.dll + var compilerBinaryName = SpecifiedCompiler.EndsWith("csc") ? $"{SpecifiedCompiler}.dll" : SpecifiedCompiler; + var versionInfo = FileVersionInfo.GetVersionInfo(compilerBinaryName); if (!knownCompilerNames.TryGetValue(versionInfo.OriginalFilename ?? string.Empty, out var vendor)) { SkipExtractionBecause("the compiler name is not recognised"); diff --git a/csharp/tools/tracing-config.lua b/csharp/tools/tracing-config.lua index a48a93c073c..1bfa26ec20d 100644 --- a/csharp/tools/tracing-config.lua +++ b/csharp/tools/tracing-config.lua @@ -226,6 +226,11 @@ function RegisterExtractorPack(id) prepend = { '--compiler', '"${compiler}"' }, order = ORDER_BEFORE }), + CreatePatternMatcher({ '^csc$' }, MatchCompilerName, + extractor, { + prepend = { '--compiler', '${compiler}' }, + order = ORDER_BEFORE + }), MsBuildMatcher, function(compilerName, compilerPath, compilerArguments, _languageId) -- handle cases like `dotnet exec csc.dll ` and `mono(-sgen64) csc.exe `