Ling.FluentValidation.Annotations 1.0.0-preview.2

This is a prerelease version of Ling.FluentValidation.Annotations.
dotnet add package Ling.FluentValidation.Annotations --version 1.0.0-preview.2
                    
NuGet\Install-Package Ling.FluentValidation.Annotations -Version 1.0.0-preview.2
                    
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="Ling.FluentValidation.Annotations" Version="1.0.0-preview.2" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Ling.FluentValidation.Annotations" Version="1.0.0-preview.2" />
                    
Directory.Packages.props
<PackageReference Include="Ling.FluentValidation.Annotations" />
                    
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 Ling.FluentValidation.Annotations --version 1.0.0-preview.2
                    
#r "nuget: Ling.FluentValidation.Annotations, 1.0.0-preview.2"
                    
#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 Ling.FluentValidation.Annotations@1.0.0-preview.2
                    
#: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=Ling.FluentValidation.Annotations&version=1.0.0-preview.2&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=Ling.FluentValidation.Annotations&version=1.0.0-preview.2&prerelease
                    
Install as a Cake Tool

Ling.FluentValidation.Annotations

Project documentation | 简体中文

Ling.FluentValidation.Annotations contains the declaration-only API for marking DTOs and describing validation rules. It does not depend on FluentValidation, so shared Contracts projects do not acquire a validation-runtime dependency.

The package also includes Roslyn analyzers and code fixes that report invalid rule usage while editing and building.

Installation

Install the package in the project that owns request and DTO types:

dotnet add package Ling.FluentValidation.Annotations --prerelease

Declare a validation contract

Generation is explicit. A type with rules must be marked with [GenerateValidator]:

using Ling.FluentValidation.Annotations;

namespace MyApplication.Contracts;

[GenerateValidator]
public sealed record CreateOrderRequest
{
    [NotEmpty]
    [Length(3, 100)]
    public string Name { get; init; } = string.Empty;

    [InclusiveBetween(1, 100)]
    public int Quantity { get; init; }
}

The analyzer reports rules placed on an unmarked type and offers a code fix that adds [GenerateValidator].

Rules

Annotations cover value-based, type-independent rules, including:

  • null and empty checks;
  • length and regular-expression checks;
  • equality, ordering, and inclusive or exclusive ranges;
  • allowed and denied values;
  • email, phone, URL, credit card, Base64, file extension, enum, and enum-name checks.

Standard System.ComponentModel.DataAnnotations validation attributes are also recognized by the generator. Rule-specific error messages, codes, severity, display names, and supported conditional members can be configured on Ling attributes.

Rules that depend on services, another validator, or application behavior belong in a partial validator in the receiving project rather than in the contract assembly.

Select a source assembly

The project that receives generated validators explicitly selects external contract assemblies:

using Ling.FluentValidation.Annotations;
using MyApplication.Contracts;

[assembly: GenerateValidatorsFromAssemblyContaining(typeof(CreateOrderRequest))]

On .NET 7 or later, the generic form can be used to omit typeof:

[assembly: GenerateValidatorsFromAssemblyContaining<CreateOrderRequest>]

Configure generated validators

Apply options to the receiving assembly:

[assembly: ValidatorGenerationOptions(
    Namespace = "MyApplication.Validation",
    Visibility = GeneratedValidatorVisibility.Public,
    IsSealed = true,
    ClassLevelCascadeMode = ValidationCascadeMode.Continue,
    RuleLevelCascadeMode = ValidationCascadeMode.Stop)]

Target frameworks

  • netstandard2.0 provides the base declaration API.
  • net7.0 adds generic attribute forms that only simplify typeof syntax.

Newer applications automatically select the compatible asset.

  • Ling.FluentValidation provides the source generator, runtime rule implementations, and FluentValidation integration.

License

MIT

Product 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 is compatible.  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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • .NETStandard 2.0

    • No dependencies.
  • net7.0

    • No dependencies.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on Ling.FluentValidation.Annotations:

Package Downloads
Ling.FluentValidation

Attribute-driven FluentValidation source generation, runtime validators, and rule extensions.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.0-preview.2 76 8/31/2026
1.0.0-preview.1 67 8/31/2026