🗂️ Portfolio archive — .NET library, published to NuGet (C#). Launches OS processes as cancellable
Tasks. Part of a consolidated set of my personal repositories and not actively maintained (dormant since 2019).
📋 Self-review — 5 good practices & 5 things I'd improve
✅ Good practices demonstrated
- Published as a proper NuGet package.
- Real unit tests plus CI (AppVeyor) and quality gates (SonarCloud, Codacy).
- Semantic versioning via GitVersion and dependency automation via Renovate.
- LICENSE and a clear, badged README.
- A focused, single-responsibility API — good small-library design.
- Dormant since 2019 and tied to older .NET Framework tooling.
- CI on AppVeyor rather than GitHub Actions (now the norm for this stack).
- IDE settings files (
.sln.DotSettings) committed to the repo. - Some badges reference services/URLs that have since changed.
- No modern multi-targeting (.NET Standard / .NET 8+) to keep it usable today.
A basic library to launch Processes as Cancellable Tasks
using System.Diagnostics;
// ...
var process = new ProcessStartInfo("cmd.exe", "/c Hello World!");
var result = await process.StartAsync();
result.Should().Be(0);using System.Diagnostics;
// ...
try
{
var process = new ProcessStartInfo("cmd.exe", "/c ping -t 127.0.0.1");
var cts = new CancellationTokenSource();
cts.CancelAfter(TimeSpan.FromMinutes(1));
await process.StartAsync(cts.Token);
}
catch (TaskCanceledException)
{
// One minute later
}using System.Diagnostics;
// ...
var output = new StringBuilder();
var psi = new ProcessStartInfo("cmd.exe", @"/c tree \");
await psi.StartAsync((string line) => output.AppendLine(line)).ConfigureAwait(false);
return output.ToString();