private ComponentResolution ProbeForLibrariesInTargetFrameworkDirectories(DirectoryInfo probingDir, string library) { var resolution = new ComponentResolution(); var candidateLibs = new List <string>(); foreach (var target in TARGETS) { var dirs = probingDir.GetDirectories($"{target}*"); foreach (var dir in dirs) { var probeResult = ProbeDirectoryForLibrary(dir, library); if (probeResult.ResolvedComponent) { candidateLibs.Add(probeResult.ResolvedPath); } } } if (candidateLibs.Count == 0) { resolution.ResolvedComponent = false; } else { resolution.ResolvedComponent = true; resolution.Candidates = candidateLibs.ToArray(); resolution.ResolvedPath = resolution.Candidates[0]; } return(resolution); }
public override ComponentResolution FindLibrary(string library) { if (string.IsNullOrWhiteSpace(library)) { throw new ArgumentException("libraryName not set"); } var resolution = new ComponentResolution(); var(componentDirFound, componentDir) = BaseDirectory.TryNavigateDirectoryDown(Component); if (!componentDirFound) { resolution.ResolvedComponent = false; return(resolution); } return(ProbeDirectoryForLibrary(componentDir, library)); }
private ComponentResolution FindLibraryInComponentBinDirectory(string library) { var candidateLibraries = new List <string>(); // Expected location, per probingDir: app/component var probingDir = BaseDirectory; var(binFound, binDir) = probingDir.TryNavigateDirectoryDown(BIN); if (!binFound) { return(False()); } // Expected location, per probingDir: app/component/bin probingDir = binDir; DirectoryInfo releaseDir = null; DirectoryInfo debugDir = null; // these directories do not have uniform casing, hence foreach foreach (var dir in probingDir.GetDirectories()) { var lowerName = dir.Name.ToLowerInvariant(); if (lowerName == RELEASE) { releaseDir = dir; } else if (lowerName == DEBUG) { debugDir = dir; } } // Expected location, per probingDir: app/component/bin/[release | debug] if (releaseDir == null && debugDir == null) { return(False()); } // Probe release and debug directories // prefering release if (_buildKind == RELEASE && releaseDir != null) { probingDir = releaseDir; } else if (_buildKind == DEBUG && debugDir != null) { probingDir = debugDir; } else if (releaseDir != null) { probingDir = releaseDir; } else if (debugDir != null) { probingDir = debugDir; } else { return(False()); } return(ProbeForLibrariesInTargetFrameworkDirectories(probingDir, library)); ComponentResolution False() { var resolution = new ComponentResolution(); resolution.ResolvedComponent = false; return(resolution); } }