ArcForges.Build.Policy 1.0.0-ci.67.1

This is a prerelease version of ArcForges.Build.Policy.
dotnet add package ArcForges.Build.Policy --version 1.0.0-ci.67.1
                    
NuGet\Install-Package ArcForges.Build.Policy -Version 1.0.0-ci.67.1
                    
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="ArcForges.Build.Policy" Version="1.0.0-ci.67.1">
  <PrivateAssets>all</PrivateAssets>
  <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
</PackageReference>
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="ArcForges.Build.Policy" Version="1.0.0-ci.67.1" />
                    
Directory.Packages.props
<PackageReference Include="ArcForges.Build.Policy">
  <PrivateAssets>all</PrivateAssets>
  <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
</PackageReference>
                    
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 ArcForges.Build.Policy --version 1.0.0-ci.67.1
                    
#r "nuget: ArcForges.Build.Policy, 1.0.0-ci.67.1"
                    
#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 ArcForges.Build.Policy@1.0.0-ci.67.1
                    
#: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=ArcForges.Build.Policy&version=1.0.0-ci.67.1&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=ArcForges.Build.Policy&version=1.0.0-ci.67.1&prerelease
                    
Install as a Cake Tool

ArcForges.Build.Policy

Portable MSBuild defaults and enforcement for C# 14 repositories: nullable, deterministic builds, warnings-as-errors, package locks, central package versions and AOT/trim warning escalation. This build-only AGPL-3.0-only package contains no runtime assembly or native dependency.

Declare the exact version in your repository's Directory.Packages.props and reference the package with PrivateAssets="all". Each repository owns its global.json, target frameworks, runtime/AOT host settings and package locks. This package never invokes CMake/vcpkg and does not set output/cache paths. Normal NuGet build/ imports activate after restore; it intentionally does not flow transitively.

Diagnostics AFP001–AFP003 reject missing central management, inline overrides and floating versions; AFP004–AFP005 reject compiler-policy or lock-policy overrides. Invalid package graphs may additionally be rejected directly by NuGet. Check compiler settings with dotnet msbuild -getProperty:LangVersion.

Owned assemblies also expose AssemblyMetadataAttribute keys ArcForges.SourceCommit, ArcForges.BuildId, ArcForges.PipelineRun, ArcForges.SourceDateEpoch and ArcForges.BuildKind. CI identity uses the full Git SHA and actual GitHub run ID/attempt, with the commit timestamp in Unix seconds; this deterministic source time is not wall-clock compilation time. AFP006 rejects incomplete or mismatched CI identity. Non-repository local consumer fixtures remain explicitly local (source local, epoch 0 when Git metadata is unavailable) and cannot establish publication. The owner's candidate tooling separately seals dirty state and rejects dirty/local publication.

The package also carries one shared C# architecture-policy engine in tools/architecture. An offline test host explicitly imports $(PkgArcForges_Build_Policy)/tools/architecture/ArchitecturePolicy.props after declaring the package with GeneratePathProperty="true" and PrivateAssets="all". It uses the compiler binaries from that host's selected .NET SDK, with no additional Roslyn NuGet dependency. The import rejects production hosts unless they explicitly identify themselves as a build tool. There is no automatic architecture target in normal consumer builds.

The host supplies complete reviewed project classifications, evaluated MSBuild source/reference inputs, resolved package licences, exact toolchain input hashes, individual API-to-contract-test mappings, and owned, expiring exceptions. Domain and Application package dependencies also require reviewed layer classifications; unclassified dependencies fail AT-01, including transitive NuGet edges. ProjectGraph.Evaluate uses the completed locked owning build; ReadCompilation reads compiler metadata without loading production assemblies. PolicyEngine.Check checks AT-01–AT-14, RP-01–RP-10 and seven semantic banned-symbol categories. Unknown project references, cycles, unclassified dependencies, missing compilations and unresolved invocations fail closed. Generated service/wire bindings belong to the consumer's canonical schema authority.

RP-01/RP-08 consume the canonical naming package result; RP-09 consumes the existing required secret gate. DesktopPlatform joins their same-source, same-run, same-attempt receipts before its actual graph test. Local runs without that hosted secret evidence remain unverified and fail the complete graph assertion; they must not manufacture a successful secret receipt. Offline fixtures remain independently runnable. The producer retains compiled positive/negative fixtures for every rule and explicit current API mappings under eng/policy/architecture-*.json. A correspondence is a test contract, not a claim of runtime coverage.

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.0.0-ci.67.1 0 9/29/2026
1.0.0-ci.66.1 0 9/29/2026
1.0.0-ci.65.1 0 9/29/2026
1.0.0-ci.64.1 0 9/29/2026
1.0.0-ci.63.1 0 9/29/2026
1.0.0-ci.62.1 0 9/29/2026
1.0.0-ci.61.1 0 9/29/2026
1.0.0-ci.60.1 0 9/29/2026
1.0.0-ci.59.1 17 9/29/2026
1.0.0-ci.58.1 25 9/29/2026
1.0.0-ci.57.1 26 9/29/2026
1.0.0-ci.55.1 31 9/29/2026
1.0.0-ci.54.1 35 9/28/2026
1.0.0-ci.53.1 40 9/28/2026
1.0.0-ci.52.1 40 9/28/2026
1.0.0-ci.51.1 38 9/28/2026
1.0.0-ci.50.1 39 9/28/2026
1.0.0-ci.49.1 46 9/28/2026
1.0.0-ci.48.1 36 9/28/2026
1.0.0-ci.47.1 36 9/28/2026
Loading failed