ANcpLua.NET.Sdk 1.3.17

There is a newer version of this package available.
See the version list below for details.
dotnet add package ANcpLua.NET.Sdk --version 1.3.17
                    
NuGet\Install-Package ANcpLua.NET.Sdk -Version 1.3.17
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="ANcpLua.NET.Sdk" Version="1.3.17" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="ANcpLua.NET.Sdk" Version="1.3.17" />
                    
Directory.Packages.props
<PackageReference Include="ANcpLua.NET.Sdk" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add ANcpLua.NET.Sdk --version 1.3.17
                    
#r "nuget: ANcpLua.NET.Sdk, 1.3.17"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package ANcpLua.NET.Sdk@1.3.17
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=ANcpLua.NET.Sdk&version=1.3.17
                    
Install as a Cake Addin
#tool nuget:?package=ANcpLua.NET.Sdk&version=1.3.17
                    
Install as a Cake Tool

NuGet .NET 10 License

ANcpLua.NET.Sdk

MSBuild SDK with opinionated defaults for .NET projects. Inspired by Meziantou.NET.Sdk.

SDKs

SDK Base SDK Use For
ANcpLua.NET.Sdk Microsoft.NET.Sdk Libraries, Console Apps, Workers, Unit Tests
ANcpLua.NET.Sdk.Web Microsoft.NET.Sdk.Web Web APIs, ASP.NET Core, Integration Tests

Installation

Add a global.json to your repo root:

{
  "msbuild-sdks": {
    "ANcpLua.NET.Sdk": "*",
    "ANcpLua.NET.Sdk.Web": "*"
  }
}

Then replace your SDK reference:

<Project Sdk="ANcpLua.NET.Sdk"></Project>

For Web projects:

<Project Sdk="ANcpLua.NET.Sdk.Web"></Project>

Working Features

Banned API Analyzer (RS0030)

Enforces best practices via BannedSymbols.txt:

Banned Use Instead
DateTime.Now/UtcNow TimeProvider.System.GetUtcNow()
DateTimeOffset.Now/UtcNow TimeProvider.System.GetUtcNow()
ArgumentNullException.ThrowIfNull Native .NET 6+ API (polyfilled)
Enumerable.Any(predicate) List<T>.Exists()
Enumerable.FirstOrDefault(predicate) List<T>.Find()
InvariantCulture comparisons Ordinal
System.Tuple ValueTuple
Math.Round (no rounding mode) Overload with MidpointRounding
Local time file APIs UTC variants
Newtonsoft.Json System.Text.Json

ANcpLua.Analyzers (Bundled)

Rule Severity Description
AL0001 Error Prohibit reassignment of primary constructor params
AL0003 Error Don't divide by constant zero
AL0011 Warning Avoid lock on non-Lock types (.NET 9+)
AL0012 Warning Deprecated OTel semantic convention attribute
AL0013 Info Missing telemetry schema URL

See ANcpLua.Analyzers for all 13 rules.

Extensions (Auto-Enabled by Default)

Property Description Default
GenerateClaudeMd Auto-generates CLAUDE.md linking to repo root true
InjectSharedThrow Injects Throw.IfNull() guard clause helper true
IncludeDefaultBannedSymbols Include BannedSymbols.txt true
BanNewtonsoftJsonSymbols Ban Newtonsoft.Json direct usage true

Extensions (Opt-in)

Property Description Default
InjectStringOrdinalComparer Injects internal StringOrdinalComparer false
InjectFakeLogger Injects FakeLoggerExtensions (requires FakeLogCollector) false
InjectSourceGenHelpers Roslyn source generator utilities (details) false

SourceGen Helpers include: EquatableArray<T>, DiagnosticInfo, DiagnosticsExtensions, SymbolExtensions, SyntaxExtensions, SemanticModelExtensions, CompilationExtensions, SyntaxValueProvider helpers, EnumerableExtensions, FileExtensions, LocationInfo, EquatableMessageArgs

For analyzers, CLI tools, or test projects, use ANcpLua.Roslyn.Utilities NuGet package instead.

Polyfills (Opt-in for Legacy TFMs)

