FieldCure.ToolHost
0.1.8
dotnet add package FieldCure.ToolHost --version 0.1.8
NuGet\Install-Package FieldCure.ToolHost -Version 0.1.8
<PackageReference Include="FieldCure.ToolHost" Version="0.1.8" />
<PackageVersion Include="FieldCure.ToolHost" Version="0.1.8" />
<PackageReference Include="FieldCure.ToolHost" />
paket add FieldCure.ToolHost --version 0.1.8
#r "nuget: FieldCure.ToolHost, 0.1.8"
#:package FieldCure.ToolHost@0.1.8
#addin nuget:?package=FieldCure.ToolHost&version=0.1.8
#tool nuget:?package=FieldCure.ToolHost&version=0.1.8
FieldCure.ToolHost
Run .NET tools from NuGet without the .NET SDK — a dnx-compatible bridge library for environments where only the .NET runtime is available (MS Store apps, MSIX, runtime-only containers, CI bootstrappers).
Bridge until Microsoft ships standalone dnx (dotnet/sdk#49796).
Install
dotnet add package FieldCure.ToolHost
Quick Start
using FieldCure.ToolHost;
using System.Diagnostics;
DotnetEnvironment env = await DotnetEnvironment.DetectAsync();
DnxLiteRunner runner = new(env);
using Process tool = await runner.StartAsync(new ToolInvocationRequest
{
PackageId = "dotnetsay",
ToolArguments = new[] { "Hello!" },
Policy = ToolVersionPolicy.CachedWithRefresh,
});
tool.StandardInput.Close();
Console.Write(await tool.StandardOutput.ReadToEndAsync());
await tool.WaitForExitAsync();
Environment Isolation
ToolHost matches dnx by default: launched tools inherit the current process
environment, and AdditionalEnvironment is applied on top. Hosts that execute
untrusted tools or stdio MCP servers can opt out:
var envVars = ToolEnvironment.GetDefaultEnvironmentVariables();
envVars["MY_TOOL_API_KEY"] = apiKey;
using Process tool = await runner.StartAsync(new ToolInvocationRequest
{
PackageId = "My.Tool",
ToolArguments = Array.Empty<string>(),
InheritEnvironmentVariables = false,
AdditionalEnvironment = envVars,
});
GetDefaultEnvironmentVariables() keeps platform basics such as PATH, home
directories, temp directories, and system roots without forwarding unrelated
tokens from the parent process.
Version Policy
| Policy | Behavior |
|---|---|
AlwaysLatest |
Query NuGet every call (dnx semantics) |
CachedWithRefresh |
Use cached if within TTL (default 24h); else query |
CachedOnly |
Use cached unconditionally (offline) |
Requirements
- A .NET 8 or .NET 10 runtime must be installed on the host machine.
ToolHost locates the
dotnetmuxer viaPATHorDOTNET_ROOTand invokes it to launch tools — it does not ship a runtime of its own. Applications distributed to environments where users may not have a pre-installed runtime (MS Store, MSIX on fresh PCs, minimal containers) need to bundle one with the application or prompt the user to install it. The .NET SDK is not required.
See Also
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- Microsoft.Extensions.Logging.Abstractions (>= 9.0.16)
- NuGet.Configuration (>= 6.12.5)
- NuGet.Credentials (>= 6.12.5)
- NuGet.Packaging (>= 6.12.5)
- NuGet.Protocol (>= 6.12.5)
-
net8.0
- Microsoft.Extensions.Logging.Abstractions (>= 9.0.16)
- NuGet.Configuration (>= 6.12.5)
- NuGet.Credentials (>= 6.12.5)
- NuGet.Packaging (>= 6.12.5)
- NuGet.Protocol (>= 6.12.5)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
v0.1.8 — Lockstep release with the fcdnx CLI (FieldCure.ToolHost.Cli v0.1.8), which now forwards stdin and bridges stdio with raw byte copies so long-lived stdio servers (e.g. MCP) stay connected. This library has no functional change; the version bump keeps the CLI and library on a single shared version line. See RELEASENOTES.ToolHost.md on GitHub for the full notes.