Opinionated MSBuild SDK for .NET projects.
Add to global.json (check NuGet for latest version):
{
"msbuild-sdks": {
"ANcpLua.NET.Sdk": "1.3.31"
}
}Tip: Use Dependabot or Renovate to auto-update SDK versions.
<!-- Library/Console/Worker -->
<Project Sdk="ANcpLua.NET.Sdk"></Project>
<!-- Web API -->
<Project Sdk="ANcpLua.NET.Sdk.Web"></Project>Base SDK:
- Banned API enforcement (
DateTime.Now→TimeProvider, etc.) - Custom analyzers via ANcpLua.Analyzers
Throw.IfNull()guard clauses- CLAUDE.md generation for AI assistants
Web SDK adds:
- OpenTelemetry (logging, metrics, tracing with OTLP)
- Auto-instrumentation for GenAI (OpenAI, Anthropic, Ollama) and Database calls
- Health endpoints (
/health,/alive) - HTTP resilience (retries, circuit breakers)
- DevLogs (browser console → server logs)
<PropertyGroup>
<!-- Roslyn source generator utilities -->
<InjectSourceGenHelpers>true</InjectSourceGenHelpers>
<!-- FakeLogger test extensions -->
<InjectFakeLogger>true</InjectFakeLogger>
<!-- Legacy TFM polyfills -->
<InjectLockPolyfill>true</InjectLockPolyfill>
<InjectTimeProviderPolyfill>true</InjectTimeProviderPolyfill>
</PropertyGroup>Mark properties with OpenTelemetry semantic convention names for automatic tag generation:
using ANcpSdk.AspNetCore.ServiceDefaults.Instrumentation;
public record ChatRequest(
[OTel("gen_ai.request.model")] string Model,
[OTel("gen_ai.request.max_tokens")] int? MaxTokens);
// Generated extension method:
activity.SetTagsFromChatRequest(request);<PropertyGroup>
<!-- Disable service defaults for Web SDK -->
<AutoRegisterServiceDefaults>false</AutoRegisterServiceDefaults>
<!-- Disable specific features -->
<GenerateClaudeMd>false</GenerateClaudeMd>
<InjectSharedThrow>false</InjectSharedThrow>
<IncludeDefaultBannedSymbols>false</IncludeDefaultBannedSymbols>
</PropertyGroup>Captures browser console and sends to server logs. Add to your HTML:
<script src="/dev-logs.js"></script>All frontend logs appear in server output with [BROWSER] prefix.
Central Package Management enabled in Directory.Packages.props:
<PropertyGroup>
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
</PropertyGroup>Full reference: https://ancplua.mintlify.app/sdk/overview
- ANcpLua.Analyzers - Custom Roslyn analyzers (auto-injected)
- ANcpLua.Roslyn.Utilities - Roslyn utilities for source generators
Initial architecture inspired by Meziantou.NET.Sdk.