public async Task OutOfProcess()
        {
            EnsureWindowsAndX64();

            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.AspNetCoreOutOfProcess);

                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(0);

                console.Output.Should().Contain(Resources.OutOfProcess);
                console.Output.Should().NotContain(Resources.AspNetCoreProcessNotFound);
                console.Output.Should().Contain(Resources.IisNoIssue);
            }
            finally
            {
                Process.Start("powershell", $"{buildPs1} GacRemove --framework net461").WaitForExit();
            }
        }
        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);
        }