public void TestMultiBitPlan()
        {
            var delete = new DotNetCoreSdk[]
            {
                new DotNetCoreSdk(is64Bit: true, new SdkVersion(1, 0, 1)),
                new DotNetCoreSdk(is64Bit: false, new SdkVersion(1, 0, 1)),
            };

            var keep = new DotNetCoreSdk[]
            {
                new DotNetCoreSdk(is64Bit: true, new SdkVersion(1, 0, 4)),
                new DotNetCoreSdk(is64Bit: false, new SdkVersion(1, 0, 4)),
                new DotNetCoreSdk(is64Bit: false, new SdkVersion(1, 1, 4)),
            };

            var vsKeep = new DotNetCoreSdk[]
            {
            };

            var vsVersions = new SdkVersion[]
            {
            };

            TestPlan(delete, keep, vsKeep, keepOnlyLastVersionPerRuntime: false, vsVersions);
        }
        private static IEnumerable <DotNetCoreSdk> GetSdks()
        {
            using (var uninstallKey = Registry.LocalMachine.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Uninstall"))
            {
                var subKeyNames = uninstallKey.GetSubKeyNames();
                foreach (var name in subKeyNames)
                {
                    using (var subKey = uninstallKey.OpenSubKey(name))
                    {
                        string displayName = (string)subKey.GetValue("DisplayName");
                        if (displayName?.StartsWith("Microsoft .NET Core SDK", StringComparison.OrdinalIgnoreCase) == true)
                        {
                            const string pattern = @"Microsoft .NET Core SDK( -)? (?<version>\d+\.\d+\.\d+)( - (?<prerelease>\w+\d+))? \((?<bitness>x\d+)\)";
                            var          match   = Regex.Match(displayName, pattern);
                            if (match.Success)
                            {
                                var versionString     = match.Groups["version"].Value;
                                var prerelease        = match.Groups["prerelease"].Value;
                                var bitness           = match.Groups["bitness"].Value;
                                var fullVersionString = versionString;
                                if (!string.IsNullOrEmpty(prerelease))
                                {
                                    fullVersionString += "-" + prerelease;
                                }
                                var version = SemanticVersion.Parse(fullVersionString);

                                var sdk = new DotNetCoreSdk(displayName, version, bitness, name);
                                yield return(sdk);
                            }
                        }
                    }
                }
            }
        }
        public void TestWithPreRelease()
        {
            var delete = new DotNetCoreSdk[]
            {
                new DotNetCoreSdk(is64Bit: true, new SdkVersion(2, 2, 100, "-pre1")),
                new DotNetCoreSdk(is64Bit: true, new SdkVersion(2, 3, 100, "-pre1")),
                new DotNetCoreSdk(is64Bit: true, new SdkVersion(2, 3, 100)),
            };

            var keep = new DotNetCoreSdk[]
            {
                new DotNetCoreSdk(is64Bit: true, new SdkVersion(2, 2, 100)),
                new DotNetCoreSdk(is64Bit: true, new SdkVersion(2, 3, 101, "-pre1")),
                new DotNetCoreSdk(is64Bit: true, new SdkVersion(2, 4, 100, "-pre1")),
            };

            var vsKeep = new DotNetCoreSdk[]
            {
            };

            var vsVersions = new SdkVersion[]
            {
            };

            TestPlan(delete, keep, vsKeep, keepOnlyLastVersionPerRuntime: false, vsVersions);
        }
Example #4
0
        protected void DotNetCoreSdksInstalled(params string[] versions)
        {
            var dotNetCoreVersions = versions.Select(DotNetCoreVersion.Parse)
                                     .OrderByDescending(version => version);

            DotNetCoreSdk.SetVersions(dotNetCoreVersions);
            DotNetCoreSdk.SetInstalled(dotNetCoreVersions.Any());
        }
Example #5
0
        public void TearDownTestFixture()
        {
            DotNetCoreSdk.SetInstalled(sdkInstalled);
            DotNetCoreSdk.SetVersions(sdkVersions);
            DotNetCoreSdk.SetSdkRootPath(sdkRootPath);

            DotNetCoreRuntime.SetInstalled(runtimeInstalled);
            DotNetCoreRuntime.SetVersions(runtimeVersions);
        }
        public void Init()
        {
            directories   = new HashSet <string> ();
            templateFiles = new List <string> ();

            sdkRootPath = ToNativePath("/usr/local/share/dotnet/sdk");
            DotNetCoreSdk.SetSdkRootPath(sdkRootPath);

            provider = new DotNetCoreProjectTemplateStringTagProvider();
            provider.DirectoryExists = DirectoryExists;
            provider.EnumerateFiles  = EnumerateFiles;
        }
        public void SaveSdkLocationSetting(FilePath location)
        {
            if (location == DotNetCoreRuntime.FileName)
            {
                return;
            }

            var path = new DotNetCorePath(location);
            DotNetCoreSdkPaths sdkPaths = GetSdkPaths(path);

            DotNetCoreSdk.Update(sdkPaths);
            DotNetCoreRuntime.Update(path);

            // All open .NET Core projects need to be re-evaluated so the correct
            // SDK MSBuild imports are used.
            ReevaluateAllOpenDotNetCoreProjects().Ignore();
        }
        [TestCase(".NETCoreApp", "2.1", new [] { "2.1.400" }, false, true)]                 // v2.1.400 will support .NET Core  2.1
        public void IsSupportedTargetFramework(
            string frameworkIdentifier,
            string frameworkVersion,
            string[] installedSdkVersions,
            bool msbuildSdksInstalled,             // True if Mono has the .NET Core sdks.
            bool expected)
        {
            string framework = $"{frameworkIdentifier},Version=v{frameworkVersion}";
            var    targetFrameworkMoniker = TargetFrameworkMoniker.Parse(framework);
            var    versions = installedSdkVersions.Select(version => DotNetCoreVersion.Parse(version))
                              .OrderByDescending(version => version)
                              .ToArray();

            bool actual = DotNetCoreSdk.IsSupported(targetFrameworkMoniker, versions, msbuildSdksInstalled);

            Assert.AreEqual(expected, actual);
        }
        public void TestManyVersionsByRuntime()
        {
            var delete = new DotNetCoreSdk[]
            {
                new DotNetCoreSdk(is64Bit: true, new SdkVersion(1, 0, 1)),
                new DotNetCoreSdk(is64Bit: true, new SdkVersion(1, 0, 4)),
                new DotNetCoreSdk(is64Bit: true, new SdkVersion(1, 1, 4)),
                new DotNetCoreSdk(is64Bit: true, new SdkVersion(2, 0, 0)),
                new DotNetCoreSdk(is64Bit: true, new SdkVersion(2, 0, 3)),
                new DotNetCoreSdk(is64Bit: true, new SdkVersion(2, 1, 2)),
                new DotNetCoreSdk(is64Bit: true, new SdkVersion(2, 1, 4)),
                new DotNetCoreSdk(is64Bit: true, new SdkVersion(2, 1, 200)),
                new DotNetCoreSdk(is64Bit: true, new SdkVersion(2, 1, 400)),
                new DotNetCoreSdk(is64Bit: true, new SdkVersion(2, 1, 401)),
                new DotNetCoreSdk(is64Bit: true, new SdkVersion(2, 1, 402)),
                new DotNetCoreSdk(is64Bit: true, new SdkVersion(2, 1, 403)),
                new DotNetCoreSdk(is64Bit: true, new SdkVersion(2, 2, 100)),
                new DotNetCoreSdk(is64Bit: true, new SdkVersion(2, 2, 103)),
                new DotNetCoreSdk(is64Bit: true, new SdkVersion(2, 2, 104)),
                new DotNetCoreSdk(is64Bit: true, new SdkVersion(3, 0, 100)),
            };

            var keep = new DotNetCoreSdk[]
            {
                new DotNetCoreSdk(is64Bit: true, new SdkVersion(1, 1, 13)),
                new DotNetCoreSdk(is64Bit: true, new SdkVersion(2, 1, 202)),
                new DotNetCoreSdk(is64Bit: true, new SdkVersion(2, 1, 404)),
                new DotNetCoreSdk(is64Bit: true, new SdkVersion(2, 2, 105)),
                new DotNetCoreSdk(is64Bit: true, new SdkVersion(3, 0, 101)),
            };

            var vsKeep = new DotNetCoreSdk[]
            {
            };

            var vsVersions = new SdkVersion[]
            {
            };

            TestPlan(delete, keep, vsKeep, keepOnlyLastVersionPerRuntime: true, vsVersions);
        }
        public void TestVsVersionPinWithRuntimeKeep()
        {
            var delete = new DotNetCoreSdk[]
            {
                new DotNetCoreSdk(is64Bit: true, new SdkVersion(2, 2, 100)),
                new DotNetCoreSdk(is64Bit: true, new SdkVersion(2, 2, 101)),
                new DotNetCoreSdk(is64Bit: true, new SdkVersion(2, 2, 105)),
                new DotNetCoreSdk(is64Bit: true, new SdkVersion(2, 2, 200)),
                new DotNetCoreSdk(is64Bit: true, new SdkVersion(2, 2, 202)),
                new DotNetCoreSdk(is64Bit: true, new SdkVersion(2, 2, 203)),
                new DotNetCoreSdk(is64Bit: true, new SdkVersion(2, 2, 204)),
                new DotNetCoreSdk(is64Bit: true, new SdkVersion(2, 2, 300)),
                new DotNetCoreSdk(is64Bit: true, new SdkVersion(2, 2, 301)),
                new DotNetCoreSdk(is64Bit: true, new SdkVersion(2, 3, 100)),
            };

            var keep = new DotNetCoreSdk[]
            {
                new DotNetCoreSdk(is64Bit: true, new SdkVersion(2, 2, 201)),
                new DotNetCoreSdk(is64Bit: true, new SdkVersion(2, 2, 205)),
                new DotNetCoreSdk(is64Bit: true, new SdkVersion(2, 2, 305)),
                new DotNetCoreSdk(is64Bit: true, new SdkVersion(2, 3, 101)),
            };

            var vsKeep = new DotNetCoreSdk[]
            {
                new DotNetCoreSdk(is64Bit: true, new SdkVersion(2, 2, 201)),
                new DotNetCoreSdk(is64Bit: true, new SdkVersion(2, 2, 205)),
            };

            var vsVersions = new SdkVersion[]
            {
                new SdkVersion(2, 2, 201),
            };

            TestPlan(delete, keep, vsKeep, keepOnlyLastVersionPerRuntime: true, vsVersions);
        }
Example #11
0
 protected void DotNetCoreSdksNotInstalled()
 {
     DotNetCoreSdksInstalled(new string[0]);
     DotNetCoreSdk.SetInstalled(false);
     DotNetCoreSdk.SetSdkRootPath(null);
 }