| File: BackEnd\Components\SdkResolution\DefaultSdkResolver.cs | Web Access |
| Project: src\msbuild\src\Build\Microsoft.Build.csproj (Microsoft.Build) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System.IO; using Microsoft.Build.Framework; using Microsoft.Build.Shared; using SdkResolverBase = Microsoft.Build.Framework.SdkResolver; using SdkResolverContextBase = Microsoft.Build.Framework.SdkResolverContext; using SdkResultBase = Microsoft.Build.Framework.SdkResult; using SdkResultFactoryBase = Microsoft.Build.Framework.SdkResultFactory; namespace Microsoft.Build.BackEnd.SdkResolution { /// <summary> /// Default SDK resolver for compatibility with VS2017 RTM. /// <remarks> /// Default Sdk folder will to: /// 1) MSBuildSDKsPath environment variable if defined /// 2) When in Visual Studio, (VSRoot)\MSBuild\Sdks\ /// 3) Outside of Visual Studio (MSBuild Root)\Sdks\ /// </remarks> /// </summary> internal class DefaultSdkResolver : SdkResolverBase { public override string Name => "DefaultSdkResolver"; public override int Priority => 10000; public override SdkResultBase Resolve(SdkReference sdk, SdkResolverContextBase context, SdkResultFactoryBase factory) { string sdkPath = Path.Combine(BuildEnvironmentHelper.Instance.MSBuildSDKsPath, sdk.Name, "Sdk"); return FileUtilities.DirectoryExistsNoThrow(sdkPath) ? factory.IndicateSuccess(sdkPath, string.Empty) : factory.IndicateFailure([ResourceUtilities.FormatResourceStringIgnoreCodeAndKeyword("DefaultSDKResolverError", sdk.Name, sdkPath)], null); } } }