diff --git a/src/coreclr/tools/aot/crossgen2/Program.cs b/src/coreclr/tools/aot/crossgen2/Program.cs index 691add6dd78b2a..ebd233ed68ff83 100644 --- a/src/coreclr/tools/aot/crossgen2/Program.cs +++ b/src/coreclr/tools/aot/crossgen2/Program.cs @@ -309,8 +309,8 @@ public int Run() { foreach (var inputFile in inputFilePaths) { - var tmpOutFile = inputFile.Value.Replace(".dll", ".ni.dll.tmp"); - var outFile = inputFile.Value.Replace(".dll", ".ni.dll"); + var tmpOutFile = GetNearOutputFilePath(inputFile.Value, temporary: true); + var outFile = GetNearOutputFilePath(inputFile.Value, temporary: false); Console.WriteLine($@"Moving R2R PE file: {tmpOutFile} to {outFile}"); System.IO.File.Move(tmpOutFile, outFile); } @@ -324,6 +324,23 @@ public int Run() return 0; } + private static string GetNearOutputFilePath(string inFilePath, bool temporary) + { + string inputFileExtension = Path.GetExtension(inFilePath); + if (inputFileExtension.Equals(".dll", StringComparison.OrdinalIgnoreCase)) + { + return Path.ChangeExtension(inFilePath, temporary ? ".ni.dll.tmp" : ".ni.dll"); + } + else if (inputFileExtension.Equals(".exe", StringComparison.OrdinalIgnoreCase)) + { + return Path.ChangeExtension(inFilePath, temporary ? ".ni.exe.tmp" : ".ni.exe"); + } + else + { + throw new CommandLineException(string.Format(SR.UnsupportedInputFileExtension, inputFileExtension)); + } + } + private void RunSingleCompilation(Dictionary inFilePaths, InstructionSetSupport instructionSetSupport, string compositeRootPath, Dictionary unrootedInputFilePaths, HashSet versionBubbleModulesHash, ReadyToRunCompilerContext typeSystemContext, Logger logger) { // @@ -332,19 +349,7 @@ private void RunSingleCompilation(Dictionary inFilePaths, Instru var e = inFilePaths.GetEnumerator(); e.MoveNext(); string inFilePath = e.Current.Value; - string inputFileExtension = Path.GetExtension(inFilePath); - string nearOutFilePath = inputFileExtension switch - { - ".dll" => Path.ChangeExtension(inFilePath, - _singleFileCompilation&& _inputBubble - ? ".ni.dll.tmp" - : ".ni.dll"), - ".exe" => Path.ChangeExtension(inFilePath, - _singleFileCompilation && _inputBubble - ? ".ni.exe.tmp" - : ".ni.exe"), - _ => throw new CommandLineException(string.Format(SR.UnsupportedInputFileExtension, inputFileExtension)) - }; + string nearOutFilePath = GetNearOutputFilePath(inFilePath, temporary: _singleFileCompilation && _inputBubble); string outFile = _outNearInput ? nearOutFilePath : _outputFilePath; string dgmlLogFileName = Get(_command.DgmlLogFileName);