// Copyright (c) .NET Foundation and contributors. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. using System.IO; using System.Linq; using Microsoft.DotNet.PlatformAbstractions; using Microsoft.Extensions.DependencyModel; namespace Microsoft.DotNet.Cli.Utils { /// /// Represents the .deps.json file in the shared framework /// that the CLI is running against. /// internal class FrameworkDependencyFile { private readonly string _depsFilePath; public FrameworkDependencyFile() { _depsFilePath = Muxer.GetDataFromAppDomain("FX_DEPS_FILE"); } public bool SupportsCurrentRuntime() { return IsRuntimeSupported(RuntimeEnvironment.GetRuntimeIdentifier()); } public bool IsRuntimeSupported(string runtimeIdentifier) { DependencyContext fxDependencyContext = CreateDependencyContext(); return fxDependencyContext.RuntimeGraph.Any(g => g.Runtime == runtimeIdentifier); } private DependencyContext CreateDependencyContext() { using (Stream depsFileStream = File.OpenRead(_depsFilePath)) using (DependencyContextJsonReader reader = new DependencyContextJsonReader()) { return reader.Read(depsFileStream); } } } }