public static Project GetProject(Solution solution, string assemblyName, FrameworkKind frameworkKind) { if (solution == null) { throw new ArgumentNullException(nameof(solution)); } var project = default(Project); var projects = solution.Projects.Where( p => p.AssemblyName.Equals( assemblyName, StringComparison.Ordinal)) .ToList(); var filterFor = "net"; switch (frameworkKind) { case FrameworkKind.Core: filterFor = "netcoreapp"; break; case FrameworkKind.Standard: filterFor = "netstandard"; break; } if (projects.Count >= 2) { var matchingKindsOfProjects = new Dictionary <double, Project>(); // Get all projects of the same kind. foreach (var p in projects) { var(framework, version) = GetFrameworkFromProjectName(p.Name); if (framework.Equals(filterFor, StringComparison.Ordinal)) { matchingKindsOfProjects.Add(version, p); } } // Use the highest version. var maxKey = matchingKindsOfProjects.Keys.Max(); project = matchingKindsOfProjects[maxKey]; } else { project = projects.FirstOrDefault(); } if (project == null) { throw new Exception("Failed to find the project."); } return(project); }
static FrameworkKind Best(FrameworkKind a, FrameworkKind b) { if (a == FrameworkKind.SelfContainedDotNet || b == FrameworkKind.SelfContainedDotNet) { return(FrameworkKind.SelfContainedDotNet); } if (a == FrameworkKind.DotNet || b == FrameworkKind.DotNet) { return(FrameworkKind.DotNet); } if (a == FrameworkKind.Unity || b == FrameworkKind.Unity) { return(FrameworkKind.Unity); } if (a == FrameworkKind.WindowsUniversal || b == FrameworkKind.WindowsUniversal) { return(FrameworkKind.WindowsUniversal); } if (a == FrameworkKind.DotNetFramework4 || b == FrameworkKind.DotNetFramework4) { return(FrameworkKind.DotNetFramework4); } if (a == FrameworkKind.DotNetFramework2 || b == FrameworkKind.DotNetFramework2) { return(FrameworkKind.DotNetFramework2); } Debug.Assert(a == FrameworkKind.Unknown && b == FrameworkKind.Unknown); return(FrameworkKind.Unknown); }
static FrameworkKind Best(FrameworkKind a, FrameworkKind b) { if (a == FrameworkKind.SelfContainedDotNetCore || b == FrameworkKind.SelfContainedDotNetCore) { return(FrameworkKind.SelfContainedDotNetCore); } if (a == FrameworkKind.DotNetCore || b == FrameworkKind.DotNetCore) { return(FrameworkKind.DotNetCore); } if (a == FrameworkKind.Unity || b == FrameworkKind.Unity) { return(FrameworkKind.Unity); } if (a == FrameworkKind.DotNetFramework4 || b == FrameworkKind.DotNetFramework4) { return(FrameworkKind.DotNetFramework4); } if (a == FrameworkKind.DotNetFramework2 || b == FrameworkKind.DotNetFramework2) { return(FrameworkKind.DotNetFramework2); } Debug.Assert(a == FrameworkKind.Unknown && b == FrameworkKind.Unknown); return(FrameworkKind.Unknown); }
static FrameworkKind Best(FrameworkKind a, FrameworkKind b) { if (a == FrameworkKind.DotNetCore || b == FrameworkKind.DotNetCore) return FrameworkKind.DotNetCore; if (a == FrameworkKind.Unity || b == FrameworkKind.Unity) return FrameworkKind.Unity; if (a == FrameworkKind.DotNetFramework4 || b == FrameworkKind.DotNetFramework4) return FrameworkKind.DotNetFramework4; if (a == FrameworkKind.DotNetFramework2 || b == FrameworkKind.DotNetFramework2) return FrameworkKind.DotNetFramework2; Debug.Assert(a == FrameworkKind.Unknown && b == FrameworkKind.Unknown); return FrameworkKind.Unknown; }
static bool IgnorePublicKey(FrameworkKind fwkKind) { switch (fwkKind) { case FrameworkKind.Unknown: case FrameworkKind.DotNetFramework2: case FrameworkKind.DotNetFramework4: return(false); case FrameworkKind.DotNetCore: case FrameworkKind.SelfContainedDotNetCore: case FrameworkKind.Unity: case FrameworkKind.WindowsUniversal: return(true); default: throw new InvalidOperationException(); } }
public FrameworkPathInfo(string directory) { Directory = directory ?? throw new ArgumentNullException(nameof(directory)); FrameworkKind = FrameworkKind.Unknown; }