Repost.Client.MSBuild
1.0.8
dotnet add package Repost.Client.MSBuild --version 1.0.8
NuGet\Install-Package Repost.Client.MSBuild -Version 1.0.8
<PackageReference Include="Repost.Client.MSBuild" Version="1.0.8"> <PrivateAssets>all</PrivateAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets> </PackageReference>
<PackageVersion Include="Repost.Client.MSBuild" Version="1.0.8" />
<PackageReference Include="Repost.Client.MSBuild"> <PrivateAssets>all</PrivateAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets> </PackageReference>
paket add Repost.Client.MSBuild --version 1.0.8
#r "nuget: Repost.Client.MSBuild, 1.0.8"
#:package Repost.Client.MSBuild@1.0.8
#addin nuget:?package=Repost.Client.MSBuild&version=1.0.8
#tool nuget:?package=Repost.Client.MSBuild&version=1.0.8
Repost.Client.MSBuild
Build-time Repost client generation for .NET — the Grpc.Tools-style idiom: a
NuGet package whose targets run the Repost schema engine as an MSBuild task
before CoreCompile and compile the generated C# client straight into your
assembly. Pairs with the Repost.Client
runtime package (and Repost.Client.Testing for stub sends).
Quick start
Put your schema at repost/schema.repost next to the project:
generator sdk {
language = "csharp"
output = "../Generated"
namespace = "Contoso.Events"
clientName = "EventsClient"
}
Reference the packages:
<PackageReference Include="Repost.Client" Version="1.0.0" />
<PackageReference Include="Repost.Client.MSBuild" Version="1.0.0" PrivateAssets="all" />
dotnet build (or a full msbuild.exe build) validates the schema, writes the
generated client to Generated/ (committed or gitignored — your choice), and
compiles it. A second build with unchanged schema and engine is a pure
incremental skip, so design-time builds in Visual Studio no-op instantly.
Configuration
| Property / item | Default | Meaning |
|---|---|---|
RepostSchemaFile |
repost/schema.repost when it exists |
Single-schema fast path. |
RepostSchemaGeneratorName |
sdk |
Schema generator to run. |
RepostSchemaOutputDir |
$(MSBuildProjectDirectory)\Generated |
Generated tree root. |
RepostSchemaControlDir |
obj/repost/ |
Request record + incremental stamp (intermediate state). |
RepostSchemaEnginePath |
(unset) | Explicit engine executable; wins over everything else. |
RepostSchema item |
(from RepostSchemaFile) |
Multi-schema support; metadata GeneratorName, OutputDir, ControlDir. |
RepostSchemaEnvironmentInput item |
(empty) | NAME=value entries feeding schema env("NAME") references. |
The schema engine
The package carries the five native repost-schema engines
(linux-x64, linux-arm64, osx-x64, osx-arm64, win-x64) plus a
pack-time–generated SHA-256 checksum manifest. Before every execution the task
re-hashes the resolved binary and compares it against that pinned manifest; a
mismatch is a hard build error and the engine never runs. Release packs embed
the binaries at pack time from REPOST_ENGINE_DIST (<dist>/<rid>/repost-schema[.exe]).
Engine resolution order:
RepostSchemaEnginePathMSBuild property,REPOST_SCHEMA_ENGINEenvironment variable (same override the Go CLI honors),- the packaged
tools/<rid>engine (checksum-verified).
Explicit and environment-resolved engines are developer-controlled and run
unverified. The regeneration marker embedded in generated files is
dotnet build, and the generated tree is byte-identical to what the
repost schema generate CLI would produce, so the MSBuild and committed-code
(CLI) flows are interchangeable.
Regeneration control: Generated/ is included via a glob, so deleting it and
rebuilding regenerates; the stamp file under obj/repost/ records the last
successful generation (obj/repost/request-<generator>.json is the exact
protocol request, kept for debugging).
Learn more about Target Frameworks and .NET Standard.
This package has 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.