Exemplo n.º 1
0
        public void FindMSBuildSDKsPath(string dotNetCorePath)
        {
            if (string.IsNullOrEmpty(dotNetCorePath))
            {
                return;
            }

            string rootDirectory = Path.GetDirectoryName(dotNetCorePath);

            sdkRootPath = Path.Combine(rootDirectory, "sdk");

            if (!Directory.Exists(sdkRootPath))
            {
                return;
            }

            SdkVersions = GetInstalledSdkVersions(sdkRootPath)
                          .OrderByDescending(version => version)
                          .ToArray();
            if (!SdkVersions.Any())
            {
                return;
            }

            DotNetCoreVersion latestVersion = SdkVersions.FirstOrDefault();

            SdksParentDirectory = Path.Combine(sdkRootPath, latestVersion.OriginalString);
            if (SdksParentDirectory == null)
            {
                return;
            }

            msbuildSDKsPath = Path.Combine(SdksParentDirectory, "Sdks");
            Exist           = true;
        }
Exemplo n.º 2
0
        public void FindMSBuildSDKsPath()
        {
            var dotNetCorePath = new DotNetCorePath();

            if (dotNetCorePath.IsMissing)
            {
                return;
            }

            string rootDirectory = Path.GetDirectoryName(dotNetCorePath.FileName);
            string sdkRootPath   = Path.Combine(rootDirectory, "sdk");

            if (!Directory.Exists(sdkRootPath))
            {
                return;
            }

            SdkVersions = GetInstalledSdkVersions(sdkRootPath)
                          .OrderByDescending(version => version)
                          .ToArray();
            if (!SdkVersions.Any())
            {
                return;
            }

            DotNetCoreVersion latestVersion = SdkVersions.FirstOrDefault();

            SdksParentDirectory = Path.Combine(sdkRootPath, latestVersion.OriginalString);
            if (SdksParentDirectory == null)
            {
                return;
            }

            msbuildSDKsPath = Path.Combine(SdksParentDirectory, "Sdks");

            MSBuildProjectService.RegisterProjectImportSearchPath("MSBuildSDKsPath", MSBuildSDKsPath);
        }
Exemplo n.º 3
0
        //https://docs.microsoft.com/en-us/dotnet/core/tools/global-json
        public void ResolveSDK(string workingDir = "", bool forceLookUpGlobalJson = false)
        {
            if (!SdkVersions.Any())
            {
                return;
            }

            DotNetCoreVersion targetVersion = null;

            if (forceLookUpGlobalJson)
            {
                GlobalJsonPath = LookUpGlobalJson(workingDir);
            }
            var specificVersion = ReadGlobalJson();

            //if !global.json, returns latest
            if (string.IsNullOrEmpty(specificVersion))
            {
                msbuildSDKsPath = GetSdksParentDirectory(GetLatestSdk());
                Exist           = true;
                return;
            }

            DotNetCoreVersion requiredVersion;

            DotNetCoreVersion.TryParse(specificVersion, out requiredVersion);

            if (requiredVersion == null)
            {
                msbuildSDKsPath         = string.Empty;
                IsUnsupportedSdkVersion = true;
                Exist = false;
                return;
            }

            //if global.json exists and matches returns it
            targetVersion = SdkVersions.FirstOrDefault(x => x.OriginalString.IndexOf(specificVersion, StringComparison.InvariantCulture) == 0);
            if (targetVersion == null)
            {
                //if global.json exists and !matches then:
                if (requiredVersion >= DotNetCoreVersion.Parse("2.1"))
                {
                    targetVersion = SdkVersions.Where(version => version.Major == requiredVersion.Major &&
                                                      version.Minor == requiredVersion.Minor)
                                    .OrderByDescending(version => version.Patch).FirstOrDefault(x => {
                        return((x.Patch / 100 == requiredVersion.Patch / 100) &&
                               (x.Patch % 100 >= requiredVersion.Patch % 100));
                    });
                }
                else
                {
                    targetVersion = SdkVersions.Where(version => version.Major == requiredVersion.Major && version.Minor == requiredVersion.Minor)
                                    .OrderByDescending(version => version.Patch).FirstOrDefault();
                }

                if (targetVersion == null)
                {
                    msbuildSDKsPath         = string.Empty;
                    IsUnsupportedSdkVersion = true;
                    Exist = false;
                    return;
                }
            }

            msbuildSDKsPath         = GetSdksParentDirectory(targetVersion);
            Exist                   = true;
            IsUnsupportedSdkVersion = false;
        }