public override bool Execute() { #if DEBUG if (System.Environment.GetEnvironmentVariable("DEBUG_SCAN_LIBS_TASK") == "1") { System.Diagnostics.Debugger.Launch(); } #endif string[] libFiles = this.GetLibs(); var functionNames = new HashSet <string>(System.StringComparer.OrdinalIgnoreCase); StringBuilder libLines = new StringBuilder(); foreach (var lib in libFiles) { var importInfos = LibScraper.GetImportInfos(lib); foreach (var importInfo in importInfos) { string procName = importInfo.ProcName; if (!functionNames.Contains(procName)) { if (libLines.Length == 0) { libLines.AppendLine("--with-librarypath"); } var dllName = Path.GetFileNameWithoutExtension(importInfo.Dll); libLines.AppendLine($"{procName}={dllName}"); functionNames.Add(procName); } } } if (libLines.Length != 0) { var dir = Path.GetDirectoryName(this.WithLibsRsp); Directory.CreateDirectory(dir); File.WriteAllText(this.WithLibsRsp, libLines.ToString()); } else { if (File.Exists(this.WithLibsRsp)) { File.Delete(this.WithLibsRsp); } } return(true); }
public void Returns_Expected_Infos(string libPath, IEnumerable <ImportInfo> expectedImportInfos) { var infos = LibScraper.GetImportInfos(libPath); Assert.Equal(expectedImportInfos, infos); }