Ecng.Common
1.0.232
See the version list below for details.
dotnet add package Ecng.Common --version 1.0.232
NuGet\Install-Package Ecng.Common -Version 1.0.232
<PackageReference Include="Ecng.Common" Version="1.0.232" />
<PackageVersion Include="Ecng.Common" Version="1.0.232" />
<PackageReference Include="Ecng.Common" />
paket add Ecng.Common --version 1.0.232
#r "nuget: Ecng.Common, 1.0.232"
#:package Ecng.Common@1.0.232
#addin nuget:?package=Ecng.Common&version=1.0.232
#tool nuget:?package=Ecng.Common&version=1.0.232
Ecng.Common
Core utilities and extension methods for everyday .NET development. Includes string helpers, type conversion, time utilities, CSV parsing, and more.
String Utilities
Basic String Operations
using Ecng.Common;
// Check for null or empty
string text = GetText();
if (text.IsEmpty())
return;
// Check for null, empty, or whitespace
if (text.IsEmptyOrWhiteSpace())
return;
// Default value if empty
string value = text.IsEmpty("default value");
// Throw if empty
string required = input.ThrowIfEmpty(nameof(input));
// String formatting
string result = "{0} + {1} = {2}".Put(1, 2, 3); // "1 + 2 = 3"
// Smart formatting with named parameters
string smart = "Hello {Name}!".PutEx(new { Name = "World" });
String Manipulation
// Join with separator
var items = new[] { "a", "b", "c" };
string joined = items.Join(", "); // "a, b, c"
// Split by line separators (handles \r\n, \n, \r)
string[] lines = "line1\nline2\r\nline3".SplitByLineSeps();
// Case-insensitive comparison
bool equal = "ABC".EqualsIgnoreCase("abc"); // true
bool contains = "Hello World".ContainsIgnoreCase("world"); // true
// Remove characters
string cleaned = "hello123".Remove("123"); // "hello"
// Secure strings
SecureString secure = "password".Secure();
string plain = secure.UnSecure();
Validation
// Email validation
bool isEmail = "user@example.com".IsValidEmailAddress();
// URL validation
bool isUrl = "https://example.com".IsValidUrl();
Type Conversion
The Converter class provides flexible type conversion between many types.
Basic Conversion
// String to primitive types
int number = "42".To<int>();
double value = "3.14".To<double>();
bool flag = "true".To<bool>();
DateTime date = "2024-01-15".To<DateTime>();
Guid id = "550e8400-e29b-41d4-a716-446655440000".To<Guid>();
// With default value on failure
int safe = "invalid".To(defaultValue: 0);
// Between types
byte[] bytes = 12345.To<byte[]>();
long ticks = DateTime.Now.To<long>();
Network Types
// IP Address conversions
IPAddress ip = "192.168.1.1".To<IPAddress>();
string ipStr = ip.To<string>();
byte[] ipBytes = ip.To<byte[]>();
long ipLong = ip.To<long>();
// Endpoints
EndPoint endpoint = "192.168.1.1:8080".To<EndPoint>();
IPEndPoint ipEndpoint = "192.168.1.1:8080".To<IPEndPoint>();
DnsEndPoint dnsEndpoint = "example.com:443".To<DnsEndPoint>();
Custom Converters
// Register custom converter
Converter.AddTypedConverter<MyType, string>(obj => obj.ToString());
Converter.AddTypedConverter<string, MyType>(s => MyType.Parse(s));
// Use typed conversion
string str = myObject.TypedTo<MyType, string>();
CSV Parsing
FastCsvReader
High-performance, allocation-free CSV parser.
string csv = "Id;Name;Value\n1;Foo;100\n2;Bar;200";
var reader = new FastCsvReader(csv, ";");
while (reader.NextLine())
{
int id = reader.ReadInt();
string name = reader.ReadString();
decimal value = reader.ReadDecimal();
Console.WriteLine($"{id}: {name} = {value}");
}
Reading Different Types
var reader = new FastCsvReader(data, ",");
while (reader.NextLine())
{
// Primitives
int intVal = reader.ReadInt();
long longVal = reader.ReadLong();
double doubleVal = reader.ReadDouble();
decimal decimalVal = reader.ReadDecimal();
bool boolVal = reader.ReadBool();
// Nullable types
int? nullableInt = reader.ReadNullableInt();
// Date/Time
DateTime date = reader.ReadDateTime("yyyy-MM-dd");
TimeSpan time = reader.ReadTimeSpan();
// Enum
MyEnum enumVal = reader.ReadEnum<MyEnum>();
// Skip column
reader.Skip();
}
Time Utilities
High-Precision Time
using Ecng.Common;
// High-precision current time (uses Stopwatch internally)
DateTime now = TimeHelper.Now;
DateTimeOffset nowWithOffset = TimeHelper.NowWithOffset;
// Adjust time offset (for testing or sync)
TimeHelper.NowOffset = TimeSpan.FromSeconds(5);
// Sync with NTP server
TimeHelper.SyncMarketTime(timeout: 5000);
TimeSpan Extensions
TimeSpan span = TimeSpan.FromDays(365);
double weeks = span.TotalWeeks();
double months = span.TotalMonths();
double years = span.TotalYears();
// Constants
long ticksPerWeek = TimeHelper.TicksPerWeek;
long ticksPerMonth = TimeHelper.TicksPerMonth;
long ticksPerYear = TimeHelper.TicksPerYear;
// Predefined spans
TimeSpan oneMinute = TimeHelper.Minute1;
TimeSpan fiveMinutes = TimeHelper.Minute5;
TimeSpan oneHour = TimeHelper.Hour1;
DateTime Extensions
DateTime dt = DateTime.Now;
// Truncation
DateTime dateOnly = dt.Truncate(TimeSpan.FromDays(1));
DateTime hourOnly = dt.Truncate(TimeSpan.FromHours(1));
// Apply timezone
DateTimeOffset local = dt.ApplyLocal();
DateTimeOffset utc = dt.ApplyUtc();
DateTimeOffset custom = dt.ApplyTimeZone(TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time"));
// Async delay
await TimeSpan.FromSeconds(1).Delay(cancellationToken);
I/O Utilities
File Operations
using Ecng.Common;
// Safe file operations
string content = IOHelper.ReadFile("path/to/file.txt");
IOHelper.WriteFile("path/to/file.txt", content);
// Atomic file write (writes to temp, then renames)
IOHelper.AtomicWriteFile("path/to/file.txt", content);
// Get relative path
string relative = IOHelper.GetRelativePath(basePath, fullPath);
Stream Extensions
// Read all bytes
byte[] data = stream.ReadToEnd();
// Copy with progress
await source.CopyToAsync(destination, progress: bytesWritten =>
{
Console.WriteLine($"Written: {bytesWritten}");
});
Math Utilities
using Ecng.Common;
// Rounding
double rounded = 3.7.Round(); // 4
double ceiling = 3.1.Ceiling(); // 4
double floor = 3.9.Floor(); // 3
// Clamping
int clamped = 150.Max(100); // 100
int clamped2 = 50.Min(100); // 100
// Abs
int absolute = (-5).Abs(); // 5
// Percentage
decimal pct = 250m.Percent(1000m); // 25
Random Generation
using Ecng.Common;
// Random values
int randomInt = RandomGen.GetInt(1, 100);
double randomDouble = RandomGen.GetDouble();
bool randomBool = RandomGen.GetBool();
// Random bytes
byte[] randomBytes = RandomGen.GetBytes(32);
// Random string
string randomStr = RandomGen.GetString(16);
Disposable Helpers
Base Disposable Class
public class MyResource : Disposable
{
private IntPtr _handle;
protected override void DisposeManaged()
{
// Clean up managed resources
base.DisposeManaged();
}
protected override void DisposeNative()
{
// Clean up native resources
CloseHandle(_handle);
base.DisposeNative();
}
}
Disposable Scope
// Dispose multiple objects at once
using var scope = new DisposeScope(resource1, resource2, resource3);
// Or with extension
resource1.DisposeWith(scope);
File System Abstraction
IFileSystem Interface
// Local file system
IFileSystem fs = new LocalFileSystem();
// In-memory file system (for testing)
IFileSystem memFs = new MemoryFileSystem();
// Operations
bool exists = fs.FileExists("path/to/file");
byte[] data = fs.ReadAllBytes("path/to/file");
fs.WriteAllBytes("path/to/file", data);
fs.CreateDirectory("path/to/dir");
IEnumerable<string> files = fs.GetFiles("path", "*.txt");
Currency Support
// Currency types
CurrencyTypes usd = CurrencyTypes.USD;
CurrencyTypes eur = CurrencyTypes.EUR;
// Currency operations
Currency amount = new Currency(100, CurrencyTypes.USD);
string display = amount.ToString(); // "$100.00"
Cloning
// Deep clone
var clone = original.Clone();
// Typed clone
public class MyClass : Cloneable<MyClass>
{
public override MyClass Clone()
{
return new MyClass { /* copy properties */ };
}
}
Watch (Benchmarking)
using var watch = new Watch("Operation name");
// Do work...
// Automatically logs elapsed time on dispose
// Or get elapsed manually
TimeSpan elapsed = watch.Elapsed;
NuGet
Install-Package Ecng.Common
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 is compatible. 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 was computed. 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 is compatible. 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. |
-
.NETStandard 2.0
- Ecng.SmartFormat (>= 1.0.41)
- Microsoft.Bcl.AsyncInterfaces (>= 8.0.0)
- Nito.AsyncEx (>= 5.1.2)
- System.ComponentModel.Annotations (>= 5.0.0)
- System.Reflection.Emit.Lightweight (>= 4.7.0)
- System.Text.Encoding.CodePages (>= 8.0.0)
-
net10.0
- Ecng.SmartFormat (>= 1.0.41)
- Nito.AsyncEx (>= 5.1.2)
- System.Reflection.Emit.Lightweight (>= 4.7.0)
- System.Text.Encoding.CodePages (>= 10.0.1)
-
net6.0
- Ecng.SmartFormat (>= 1.0.41)
- Nito.AsyncEx (>= 5.1.2)
- System.Reflection.Emit.Lightweight (>= 4.7.0)
- System.Text.Encoding.CodePages (>= 8.0.0)
NuGet packages (9)
Showing the top 5 NuGet packages that depend on Ecng.Common:
| Package | Downloads |
|---|---|
|
Ecng.Collections
Ecng system framework |
|
|
Ecng.Localization
Ecng system framework |
|
|
Ecng.Configuration
Ecng system framework |
|
|
Ecng.IO
Ecng system framework |
|
|
Ecng.Backup
Ecng system framework |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.0.248 | 15 | 1/22/2026 |
| 1.0.247 | 1,750 | 1/19/2026 |
| 1.0.246 | 2,068 | 1/18/2026 |
| 1.0.245 | 1,241 | 1/18/2026 |
| 1.0.244 | 2,020 | 1/14/2026 |
| 1.0.243 | 1,350 | 1/13/2026 |
| 1.0.242 | 1,282 | 1/13/2026 |
| 1.0.241 | 1,797 | 1/9/2026 |
| 1.0.240 | 4,984 | 1/4/2026 |
| 1.0.239 | 3,064 | 12/30/2025 |
| 1.0.238 | 1,171 | 12/29/2025 |
| 1.0.237 | 1,627 | 12/26/2025 |
| 1.0.236 | 1,190 | 12/26/2025 |
| 1.0.235 | 1,172 | 12/26/2025 |
| 1.0.234 | 1,174 | 12/26/2025 |
| 1.0.233 | 1,300 | 12/25/2025 |
| 1.0.232 | 1,268 | 12/25/2025 |
| 1.0.231 | 1,779 | 12/22/2025 |
| 1.0.230 | 1,339 | 12/21/2025 |
| 1.0.229 | 1,420 | 12/19/2025 |
| 1.0.228 | 1,315 | 12/19/2025 |
| 1.0.227 | 1,478 | 12/17/2025 |
| 1.0.226 | 2,465 | 12/15/2025 |
| 1.0.225 | 3,150 | 12/12/2025 |
| 1.0.224 | 4,048 | 12/12/2025 |
| 1.0.223 | 4,367 | 11/29/2025 |
| 1.0.222 | 1,458 | 11/28/2025 |
| 1.0.221 | 1,453 | 11/28/2025 |
| 1.0.220 | 1,542 | 11/27/2025 |
| 1.0.219 | 1,642 | 11/24/2025 |
| 1.0.218 | 1,557 | 11/24/2025 |
| 1.0.217 | 1,546 | 11/23/2025 |
| 1.0.216 | 2,144 | 11/22/2025 |
| 1.0.215 | 2,698 | 11/20/2025 |
| 1.0.214 | 1,771 | 11/18/2025 |
| 1.0.213 | 1,703 | 11/18/2025 |
| 1.0.212 | 1,813 | 11/13/2025 |
| 1.0.211 | 1,670 | 11/10/2025 |
| 1.0.210 | 2,588 | 11/1/2025 |
| 1.0.209 | 1,847 | 10/28/2025 |
| 1.0.208 | 1,812 | 10/27/2025 |
| 1.0.207 | 1,697 | 10/27/2025 |
| 1.0.206 | 1,603 | 10/25/2025 |
| 1.0.205 | 5,334 | 10/3/2025 |
| 1.0.204 | 3,987 | 9/25/2025 |
| 1.0.203 | 10,248 | 8/30/2025 |
| 1.0.202 | 10,537 | 7/13/2025 |
| 1.0.201 | 1,588 | 7/13/2025 |
| 1.0.200 | 1,576 | 7/12/2025 |
| 1.0.199 | 3,054 | 7/8/2025 |
| 1.0.198 | 9,016 | 6/16/2025 |
| 1.0.197 | 1,817 | 6/9/2025 |
| 1.0.196 | 1,690 | 6/8/2025 |
| 1.0.195 | 3,320 | 5/21/2025 |
| 1.0.194 | 1,816 | 5/17/2025 |
| 1.0.193 | 3,427 | 5/12/2025 |
| 1.0.192 | 1,714 | 5/12/2025 |
| 1.0.191 | 4,386 | 4/17/2025 |
| 1.0.190 | 8,417 | 3/20/2025 |
| 1.0.189 | 1,605 | 3/19/2025 |
| 1.0.188 | 6,648 | 2/26/2025 |
| 1.0.187 | 1,727 | 2/26/2025 |
| 1.0.186 | 10,486 | 2/5/2025 |
| 1.0.185 | 5,695 | 1/21/2025 |
| 1.0.184 | 4,961 | 1/14/2025 |
| 1.0.183 | 3,782 | 1/12/2025 |
| 1.0.182 | 2,267 | 1/10/2025 |
| 1.0.181 | 11,189 | 11/18/2024 |
| 1.0.180 | 3,576 | 11/7/2024 |
| 1.0.179 | 2,953 | 10/19/2024 |
| 1.0.178 | 8,567 | 10/5/2024 |
| 1.0.177 | 6,597 | 9/18/2024 |
| 1.0.176 | 1,761 | 9/17/2024 |
| 1.0.175 | 7,001 | 9/1/2024 |
| 1.0.174 | 16,364 | 6/12/2024 |
| 1.0.173 | 4,619 | 5/28/2024 |
| 1.0.172 | 5,437 | 5/4/2024 |
| 1.0.171 | 6,970 | 4/14/2024 |
| 1.0.170 | 7,504 | 3/28/2024 |
| 1.0.169 | 2,087 | 3/17/2024 |
| 1.0.168 | 5,450 | 2/23/2024 |
| 1.0.167 | 2,044 | 2/23/2024 |
| 1.0.166 | 6,283 | 2/18/2024 |
| 1.0.165 | 2,160 | 2/16/2024 |
| 1.0.164 | 4,302 | 2/13/2024 |
| 1.0.163 | 4,013 | 2/8/2024 |
| 1.0.162 | 5,325 | 2/4/2024 |
| 1.0.161 | 4,648 | 1/23/2024 |
| 1.0.160 | 5,047 | 1/12/2024 |
| 1.0.159 | 7,353 | 1/2/2024 |
| 1.0.158 | 2,406 | 12/29/2023 |
| 1.0.157 | 20,828 | 11/12/2023 |
| 1.0.156 | 2,806 | 11/10/2023 |
| 1.0.155 | 2,275 | 11/10/2023 |
| 1.0.154 | 2,592 | 11/9/2023 |
| 1.0.153 | 3,382 | 11/3/2023 |
| 1.0.152 | 2,378 | 11/1/2023 |
| 1.0.151 | 2,387 | 11/1/2023 |
| 1.0.150 | 29,585 | 9/8/2023 |
| 1.0.149 | 2,923 | 9/8/2023 |
| 1.0.148 | 3,169 | 9/3/2023 |
| 1.0.147 | 3,401 | 8/21/2023 |
| 1.0.146 | 3,717 | 8/14/2023 |
| 1.0.145 | 4,013 | 8/10/2023 |
| 1.0.144 | 43,799 | 6/29/2023 |
| 1.0.143 | 18,324 | 5/27/2023 |
| 1.0.142 | 5,407 | 5/19/2023 |
| 1.0.141 | 29,173 | 5/8/2023 |
| 1.0.140 | 9,221 | 4/21/2023 |
| 1.0.139 | 55,763 | 4/3/2023 |
| 1.0.138 | 12,092 | 3/13/2023 |
| 1.0.137 | 23,503 | 3/6/2023 |
| 1.0.136 | 5,815 | 2/26/2023 |
| 1.0.135 | 63,805 | 2/9/2023 |
| 1.0.134 | 21,933 | 2/7/2023 |
| 1.0.133 | 6,080 | 2/4/2023 |
| 1.0.132 | 25,959 | 2/2/2023 |
| 1.0.131 | 22,581 | 1/30/2023 |
| 1.0.130 | 11,216 | 1/18/2023 |
| 1.0.129 | 52,582 | 12/30/2022 |
| 1.0.128 | 8,181 | 12/23/2022 |
| 1.0.127 | 26,847 | 12/12/2022 |
| 1.0.126 | 29,323 | 12/4/2022 |
| 1.0.125 | 6,353 | 12/4/2022 |
| 1.0.124 | 7,605 | 11/30/2022 |
| 1.0.123 | 10,536 | 11/28/2022 |
| 1.0.122 | 10,923 | 11/18/2022 |
| 1.0.121 | 34,679 | 11/11/2022 |
| 1.0.120 | 7,198 | 11/11/2022 |
| 1.0.119 | 6,765 | 11/10/2022 |
| 1.0.118 | 7,846 | 11/5/2022 |
| 1.0.117 | 8,618 | 11/4/2022 |
| 1.0.116 | 31,103 | 11/1/2022 |
| 1.0.115 | 36,760 | 10/16/2022 |
| 1.0.114 | 15,386 | 9/10/2022 |
| 1.0.113 | 59,080 | 9/8/2022 |
| 1.0.112 | 8,035 | 9/8/2022 |
| 1.0.111 | 8,096 | 9/8/2022 |
| 1.0.110 | 10,458 | 9/4/2022 |
| 1.0.109 | 98,544 | 8/24/2022 |
| 1.0.108 | 17,904 | 8/8/2022 |
| 1.0.107 | 11,158 | 7/26/2022 |
| 1.0.106 | 8,068 | 7/26/2022 |
| 1.0.105 | 60,740 | 7/19/2022 |
| 1.0.104 | 53,501 | 7/18/2022 |
| 1.0.103 | 14,121 | 7/8/2022 |
| 1.0.102 | 12,642 | 6/18/2022 |
| 1.0.101 | 8,206 | 6/6/2022 |
| 1.0.100 | 104,390 | 4/30/2022 |
| 1.0.99 | 8,084 | 4/20/2022 |
| 1.0.98 | 8,181 | 4/10/2022 |
| 1.0.97 | 8,095 | 4/7/2022 |
| 1.0.96 | 8,192 | 4/7/2022 |
| 1.0.95 | 8,223 | 4/2/2022 |
| 1.0.94 | 19,619 | 3/29/2022 |
| 1.0.93 | 11,044 | 3/27/2022 |
| 1.0.92 | 298,023 | 1/24/2022 |
| 1.0.91 | 168,826 | 12/29/2021 |
| 1.0.90 | 34,354 | 12/20/2021 |
| 1.0.89 | 7,070 | 12/13/2021 |
| 1.0.88 | 64,583 | 12/6/2021 |
| 1.0.87 | 8,667 | 12/2/2021 |
| 1.0.86 | 34,733 | 11/29/2021 |
| 1.0.85 | 33,511 | 11/22/2021 |
| 1.0.84 | 5,198 | 11/17/2021 |
| 1.0.83 | 35,852 | 11/13/2021 |
| 1.0.82 | 8,629 | 11/10/2021 |
| 1.0.81 | 5,442 | 11/9/2021 |
| 1.0.80 | 68,521 | 11/5/2021 |
| 1.0.79 | 7,748 | 11/4/2021 |
| 1.0.78 | 5,308 | 11/4/2021 |
| 1.0.77 | 5,233 | 11/3/2021 |
| 1.0.76 | 5,609 | 10/30/2021 |
| 1.0.75 | 37,131 | 10/21/2021 |
| 1.0.74 | 6,095 | 10/17/2021 |
| 1.0.73 | 67,627 | 10/14/2021 |
| 1.0.72 | 17,207 | 10/13/2021 |
| 1.0.71 | 6,005 | 10/12/2021 |
| 1.0.70 | 37,817 | 10/11/2021 |
| 1.0.69 | 5,502 | 10/9/2021 |
| 1.0.68 | 40,767 | 10/7/2021 |
| 1.0.67 | 42,910 | 10/7/2021 |
| 1.0.66 | 5,500 | 10/7/2021 |
| 1.0.65 | 5,499 | 10/6/2021 |
| 1.0.64 | 5,367 | 9/28/2021 |
| 1.0.63 | 39,458 | 9/23/2021 |
| 1.0.62 | 7,080 | 9/10/2021 |
| 1.0.61 | 5,159 | 9/9/2021 |
| 1.0.60 | 5,185 | 9/8/2021 |
| 1.0.59 | 5,225 | 9/8/2021 |
| 1.0.58 | 36,548 | 9/6/2021 |
| 1.0.57 | 5,505 | 8/31/2021 |
| 1.0.56 | 5,319 | 8/30/2021 |
| 1.0.55 | 38,673 | 7/31/2021 |
| 1.0.54 | 65,783 | 7/30/2021 |
| 1.0.53 | 5,517 | 7/26/2021 |
| 1.0.52 | 95,562 | 7/5/2021 |
| 1.0.51 | 5,453 | 7/1/2021 |
| 1.0.50 | 68,285 | 6/4/2021 |
| 1.0.49 | 96,798 | 4/26/2021 |
| 1.0.48 | 36,752 | 4/19/2021 |
| 1.0.47 | 155,855 | 4/7/2021 |
| 1.0.46 | 36,090 | 4/3/2021 |
| 1.0.45 | 185,491 | 3/22/2021 |
| 1.0.44 | 118,416 | 3/4/2021 |
| 1.0.43 | 38,582 | 2/26/2021 |
| 1.0.42 | 174,567 | 2/2/2021 |
| 1.0.41 | 125,066 | 1/24/2021 |
| 1.0.40 | 5,454 | 1/23/2021 |
| 1.0.39 | 63,902 | 1/20/2021 |
| 1.0.38 | 5,356 | 1/20/2021 |
| 1.0.37 | 37,718 | 1/18/2021 |
| 1.0.36 | 33,311 | 1/16/2021 |
| 1.0.35 | 124,391 | 12/16/2020 |
| 1.0.34 | 61,318 | 12/14/2020 |
| 1.0.33 | 38,539 | 12/9/2020 |
| 1.0.32 | 8,101 | 12/6/2020 |
| 1.0.31 | 9,945 | 12/2/2020 |
| 1.0.30 | 34,576 | 12/1/2020 |
| 1.0.29 | 198,459 | 11/12/2020 |
| 1.0.29-atestpub | 2,631 | 11/11/2020 |
| 1.0.28 | 35,501 | 10/11/2020 |
| 1.0.27 | 118,259 | 9/9/2020 |
| 1.0.26 | 33,914 | 9/3/2020 |
| 1.0.25 | 34,409 | 8/20/2020 |
| 1.0.24 | 90,325 | 8/9/2020 |
| 1.0.23 | 34,818 | 7/28/2020 |
| 1.0.22 | 34,211 | 7/19/2020 |
| 1.0.21 | 61,192 | 7/6/2020 |
| 1.0.20 | 90,810 | 6/6/2020 |
| 1.0.19 | 35,498 | 6/4/2020 |
| 1.0.18 | 62,582 | 5/29/2020 |
| 1.0.17 | 62,692 | 5/21/2020 |
| 1.0.16 | 6,516 | 5/17/2020 |
| 1.0.15 | 61,241 | 5/12/2020 |
| 1.0.14 | 116,459 | 5/4/2020 |
| 1.0.13 | 10,532 | 4/24/2020 |
| 1.0.12 | 14,029 | 4/22/2020 |
| 1.0.11 | 6,807 | 4/22/2020 |
| 1.0.10 | 6,330 | 4/21/2020 |
| 1.0.9 | 36,113 | 4/18/2020 |
| 1.0.8 | 33,585 | 4/16/2020 |
| 1.0.7 | 6,297 | 4/16/2020 |
| 1.0.6 | 28,612 | 4/15/2020 |
| 1.0.5 | 31,586 | 4/11/2020 |
| 1.0.4 | 30,127 | 4/3/2020 |
| 1.0.3 | 5,626 | 4/1/2020 |
| 1.0.2 | 17,418 | 3/27/2020 |
| 1.0.1 | 16,467 | 3/22/2020 |
| 1.0.0 | 9,624 | 3/22/2020 |
Added StreamExtensions compatibility layer, cleaned up FileSystemExtensions from #if directives
Added FileSystemExtensions methods: AppendAllText, ReadAllBytes/WriteAllBytes async, ReadAllLines/WriteAllLines