Property Description Default
InjectLockPolyfill Injects System.Threading.Lock (net8.0 backport) false
InjectTimeProviderPolyfill Injects System.TimeProvider false
InjectIndexRangeOnLegacy Injects Index and Range types false
InjectIsExternalInitOnLegacy Injects IsExternalInit (for records) false
InjectTrimAttributesOnLegacy Injects trimming attributes (e.g. DynamicallyAccessedMembers) false
InjectNullabilityAttributesOnLegacy Injects nullability attributes (e.g. AllowNull) false
InjectRequiredMemberOnLegacy Injects RequiredMemberAttribute false
InjectCompilerFeatureRequiredOnLegacy Injects CompilerFeatureRequiredAttribute false
InjectCallerAttributesOnLegacy Injects CallerArgumentExpressionAttribute false
InjectUnreachableExceptionOnLegacy Injects UnreachableException false
InjectExperimentalAttributeOnLegacy Injects ExperimentalAttribute false
InjectParamCollectionOnLegacy Injects ParamCollectionAttribute false
InjectStackTraceHiddenOnLegacy Injects StackTraceHiddenAttribute false

Configuration

Property Default Description
GenerateClaudeMd true Generate CLAUDE.md for AI assistants
InjectSharedThrow true Inject Throw.IfNull() guard clauses
IncludeDefaultBannedSymbols true Include BannedSymbols.txt
BanNewtonsoftJsonSymbols true Ban Newtonsoft.Json direct usage
EnableDefaultTestSettings true Auto-configure test runner
EnableCodeCoverage true (CI) Enable coverage

Web Service Defaults (Auto-Registered for Web Projects)

When using Microsoft.NET.Sdk.Web, the SDK automatically adds Aspire 13.0-compatible service defaults:

Feature Description
OpenTelemetry Logging, Metrics (ASP.NET, HTTP, Runtime), Tracing with OTLP export
Health Checks /health (readiness) and /alive (liveness) endpoints
Service Discovery Microsoft.Extensions.ServiceDiscovery enabled
HTTP Resilience Standard resilience handlers with retries and circuit breakers

Opt-out: <AutoRegisterServiceDefaults>false</AutoRegisterServiceDefaults>

Repository Requirements

This SDK enforces the following repository-level configurations:

Directory.Packages.props (Required)

<PropertyGroup>
  <ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
  <CentralPackageTransitivePinningEnabled>true</CentralPackageTransitivePinningEnabled>
</PropertyGroup>
<PropertyGroup>
  <LangVersion>latest</LangVersion>
  <Nullable>enable</Nullable>
  <Deterministic>true</Deterministic>
</PropertyGroup>
<PropertyGroup Condition="'$(CI)' == 'true'">
  <ContinuousIntegrationBuild>true</ContinuousIntegrationBuild>
</PropertyGroup>

Note: LangVersion and Nullable are SDK-owned properties. Place them in Directory.Build.props, NOT in individual csproj files.

Running Tests

export CI=true
export NUGET_DIRECTORY="$(pwd)/artifacts"
dotnet test --project tests/ANcpLua.Sdk.Tests/ANcpLua.Sdk.Tests.csproj
There are no supported framework assets in this package.

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.

Version Downloads Last Updated
1.6.2 23 1/10/2026
1.6.1 26 1/10/2026
1.3.31 49 1/9/2026
1.3.30 34 1/9/2026
1.3.29 51 1/9/2026
1.3.28 86 1/9/2026
1.3.27 36 1/9/2026
1.3.26 41 1/9/2026
1.3.25 36 1/9/2026
1.3.24 37 1/9/2026
1.3.23 111 1/6/2026
1.3.22 99 1/6/2026
1.3.21 76 1/6/2026
1.3.20 87 1/2/2026
1.3.19 88 1/2/2026
1.3.18 120 1/1/2026
1.3.17 86 1/1/2026
1.3.16 92 12/31/2025
1.3.15 85 12/31/2025
1.3.14 85 12/31/2025
1.3.13 83 12/31/2025
1.3.12 87 12/31/2025
1.3.10 90 12/31/2025
1.3.9 84 12/31/2025
1.3.8 92 12/30/2025
1.3.7 153 12/30/2025
1.3.6 80 12/30/2025
1.3.5 91 12/30/2025
1.3.4 100 12/30/2025
1.3.3 87 12/30/2025
1.3.2 86 12/30/2025
1.3.1 86 12/30/2025
1.3.0 87 12/30/2025
1.2.4 98 12/29/2025
1.2.3 91 12/29/2025
1.2.2 91 12/29/2025
1.2.1 177 12/25/2025
1.2.0 199 12/24/2025
1.1.8 278 12/16/2025
1.1.7 267 12/16/2025
1.1.6 294 12/16/2025
1.1.5 256 12/16/2025
1.1.4 260 12/16/2025
1.1.3 261 12/16/2025
1.1.2 274 12/15/2025
1.1.1 239 12/15/2025
1.1.0 243 12/15/2025
1.0.0 167 12/14/2025