diff --git a/src/BenchmarkDotNet/Toolchains/NativeAot/Generator.cs b/src/BenchmarkDotNet/Toolchains/NativeAot/Generator.cs
index 4f806e0dd0..8cf562197b 100644
--- a/src/BenchmarkDotNet/Toolchains/NativeAot/Generator.cs
+++ b/src/BenchmarkDotNet/Toolchains/NativeAot/Generator.cs
@@ -20,6 +20,7 @@ namespace BenchmarkDotNet.Toolchains.NativeAot
public class Generator : CsProjGenerator
{
internal const string NativeAotNuGetFeed = "nativeAotNuGetFeed";
+ internal const string GeneratedRdXmlFileName = "bdn_generated.rd.xml";
internal Generator(string ilCompilerVersion, bool useCppCodeGenerator,
string runtimeFrameworkVersion, string targetFrameworkMoniker, string cliPath,
@@ -150,7 +151,7 @@ private string GenerateProjectForNuGetBuild(BuildPartition buildPartition, Artif
-
+ {string.Join(Environment.NewLine, GetRdXmlFiles(buildPartition.RepresentativeBenchmarkCase.Descriptor.Type, logger).Select(file => $""))}
";
@@ -185,7 +186,7 @@ private string GenerateProjectForLocalBuild(BuildPartition buildPartition, Artif
-
+ {string.Join(Environment.NewLine, GetRdXmlFiles(buildPartition.RepresentativeBenchmarkCase.Descriptor.Type, logger).Select(file => $""))}
";
@@ -203,6 +204,23 @@ private string GetTrimmingSettings()
return sb.ToString();
}
+ public IEnumerable GetRdXmlFiles(Type benchmarkTarget, ILogger logger)
+ {
+ var projectFile = GetProjectFilePath(benchmarkTarget, logger);
+ var projectFileFolder = projectFile.DirectoryName;
+ yield return GeneratedRdXmlFileName;
+ var rdXml = Path.Combine(projectFileFolder, "rd.xml");
+ if (File.Exists(rdXml))
+ {
+ yield return rdXml;
+ }
+
+ foreach (var item in Directory.GetFiles(projectFileFolder, "*.rd.xml"))
+ {
+ yield return item;
+ }
+ }
+
///
/// mandatory to make it possible to call GC.GetAllocatedBytesForCurrentThread() using reflection (not part of .NET Standard)
///
@@ -226,7 +244,7 @@ private void GenerateReflectionFile(ArtifactsPaths artifactsPaths)
string directoryName = Path.GetDirectoryName(artifactsPaths.ProjectFilePath);
if (directoryName != null)
- File.WriteAllText(Path.Combine(directoryName, "rd.xml"), content);
+ File.WriteAllText(Path.Combine(directoryName, GeneratedRdXmlFileName), content);
else
throw new InvalidOperationException($"Can't get directory of projectFilePath ('{artifactsPaths.ProjectFilePath}')");
}