{"record":{"id":"f934a56c40ba09c1","repo":"dotnet/reactive","slug":"plugin-host-project-folder-not-found-at","errorCode":null,"errorMessage":"PlugIn host project folder not found at {plugInHostProjectFolder}","messagePattern":"PlugIn host project folder not found at (.+?)","errorType":"exception","errorClass":"DirectoryNotFoundException","httpStatus":null,"severity":"error","filePath":"Rx.NET/Test/Gauntlet/Checks/PlugIns/PlugIn.HostDriver/PlugInHost.cs","lineNumber":102,"sourceCode":"        }\n        else\n        {\n            throw new ArgumentException($\"Unsupported host runtime TFM: {hostRuntimeTfm}\");\n        }\n\n        DirectoryInfo plugInsFolder = new(\n            Path.Combine(AppContext.BaseDirectory, \"../../../../\"));\n        if (!plugInsFolder.Exists)\n        {\n            throw new DirectoryNotFoundException($\"PlugIns folder not found: {plugInsFolder.FullName}\");\n        }\n\n        var plugInHostProjectFolder = Path.Combine(\n            plugInsFolder.FullName,\n            launcher);\n        if (!Directory.Exists(plugInHostProjectFolder))\n        {\n            throw new DirectoryNotFoundException($\"PlugIn host project folder not found at {plugInHostProjectFolder}\");\n        }\n        var plugInHostExecutableFolder = Path.Combine(\n            plugInHostProjectFolder,\n            $\"bin/{Configuration}/{hostRuntimeTfm}/\");\n        if (!Directory.Exists(plugInHostExecutableFolder))\n        {\n            throw new DirectoryNotFoundException($\"PlugIn host build output folder not found at {plugInHostExecutableFolder}\");\n        }\n\n        var plugInHostExecutablePath = Path.Combine(\n            plugInHostExecutableFolder,\n            $\"{launcher}.exe\");\n        if (!File.Exists(plugInHostExecutablePath))\n        {\n            throw new FileNotFoundException($\"PlugIn host executable not found at {plugInHostExecutablePath}\");\n        }\n\n        var firstPlugInPath = await _plugInBuilder.GetPlugInDllPathAsync(firstPlugIn);","sourceCodeStart":84,"sourceCodeEnd":120,"githubUrl":"https://github.com/dotnet/reactive/blob/94b5d5ab912789f5abe9a72138a25bbd716fe59c/Rx.NET/Test/Gauntlet/Checks/PlugIns/PlugIn.HostDriver/PlugInHost.cs#L84-L120","documentation":"Directory check in PlugInHost.Run: the computed plug-in host project folder (plugInsFolder + launcher path) does not exist on disk, so the Gauntlet plug-in host cannot be launched; the offending input is the derived launcher subpath.","triggerScenarios":"The plug-ins folder exists but does not contain the project directory for the launcher selected from hostRuntimeTfm (folder renamed, launcher project excluded from the build/checkout).","commonSituations":"Partial checkouts, renamed host projects, or a TFM mapping to a launcher project that was not restored/built in this workspace.","solutions":["Ensure all PlugIn host launcher projects are present in the checkout","Fix the launcher name mapping in PlugInHost so it matches the actual project folder name","Restore/re-clone the repository to get the missing project folder"],"exampleFix":"// before\nthrow new DirectoryNotFoundException($\"PlugIn host project folder not found at {plugInHostProjectFolder}\"); // folder 'PlugIn.HostNetFx' missing\n// after\ngit checkout -- Rx.NET/Test/Gauntlet/Checks/PlugIns  // or rebuild solution so host project folders exist","handlingStrategy":"validation","validationCode":"var projDir = Path.Combine(plugInsRoot, launcher);\nif (!Directory.Exists(projDir)) throw new DirectoryNotFoundException($\"Missing launcher project folder: {projDir}\");","typeGuard":null,"tryCatchPattern":"try { await host.Run(tfm); }\ncatch (DirectoryNotFoundException ex) when (ex.Message.Contains(\"host project folder not found\")) { /* restore checkout / fix launcher name */ }","preventionTips":["Ensure full checkout including all Gauntlet host projects","Keep launcher project folder names in sync with TFM mappings","Verify solution builds completely before running checks"],"tags":["rx","test-infrastructure","path-resolution","gauntlet"],"backgroundTag":"directory-not-found","analyzedSha":"94b5d5ab912789f5abe9a72138a25bbd716fe59c","analyzedAt":"2026-09-15T02:26:24.759Z","contentChangedAt":"2026-09-15T02:26:24.759Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}