/// <summary> /// Try to get the PDBSTR.EXE path from the Windows SDK /// </summary> /// <returns>Path to PDBSTR.EXE</returns> public static FileReference GetPdbStrExe() { List <KeyValuePair <string, DirectoryReference> > WindowsSdkDirs = WindowsExports.GetWindowsSdkDirs(); foreach (DirectoryReference WindowsSdkDir in WindowsSdkDirs.Select(x => x.Value)) { FileReference CheckPdbStrExe64 = FileReference.Combine(WindowsSdkDir, "Debuggers", "x64", "SrcSrv", "PdbStr.exe"); if (FileReference.Exists(CheckPdbStrExe64)) { return(CheckPdbStrExe64); } FileReference CheckPdbStrExe32 = FileReference.Combine(WindowsSdkDir, "Debuggers", "x86", "SrcSrv", "PdbStr.exe"); if (FileReference.Exists(CheckPdbStrExe32)) { return(CheckPdbStrExe32); } } throw new AutomationException("Unable to find a Windows SDK installation containing PDBSTR.EXE"); }
public static bool TryGetPdbCopyLocation(out FileReference OutLocation) { // Try to find an installation of the Windows 10 SDK List <KeyValuePair <string, DirectoryReference> > WindowsSdkDirs = WindowsExports.GetWindowsSdkDirs(); foreach (DirectoryReference WindowsSdkDir in WindowsSdkDirs.Select(x => x.Value)) { FileReference PdbCopyExe = FileReference.Combine(WindowsSdkDir, "Debuggers", "x64", "PdbCopy.exe"); if (FileReference.Exists(PdbCopyExe)) { OutLocation = PdbCopyExe; return(true); } } // Look for an installation of the MSBuild 14 FileReference LocationMsBuild14 = FileReference.Combine(DirectoryReference.GetSpecialFolder(Environment.SpecialFolder.ProgramFilesX86), "MSBuild", "Microsoft", "VisualStudio", "v14.0", "AppxPackage", "PDBCopy.exe"); if (FileReference.Exists(LocationMsBuild14)) { OutLocation = LocationMsBuild14; return(true); } // Look for an installation of the MSBuild 12 FileReference LocationMsBuild12 = FileReference.Combine(DirectoryReference.GetSpecialFolder(Environment.SpecialFolder.ProgramFilesX86), "MSBuild", "Microsoft", "VisualStudio", "v12.0", "AppxPackage", "PDBCopy.exe"); if (FileReference.Exists(LocationMsBuild12)) { OutLocation = LocationMsBuild12; return(true); } // Otherwise fail OutLocation = null; return(false); }