SourceGeneratorWriter 10.0.300.5
dotnet add package SourceGeneratorWriter --version 10.0.300.5
NuGet\Install-Package SourceGeneratorWriter -Version 10.0.300.5
<PackageReference Include="SourceGeneratorWriter" Version="10.0.300.5" />
<PackageVersion Include="SourceGeneratorWriter" Version="10.0.300.5" />
<PackageReference Include="SourceGeneratorWriter" />
paket add SourceGeneratorWriter --version 10.0.300.5
#r "nuget: SourceGeneratorWriter, 10.0.300.5"
#:package SourceGeneratorWriter@10.0.300.5
#addin nuget:?package=SourceGeneratorWriter&version=10.0.300.5
#tool nuget:?package=SourceGeneratorWriter&version=10.0.300.5
SourceGeneratorWriter
Reusable IndentedTextWriter
helpers for authoring Roslyn source generators. It provides a small Block(...) extension that makes
emitting indentation-aware, brace-wrapped C# source readable — so generator projects don't each
re-implement their own indenting writer.
Install
dotnet add package SourceGeneratorWriter
Target netstandard2.0 from your analyzer/source-generator project (the standard generator runtime
requirement). Because the API lives in the System.CodeDom.Compiler namespace, the Block
extension is available wherever you already have a using System.CodeDom.Compiler; for
IndentedTextWriter.
Usage
using System.CodeDom.Compiler;
using System.IO;
StringWriter text = new();
IndentedTextWriter writer = new(text, "\t");
writer.Block("namespace Demo", () =>
writer.Block("public sealed class Greeter", () =>
writer.Block("public string Hello(string name)", () =>
writer.WriteLine("return $\"Hello, {name}!\";"))));
produces:
namespace Demo
{
public sealed class Greeter
{
public string Hello(string name)
{
return $"Hello, {name}!";
}
}
}
Multiple sections (try / catch)
Block takes a header, an optional callback, then any number of additional IndentedTextWriterBlock
params. A params block can carry both a header and a callback, which emits a second braced
section — ideal for try { } catch { }:
writer.Block(
"try",
() => writer.WriteLine("Risky();"),
"catch (Exception e)",
((Action)() => writer.WriteLine("Log(e);")));
try
{
Risky();
}
catch (Exception e)
{
Log(e);
}
Header indentation
A header string is split on the writer's newline and each line's leading tabs adjust the indent level for that line, so multi-line raw-string headers format correctly.
API
| Member | Description |
|---|---|
IndentedTextWriter.Block(header, callback?, params blocks) |
Writes the header, optionally a { }-wrapped callback body, then repeats for each additional block. |
IndentedTextWriterBlock |
A union of either a string header or an Action callback, with implicit conversions both ways. Construct with both to emit a header followed by its own braced body. |
License
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. 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 was computed. 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. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|