diff --git a/binding/csharp/IP2Region.Net/IP2Region.Net.csproj b/binding/csharp/IP2Region.Net/IP2Region.Net.csproj
index 3b0ba03..14f16ce 100644
--- a/binding/csharp/IP2Region.Net/IP2Region.Net.csproj
+++ b/binding/csharp/IP2Region.Net/IP2Region.Net.csproj
@@ -21,7 +21,7 @@
-
+
diff --git a/binding/csharp/IP2Region.Net/README.md b/binding/csharp/IP2Region.Net/README.md
new file mode 100644
index 0000000..ab3c1b4
--- /dev/null
+++ b/binding/csharp/IP2Region.Net/README.md
@@ -0,0 +1,99 @@
+# IP2Region.Net
+
+.NET client library for IP2Region
+
+## Installation
+
+Install the package with [NuGet](https://www.nuget.org/packages/IP2Region.Net)
+
+```bash
+Install-Package IP2Region.Net
+```
+
+## Usage
+
+```csharp
+using IP2Region.Net.Abstractions;
+using IP2Region.Net.XDB;
+
+ISearcher searcher = new Searcher(CachePolicy , "your xdb file path");
+```
+### Cache Policy Description
+| Cache Policy | Description | Thread Safe |
+|-------------------------|------------------------------------------------------------------------------------------------------------|-------------|
+| CachePolicy.Content | Cache the entire `xdb` data. | Yes |
+| CachePolicy.VectorIndex | Cache `vecotorIndex` to speed up queries and reduce system io pressure by reducing one fixed IO operation. | Yes |
+| CachePolicy.File | Completely file-based queries | Yes |
+
+### XDB File Description
+Generate using [maker](https://github.com/lionsoul2014/ip2region/tree/master/maker/csharp), or [download](https://github.com/lionsoul2014/ip2region/blob/master/data/ip2region.xdb) pre-generated xdb files
+
+## ASP.NET Core Usage
+
+```csharp
+services.AddIP2RegionService("your xdb file path", cachePolicy: CachePolicy.Content);
+```
+
+NET6/7
+```csharp
+provider.GetRequiredService()
+```
+
+NET8+ support keyed service
+```csharp
+provider.GetRequiredKeyedService("IP2Region.Net");
+```
+
+## TargetFrameworks
+netstandard2.0;netstandard2.1;net6.0;net7.0;net8.0;net9.0;net10.0
+
+## Performance
+// * Summary *
+
+BenchmarkDotNet v0.15.6, Windows 11 (10.0.26200.7171)
+13th Gen Intel Core i7-13700 2.10GHz, 1 CPU, 24 logical and 16 physical cores
+.NET SDK 10.0.100
+ [Host] : .NET 10.0.0 (10.0.0, 10.0.25.52411), X64 RyuJIT x86-64-v3
+ DefaultJob : .NET 10.0.0 (10.0.0, 10.0.25.52411), X64 RyuJIT x86-64-v3
+
+
+| Method | Mean | Error | StdDev | Gen0 | Allocated |
+|------------ |-------------:|-----------:|-----------:|-------:|----------:|
+| ContentIPv4 | 53.70 ns | 0.296 ns | 0.277 ns | 0.0086 | 136 B |
+| VectorIPv4 | 4,446.04 ns | 18.673 ns | 15.593 ns | 0.0076 | 232 B |
+| FileIPv4 | 6,712.40 ns | 15.718 ns | 13.934 ns | 0.0153 | 264 B |
+| ContentIPv6 | 145.53 ns | 0.331 ns | 0.277 ns | 0.0126 | 200 B |
+| VectorIPv6 | 7,058.39 ns | 125.505 ns | 117.398 ns | 0.0381 | 712 B |
+| FileIPv6 | 10,657.97 ns | 53.907 ns | 50.425 ns | 0.0458 | 744 B |
+
+// * Hints *
+Outliers
+ Benchmarks.VectorIPv4: Default -> 2 outliers were removed (4.55 us, 4.58 us)
+ Benchmarks.FileIPv4: Default -> 1 outlier was removed (6.79 us)
+ Benchmarks.ContentIPv6: Default -> 2 outliers were removed (148.08 ns, 152.27 ns)
+
+// * Legends *
+ Mean : Arithmetic mean of all measurements
+ Error : Half of 99.9% confidence interval
+ StdDev : Standard deviation of all measurements
+ Gen0 : GC Generation 0 collects per 1000 operations
+ Allocated : Allocated memory per single operation (managed only, inclusive, 1KB = 1024B)
+ 1 ns : 1 Nanosecond (0.000000001 sec)
+
+// * Diagnostic Output - MemoryDiagnoser *
+
+
+// ***** BenchmarkRunner: End *****
+Run time: 00:02:06 (126.09 sec), executed benchmarks: 6
+
+Global total time: 00:02:13 (133.47 sec), executed benchmarks: 6
+// * Artifacts cleanup *
+Artifacts cleanup is finished
+
+## Contributing
+Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.
+
+Please make sure to update tests as appropriate.
+
+## License
+[Apache License 2.0](https://github.com/lionsoul2014/ip2region/blob/master/LICENSE.md)
diff --git a/maker/csharp/IP2RegionMaker/IP2RegionMaker.csproj b/maker/csharp/IP2RegionMaker/IP2RegionMaker.csproj
index 0d3b600..c88793f 100644
--- a/maker/csharp/IP2RegionMaker/IP2RegionMaker.csproj
+++ b/maker/csharp/IP2RegionMaker/IP2RegionMaker.csproj
@@ -9,6 +9,7 @@
+
diff --git a/maker/csharp/IP2RegionMaker/README.md b/maker/csharp/IP2RegionMaker/README.md
new file mode 100644
index 0000000..18e4491
--- /dev/null
+++ b/maker/csharp/IP2RegionMaker/README.md
@@ -0,0 +1,42 @@
+:globe_with_meridians: [中文简体](README_zh.md) | [English](README.md)
+
+# ip2region xdb csharp generation implementation
+
+# Compilation and Installation
+
+Compilation environment: [dotnet6.0](https://dotnet.microsoft.com/zh-cn/download/dotnet/6.0)
+
+```bash
+# cd to maker/csharp/IP2RegionMaker directory
+dotnet publish -o ./bin
+```
+
+Then you will get a packaged file named IP2RegionMaker.dll in the bin directory of the current folder.
+
+# `xdb` Data Generation
+
+Generate the xdb binary file via `dotnet IP2RegionMaker.dll`:
+
+```bash
+➜ csharp git:(master) ✗ dotnet IP2RegionMaker.dll
+ip2region xdb maker
+dotnet IP2RegionMaker.dll [command options]
+--src string source ip text file path
+--dst string destination binary xdb file path
+```
+
+For example, using the default data/ipv4_source.txt source data to generate an ip2region_v4.xdb binary file in the current directory:
+
+```bash
+➜ csharp git:(master) ✗ dotnet ./IP2RegionMaker/bin/IP2RegionMaker.dll --src=../../data/ipv4_source.txt --dst=./ip2region_v4.xdb
+# You will see a lot of output; eventually, you will see the following output indicating the run was successful
+...
+...
+...
+write done, dataBlocks: 13804, indexBlocks: (683591, 720221), indexPtr: (982904, 11065984)
+Done, elapsed:2.1966620833333335m
+```
+
+# Data Query / bench Test
+
+All [bindings](../../binding/) come with query and bench test programs as well as usage documentation. You can use the searcher of your familiar language for query testing or bench testing to confirm the correctness and integrity of the data.