public async Task ListApplications()
        {
            EnsureWindowsAndX64();

            using var iisFixture = await StartIis(IisAppType.AspNetCoreInProcess);

            using var console = ConsoleHelper.Redirect();

            var result = await CheckIisCommand.ExecuteAsync(
                new CheckIisSettings { SiteName = "sample/dummy" },
                iisFixture.IisExpress.ConfigFile,
                iisFixture.IisExpress.Process.Id,
                MockRegistryService());

            result.Should().Be(1);

            console.Output.Should().Contain(Resources.CouldNotFindApplication("sample", "/dummy", new[] { "/", "/mixed" }));
        }
        public async Task NoGac()
        {
            EnsureWindowsAndX64();

            using var iisFixture = await StartIis(IisAppType.AspNetCoreInProcess);

            using var console = ConsoleHelper.Redirect();

            var result = await CheckIisCommand.ExecuteAsync(
                new CheckIisSettings { SiteName = "sample" },
                iisFixture.IisExpress.ConfigFile,
                iisFixture.IisExpress.Process.Id,
                MockRegistryService());

            result.Should().Be(1);

            console.Output.Should().Contain(Resources.MissingGac);
        }
        public async Task WorkingApp(bool mixedRuntimes)
        {
            EnsureWindowsAndX64();

            var siteName = mixedRuntimes ? "sample/mixed" : "sample";

            var buildPs1 = Path.Combine(EnvironmentTools.GetSolutionDirectory(), "tracer", "build.ps1");

            try
            {
                // GacFixture is not compatible with .NET Core, use the Nuke target instead
                Process.Start("powershell", $"{buildPs1} GacAdd --framework net461").WaitForExit();

                using var iisFixture = await StartIis(IisAppType.AspNetCoreInProcess);

                using var console = ConsoleHelper.Redirect();

                var result = await CheckIisCommand.ExecuteAsync(
                    new CheckIisSettings { SiteName = siteName },
                    iisFixture.IisExpress.ConfigFile,
                    iisFixture.IisExpress.Process.Id,
                    MockRegistryService());

                result.Should().Be(0);

                if (mixedRuntimes)
                {
                    console.Output.Should().Contain(Resources.IisMixedRuntimes);
                }

                console.Output.Should().Contain(Resources.IisNoIssue);
            }
            finally
            {
                Process.Start("powershell", $"{buildPs1} GacRemove --framework net461").WaitForExit();
            }
        }