summaryrefslogtreecommitdiff
path: root/ThirdParty/CsvHelper-master/src/CsvHelper.Website/input/change-log/index.md
diff options
context:
space:
mode:
Diffstat (limited to 'ThirdParty/CsvHelper-master/src/CsvHelper.Website/input/change-log/index.md')
-rw-r--r--ThirdParty/CsvHelper-master/src/CsvHelper.Website/input/change-log/index.md1862
1 files changed, 1862 insertions, 0 deletions
diff --git a/ThirdParty/CsvHelper-master/src/CsvHelper.Website/input/change-log/index.md b/ThirdParty/CsvHelper-master/src/CsvHelper.Website/input/change-log/index.md
new file mode 100644
index 0000000..bd6b576
--- /dev/null
+++ b/ThirdParty/CsvHelper-master/src/CsvHelper.Website/input/change-log/index.md
@@ -0,0 +1,1862 @@
+# Change Log
+
+### 30.0.1
+
+#### Bug Fixes
+
+- Fixed issue when writing with the escape char not being escaped if it was different than the quote char.
+- Fixed issue with `CsvWriter` not passing `leavOpen` parameter to other constructor call.
+- Fixed issue with TypeConverter being assigned to a member that has a Convert expression assigned to it.
+
+### 30.0.0
+
+#### Features
+
+- Added `Field` and `RawRecord` to `BadDataException`.
+- Pass `IWriterConfiguration` into `CsvWriter` constructor instead of `CsvConfiguration`.
+- Allow inherited header prefixes.
+- Allow mapping to dynamic properties.
+- Added `MemberName` to the type converter exception message.
+- Added `MaxFieldSize` configuration. If max size is set and the size is reached, `MaxFieldSizeException` is thrown.
+- Added class level attribute capability.
+ New Attributes:
+ - `BufferSizeAttribute`
+ - `CacheFieldsAttribute`
+ - `CommentAttribute`
+ - `CountBytesAttribute`
+ - `DelimiterAttribute`
+ - `DetectColumnCountChangesAttribute`
+ - `DetectDelimiterAttribute`
+ - `DetectDelimiterValueAttribute`
+ - `EncodingAttribute`
+ - `EscapeAttribute`
+ - `ExceptionMessagesContainRawDataAttribute`
+ - `HasHeaderRecordAttribute`
+ - `IgnoreBlankLinesAttribute`
+ - `IgnoreReferencesAttribute`
+ - `IncludePrivateMembersAttribute`
+ - `InjectionCharactersAttribute`
+ - `InjectionEscapeCharacterAttribute`
+ - `InjectionOptionsAttribute`
+ - `LineBreakInQuotedFieldIsBadDataAttribute`
+ - `MaxFieldSizeAttribute`
+ - `ModeAttribute`
+ - `NewLineAttribute`
+ - `ProcessFieldAttribute`
+ - `QuoteAttribute`
+ - `TrimOptionsAttribute`
+ - `UseNewObjectForNullReferenceMembersAttribute`
+ - `WhiteSpaceCharsAttribute`
+- Added `params object[] constructorArgs` to `TypeConverterAttribute`.
+- Added validation message expression to `Validate` mapping.
+- Added `IReaderRow` to `ValidateArgs`.
+- Relax `Default` and `Constant` type constraints to `IsAssignableFrom`.
+
+#### Bug Fixes
+
+- Added `null` check in `WriteRecords`.
+- Fixed interpolation in exception message.
+- Fixed constructor mapping issue where parameter has a type converter but would still try and use constructor mapping.
+
+#### Breaking Changes
+
+- Added `string field` and `string rawRecord` to `BadDataException` constructor.
+- Added `double MaxFieldSize { get; }` to `IParserConfiguration`.
+- Added `bool LeaveOpen { get; }` to `IWriterConfiguration`.
+- Added `bool LeaveOpen { get; }` to `IParserConfiguration`.
+- Added `IReaderRow row` to `ValidateArgs` constructor.
+
+### 29.0.0
+
+#### Features
+
+- Added support for `TypeConverter` factories. This allows for the ability to handle many types at once.
+Code that manually handle nullable, enums, and collections were changed into factories.
+- Moved delimiter detection into a configuration function.
+This allows for a user to easily change the detection logic.
+Default logic is in `ConfigurationFunction.GetDelimiter`.
+- Changed `CsvConfiguration.SanitizeInjection` flag to `CsvConfiguration.InjectionOptions` enum.
+ - Options are:
+ - None - Default. Does no injection protection. The is default because it's not a part of CSV and is used for an external tool.
+ - Escape - Escapes the field based on OWASP recommendations if an injection char is detected.
+ - Strip - Removes the injection character.
+ - Exception - Throws an exception if an injection char is detected.
+ - Added `\t` and `\r` to `CsvConfiguration.InjectionEscapeCharacter`.
+ - Changed `CsvConfiguration.InjectionEscapeCharacter` from `\t` to `'`.
+- `CsvDataReader.GetDataTypeName` will use types when the schema table is overridden.
+- More detail added to `CsvConfiguration.Validate` exception messages.
+- Reduce double dictionary lookup in a few places.
+
+#### Bug Fixes
+
+- Fixed issues with delimiter detection logic.
+- Missing `ConfigureAwait(false)` added to async calls.
+- Fixed issue with `CsvReader.TryGetField` throwing an exception when multiple headers are read.
+- Fixed issue with `MemberMap.Validate` passing the wrong type into the expression call.
+- Fixed issue with `MemberMap<T>.Convert` not working with `static` methods.
+- Fixed issue with `DateTimeConverter` and `DateTimeOffsetConverter` throwing an exception other than `TypeConverterException` on failure.
+- Fixed issue where `MissingFieldFound` was not being called if `IgnoreBlankLines` was off.
+
+#### Breaking Changes
+
+- `CsvConfiguration.SanitizeForInjection` -> `CsvConfiguration.InjectionOptions`
+- `bool IWriterConfiguration.SanitizeForInjection` -> `InjectionOptions IWriterConfiguration.InjectionOptions`
+- `CsvConfiguration.InjectionEscapeCharacter` changed from `\t` to `'`.
+- Added `\t` and `\r` to `CsvConfiguration.InjectionCharacters`.
+- Added `GetDelimiter IParserConfiguration.GetDelimiter` delegate.
+
+### 28.0.1
+
+#### Bug Fixes
+
+- Disabled nullable until all null issues are fixed.
+
+### 28.0.0
+
+#### Features
+
+- Updated delimiter detection algorithm.
+ - Strips escaped text based on mode.
+ - Only looks for delimiters that appear on every line.
+ - Uses `CultureInfo.TextInfo.ListSeparator` if it's on every line.
+- Cache processed fields in parser so they're not processed on every access.
+- Cache `CsvParser.Record[]` so multiple calls wont' regenerate it.
+- `ShouldSkipRecord` is `null` by default and won't get called if not set.
+- `ShouldSkipRecordArgs` holds `IReaderRow` now instead of `string[]`.
+- Changed `CsvParser` constructor to take in `IParserConfiguration` instead of `CsvConfiguration`.
+- Changed `CsvReader` constructor to take in `IReaderConfiguration` instead of `CsvConfiguration`.
+
+#### Bug Fixes
+
+- Fixed issue where collection types weren't getting the correct `MemberMapData` passed to them when converting the item.
+- Fixed issue where `BadDataFound` was being called multiple times for the same field.
+- Fixed issue where you can't read with no header when a name has been mapped.
+- Fixed issue where quoted fields not correctly being identified if there was a buffer swap on white space before quote.
+
+#### Breaking Changes
+
+- `ShouldSkipRecordArgs` holds `IReaderRow` now instead of `string[]`.
+- Removed `ConfigurationFunctions.ShouldSkipRecord` as the default is now `null`.
+- Added `IParserConfiguration.Validate`.
+
+### 27.2.1
+
+#### Bug Fixes
+
+- Changed dependencies to minimal needed version.
+
+### 27.2.0
+
+#### Features
+
+- Support for net60 `DateOnly` and `TimeOnly` types.
+
+### 27.1.1
+
+#### Bug Fixes
+
+- Fixed issue with delimiter detection in parser async read.
+
+### 27.1.0
+
+#### Features
+
+- Added IgnoreBaseAttribute to not look at the base class when auto mapping.
+
+### 27.0.4
+
+#### Bug Fixes
+
+- Changed delimiter detection to look line by line instead of the full buffer.
+
+### 27.0.3
+
+#### Bug Fixes
+
+- Specified exact dependency version matches.
+
+### 27.0.2
+
+#### Bug Fixes
+
+- Fixed issue with delimiter detection.
+
+### 27.0.1
+
+#### Bug Fixes
+
+- `\t` wasn't removed and just an exception was being thrown.
+
+### 27.0.0
+
+#### Features
+
+- Config option to auto detect delimiter. Off by default.
+- Added ability to apply a type converter to all registered types.
+- Added ability to apply type converter options to all registered types.
+- Added ability to pass an IAsyncEnumerable to WriteRecords.
+- Added option to use default value on conversion failure.
+
+#### Breaking Changes
+
+- Added `IParserConfiguration.DetectDelimiter`.
+- Added `IParserConfiguration.DetectDelimiterValues`.
+- Added `IWriter.WriteRecordsAsync<T>(IAsyncEnumerable<T> records, CancellationToken cancellationToken = default)`.
+- Removed `\t` from `CsvConfiguration.WhiteSpaceChars` as a default.
+
+### 26.1.0
+
+#### Features
+
+- Allow schema of destination table to be specified in CsvDataReader.
+
+### 26.0.1
+
+#### Bug Fixes
+
+- Fixed issue with constant not working when the field is missing.
+
+### 26.0.0
+
+#### Features
+
+- Added configuration for `ExceptionMessagesContainRawData` that defaults to true.
+
+#### Bug Fixes
+
+- Removed all `init` properties. These were causing people too many problems.
+- Fixed issue with exception message not containing the header record.
+
+#### Breaking Changes
+
+- Added `bool IParserConfiguration.ExceptionMessagesContainRawData { get; }`.
+- Added `bool IWriterConfiguration.ExceptionMessagesContainRawData { get; }`.
+- All delegate args objects have `init` removed and now have constructors with parameters.
+ - BadDataFound
+ - ConvertFromString
+ - GetConstructor
+ - GetDynamicPropertyName
+ - HeaderValidated
+ - MissingFieldFound
+ - PrepareHeaderForMatch
+ - ReadingExceptionOccurred
+ - ReferenceHeaderPrefix
+ - ShouldQuote
+ - ShouldSkipRecord
+ - ShouldUseConstructorParameter
+ - Validate
+
+### 25.0.0
+
+#### Bug Fixes
+
+- Fixed stack overflow issue with accessing Parser[int] or Parser.Record in BaddataFound callback. Throws an exception explaining issue now.
+
+#### Breaking Changes
+
+- All delegate args had their non-parameterless constructor removed in favor of using `init`.
+
+### 24.0.1
+
+#### Bug Fixes
+
+- Fixed issue with Trimming all white space.
+
+### 24.0.0
+
+#### Features
+
+- Added `CancellationToken` to reading and writing async methods.
+
+#### Bug Fixes
+
+- Fixed issue with `ShouldQuote` not having the correct field type when writing records instead of fields.
+- Fixed issue with `CharCount` and `ByteCount` when trimming.
+
+#### Breaking Changes
+
+- `void IWriterRow.WriteConvertedField(string field)` -> `void IWriterRow.WriteConvertedField(string field, Type fieldType)`
+- `void CsvWriter.WriteConvertedField(string field)` -> `void CsvWriter.WriteConvertedField(string field, Type fieldType)`
+
+### 23.0.0
+
+#### Features
+
+- Changed public `init` properties to `set`. Once VB.NET implements `init`, it can change back.
+- Made method `CsvWriter.WriteBuffer` protected so sub classes can write fields.
+- `CsvWriter.Flush` and `CsvWriter.FlushAsync` will now flush the underlying `TextWriter`.
+- Changed all `delegate` methods to accept an args `struct` instead of parameters. This makes it easier to understand what parameters are passed in, and allows for additional parameters to be added later without a breaking change.
+
+#### Breaking Changes
+
+- Removed the large `CsvConfiguration` constructor. The properties are now settable, so this isn't needed for VB.NET.
+- All delegates now take in a single struct argument.
+ - BadDataFound
+ - ConvertFromString
+ - GetConstructor
+ - GetDynamicPropertyName
+ - HeaderValidated
+ - MissingFieldFound
+ - PrepareHeaderForMatch
+ - ReadingExceptionOccurred
+ - ReferenceHeaderPrefix
+ - ShouldQuote
+ - ShouldSkipRecord
+ - ShouldUseConstructorParameter
+ - Validate
+
+### 22.1.2
+
+#### Bug Fixes
+
+- Fixed issue with data corruption when parser buffer ran out in middle of escape and quote.
+
+### 22.1.1
+
+#### Bug Fixes
+
+- Fixed issue where CsvConfiguration.NewLine was being set when value is null in constructor causing IsNewLine to be true.
+
+### 22.1.0
+
+#### Features
+
+- Added `[EnumIgnoreAttribute]`.
+
+### Bug Fixes
+
+- Fixed issue with `EnumIgnoreCase` value not making it to the converter when reading.
+
+### 22.0.0
+
+#### Features
+
+- Changed `ParserMode` to `CsvMode` and added the modes to `CsvWriter`.
+- Added `Type fieldType` parameter to `ShouldQuote` delegate.
+- Added `TypeConverterOptions.EnumIgnoreCase` (default is false). Allows `EnumConverter` to ignore case when matching enum names, values, or `NameAttribute`.
+
+#### Bug Fixes
+
+- Fixed issue with `EnumConverter` when duplicate names or values appeared in an Enum.
+
+#### Breaking Changes
+
+- `ParserMode` -> `CsvMode`
+- Added `IParserConfiguration.ProcessFieldBufferSize`.
+- Added `IWriterConfiguration.Mode`.
+- `ShouldQuote(string, IWriterRow)` -> `ShouldQuote(string, Type, IWriterRow)`.
+- `EnumConverter` was changed to case sensitive by default.
+
+### 21.3.1
+
+#### Bug Fixes
+
+- Fixed issue with CsvContext not being passed into AutoMap.
+
+### 21.3.0
+
+#### Features
+
+- Added back Excel compatibility for bad data fallback.
+ 1. If a field doesn't start with a `Quote`, read until a `Delimiter` or `NewLine` is found.
+ 1. If in quoted field and a `Quote` is found that isn't preceded by an `Escape`, read until a `Delimiter or `NewLine` is found.
+ 1. `TrimOptions.Trim` will be applied before these rules.
+
+### 21.2.1
+
+#### Bug Fixes
+
+- Fixed issue with processed field buffer not being large enough on resize.
+
+### 21.2.0
+
+#### Features
+
+- Process boolean and null type converter options when writing.
+
+### 21.1.2
+
+#### Bug Fixes
+
+- Fixed parsing issue with state not being reset when buffer is filled in the middle of a state.
+
+### 21.1.1
+
+#### Bug Fixes
+
+- Fixed parsing issue with buffer ending in the middle of a line ending.
+
+### 21.1.0
+
+#### Features
+
+- Added ParserMode.NoEscape. This will ignore quotes and escape characters.
+
+### 21.0.6
+
+#### Bug Fixes
+
+- Fixed issue with writing a field that is larger then 2x the buffer size.
+
+### 21.0.5
+
+#### Bug Fixes
+
+- Fixed issue with VB not being able to set `init` properties on CsvConfiguration by adding a constructor that takes in all properties as optional named arguments.
+
+### 21.0.4
+
+#### Bug Fixes
+
+- Fixed issue with cache miss in on both the reader and writer.
+
+### 21.0.3
+
+No changes.
+
+### 21.0.2
+
+#### Bug Fixes
+
+- Fixed issue with `CsvConfiguration.NewLine` not defaulting to '\r\n'.
+
+### 21.0.1
+
+#### Big Fixes
+
+- Fixed issue with `CsvWriter` not keeping track of `Row` and `Index`.
+
+### 21.0.0
+
+#### Features
+
+- `CsvConfiguration.NewLine` changed to a `string`. You can now read and write any string you like for a line ending. This defaults to `Environment.NewLine`. When reading, if the value is not explicitly set `\r\n`, `\r`, or `\n` will still be used.
+
+#### Bug Fixes
+
+- Fixed issue with other platforms than net50 using `init`.
+- Fixed issue with being unable to write \r\n in an environment that does use that for `Environment.NewLine`.
+
+#### Breaking Changes
+
+- `char? CsvConfiguration.NewLine` changed to `string CsvConfiguration.NewLine`.
+
+### 20.0.0
+
+#### Features
+
+- Parser performance.
+- Writer performance.
+- Changed CsvConfiguration to a read only `record` to eliminate threading issues.
+- Unix parsing mode. Uses escape character instead of field quoting. Configurable `NewLine`.
+- Field caching. Disabled by default. When enabled, this will cache all fields created so duplicate fields won't need to create a new string from a character array.
+
+#### Breaking Changes
+
+- Removed `Caches` enum.
+- `ReadingContext` and `WritingContext` were merged into a single `CsvContext`. Anywhere that used either was changed to `CsvContext`.
+- All `Func`s and `Action`s now have their own `delegate`.
+- `ConvertUsing` renamed to `Convert`.
+- `ShouldQuote` now takes in `IWriterRow` instead of `CsvContext`.
+- `CsvConfiguration` changed from a `class` to a `record`.
+- All `CsvConfiguration` properties changed to read only `get; init;`.
+- `CsvConfiguration.NewLine` changed to `char?`.
+- `CsvConfiguration.NewLineString` removed.
+- `CsvConfiguration.RegisterClassMap` moved to `CsvContext`.
+- `CsvConfiguration.UnregisterClassMap` moved to `CsvContext`.
+- `CsvConfiguration.AutoMap` moved to `CsvContext`.
+- All `IParserConfiguration` setters removed.
+- `bool IParserConfiguration.CacheFields` added.
+- `bool IParserConfiguration.LeaveOpen` added.
+- `char? IParserConfiguration.NewLine` added.
+- `ParserMode IParserConfiguration.Mode` added.
+- `IParserConfiguration.IgnoreQuotes` removed.
+- `char[] IParserConfiguration.WhiteSpaceChars` added.
+- All `IReaderConfiguration` setters removed.
+- `IReaderConfiguration.TypeConverterOptionsCache` removed.
+- `IReaderConfiguration.TypeConverterCache` removed.
+- `IReaderConfiguration.Maps` removed.
+- `IReaderConfiguration.RegisterClassMap` removed.
+- `IReaderConfiguration.UnregisterClassMap` removed.
+- `IReaderConfiguration.AutoMap` removed.
+- `ISerializerConfiguration` removed and properties added to `IWriterConfiguration`.
+- All `IWriterConfiguration` setters removed.
+- `IWriterConfiguration.QuoteString` removed.
+- `IWriterConfiguration.TypeConverterCache` removed.
+- `IWriterConfiguration.MemberTypes` removed.
+- `IWriterConfiguration.Maps` removed.
+- `IWriterConfiguration.RegisterClassMap` removed.
+- `IWriterConfiguration.UnregisterClassMap` removed.
+- `IWriterConfiguration.AutoMap` removed.
+- `MemberMap.Optional` added.
+- `MemberMap<TClass, TMember>.ConvertUsing` renamed to `Convert`.
+- `CsvFieldReader` removed.
+- `CsvParser.Read` returns `boolean` instead of `string[]`.
+- `CsvParser` constructors that take in a `FieldReader` removed.
+- `CsvParser[int index]` added to retrieve fields after a `Read`.
+- `CsvSerializer` removed.
+- `IFieldReader` removed.
+- `IParser.ByteCount` added.
+- `IParser.CharCount` added.
+- `IParser.Count` added.
+- `IParser[int index]` added.
+- `IParser.Record` added.
+- `IParser.RawRecord` added.
+- `IParser.Row` added.
+- `IParser.RawRow` added.
+- `IParser.Read` returns `bool` instead of `string[]`.
+- `IParser.ReadAsync` returns `bool` instead of `string[]`.
+- `IReader.Parser` removed.
+- `int IReaderRow.ColumnCount` added.
+- `int IReaderRow.CurrentIndex` added.
+- `string[] IReaderRow.HeaderRecord` added.
+- `IParser IReaderRow.Parser` added.
+- `ISerializer` removed.
+- `string[] IWriterRow.HeaderRecord` added.
+- `int IWriterRow.Row` added.
+- `int IWriterRow.Index` added.
+- `RecordBuilder` removed.
+
+### 19.0.0
+
+#### Features
+
+- Added the rest of the mapping and attributes configuration for constructor parameters.
+- Reading speed improvement.
+
+#### Breaking Changes
+
+- Added `IParameterMapper` to `BooleanFalseValuesAttribute`, `BooleanTrueValuesAttribute`, `ConstantAttribute`, `CultureInfoAttribute`, `DateTimeStylesAttribute`, `DefaultAttribute`, `FormatAttribute`, `HeaderPrefixAttribute`, `IgnoreAttribute`, `NameIndexAttribute`, `NullValuesAttribute`, `NumberStylesAttribute`, `OptionalAttribute`, and `TypeConverterAttribute`.
+- Renamed `MapTypeConverterOption` to `MemberMapTypeConverterOptions`.
+- Renamed `TypeConverterOptions.NumberStyle` to `TypeConverterOptions.NumberStyles`.
+- Removed `ReflectionHelper.CreateInstance<T>`.
+- Removed `ReflectionHelper.CreateInstance`.
+- Removed `ReflectionHelper.CreateInstanceWithoutContractResolver`.
+
+### 18.0.0
+
+#### Features
+
+- Added parameter mapping via class map or attributes.
+
+#### Breaking Changes
+
+- `NameAttribute` added interface `IParameterMapper`.
+- `IndexAttribute` added interface `IParameterMapper`.
+
+### 17.0.1
+
+#### Bug Fixes
+
+- Fixed issue where EnumConverter wasn't working if enum value wasn't an Int32.
+
+### 17.0.0
+
+#### Features
+
+- ValidateHeader will validate all members before calling HeaderValidated.
+
+#### Breaking Changes
+
+- `Action<bool, string[], int, ReadingContext> IReaderConfiguration.HeaderValidated` -> `Action<InvalidHeader[], ReadingContext> IReaderConfiguration.HeaderValidated`
+- `Action<bool, string[], int, ReadingContext> CsvConfiguration.HeaderValidated` -> `Action<InvalidHeader[], ReadingContext> CsvConfiguration.HeaderValidated`
+- `ConfigurationFunctions.HeaderValidated` signature changed from `(bool isValid, string[] headerNames, int headerNameIndex, ReadingContext context)` to `(InvalidHeader[] invalidHeaders, ReadingContext context)`
+- `CsvReader.ValidateHeader(ClassMap map)` -> `CsvReader.ValidateHeader(ClassMap map, List<InvalidHeader> invalidHeaders)`
+- Removed `HeaderValidationException.HeaderNames`.
+- Removed `HeaderValidationException.HeaderNameIndex`.
+- Added `InvalidHeader[] HeaderValidationException.InvalidHeaders`.
+
+### 16.2.0
+
+#### Features
+
+- Added ability to put `[Name]` attribute on enum values.
+- Added ability to register a converter for `Enum` that will be a default for all enum types.
+
+### 16.1.0
+
+#### Features
+
+- GetRecords throws `ObjectDisposedException` when `CsvReader` is disposed. A message hint was added to help the user understand what went wrong.
+
+### 16.0.0
+
+#### Features
+
+- Ability to have duplicate header names when using dynamic records.
+
+#### Breaking Changes
+
+- Added `Func<ReadingContext, int, string> IReaderConfiguration.GetDynamicPropertyName`.
+- Added `Func<ReadingContext, int, string> CsvConfiguration.GetDynamicPropertyName`.
+
+### 15.0.10
+
+- Fixed `IgnoreAttribute` to ignore the whole property treey if put on a reference property when auto mapped.
+
+### 15.0.9
+
+#### Bug Fixes
+
+- Fixed issue where `CsvDataReader.FieldCount` was throwing an exception if there were no records.
+
+### 15.0.8
+
+#### Bug Fixes
+
+- Fixed `CsvDataReader.GetOrdinal` issue where it wasn't doing a case-insensitive match after a failed case-sensitive match. Run values through `PrepareHeaderForMatch`.
+
+### 15.0.7
+
+#### Bug Fixes
+
+- Fixed issue where writing `null` to `WriteField` didn't output a field.
+
+### 15.0.6
+
+#### Bug Fixes
+
+- Fixed test not building.
+
+### 15.0.5
+
+#### Bug Fixes
+
+- Fixed issue with multiple character delimiter not working when the first char of the delimiter precedes the actual delimiter.
+
+### 15.0.4
+
+#### Bug Fixes
+
+- Fixed issue with `ReflectionHelper` caching not always unique.
+
+### 15.0.3
+
+#### Bug Fixes
+
+- Updated default number styles for `DecimalConverter` and `DoubleConverter` to match MS's recommendations.
+
+### 15.0.2
+
+#### Bug Fixes
+
+- Fixed issue with `DataReader.GetValues` not working when column and rows have different count.
+
+### 15.0.1
+
+### Bug Fixes
+
+- Downgraded `System.Threading.Tasks.Extensions` to 4.5.2 due to loading error of `Microsoft.Bcl.AsyncInterfaces`.
+
+### 15.0.0
+
+#### Features
+
+- Ignore attribute on a reference will ignore all properties on that reference.
+
+#### Breaking Changes
+
+- Added `IMemberReferenceMapper` to `IgnoreAttribute`.
+
+### 14.0.0
+
+#### Features
+
+- Added `IAsyncDispose` on writing classes.
+
+#### Breaking Changes
+
+- Added dependency `<PackageReference Include="System.Threading.Tasks.Extensions" Version="4.5.3" />` to `net45`.
+- Added dependency `<PackageReference Include="System.Threading.Tasks.Extensions" Version="4.5.3" />` to `net47`.
+- Added dependency `<PackageReference Include="System.Threading.Tasks.Extensions" Version="4.5.3" />` to `netstandard2.0`.
+- `IWriter` added interface `IAsyncDisposable` for `net47` and `netstandard2.1`.
+- `ISerializer` added interface `IAsyncDisposable` for `net47` and `netstandard2.1`.
+- `WritingContext` added interface `IAsyncDisposable` for `net47` and `netstandard2.1`.
+- `CsvWriter` added methods `public async ValueTask DisposeAsync()` and `protected virtual async ValueTask DisposeAsync(bool disposing)` for `net47` and `netstandard`.
+- `CsvSerializer` added methods `public async ValueTask DisposeAsync()` and `protected virtual async ValueTask DisposeAsync(bool disposing)` for `net47` and `netstandard`.
+- `WritingContext` added methods `public async ValueTask DisposeAsync()` and `protected virtual async ValueTask DisposeAsync(bool disposing)` for `net47` and `netstandard`.
+
+### 13.0.0
+
+#### Features
+
+- Added `netstandard2.1` build.
+- Added required CultureInfo parameter to any class that uses CultureInfo.
+- Apply member attributes using interface instead of hard coding.
+- Added customizable new line when writing. You can choose from `CRLF`, `CR`, `LF`, or `Environment.NewLine`.
+- Renamed `Configuration` to `CsvConfiguration` to avoid namespace conflicts.
+- Added `GetRecordsAsync` and `WriteRecordsAsync`.
+
+#### Breaking Changes
+
+- Removed dependency `<PackageReference Include="System.Reflection.TypeExtensions" Version="4.4.0" />` from `netstandard2.0`.
+- Removed dependency `<PackageReference Include="System.Reflection.TypeExtensions" Version="4.4.0" />` from `netstandard2.1`.
+- Added dependency `<PackageReference Include="Microsoft.Bcl.AsyncInterfaces" Version="1.1.0" />` to `net47`.
+- Added dependency `<PackageReference Include="Microsoft.Bcl.AsyncInterfaces" Version="1.1.0" />` to `netstandard2.0`.
+- `ClassMap.AutoMap()` -> `ClassMap.AutoMap(CultureInfo)`
+- `CsvParser.CsvParser(TextReader)` -> `CsvParser.CsvParser(TextReader, CultureInfo)`
+- `CsvParser.CsvParser(TextReader, bool)` -> `CsvParser.CsvParser(TextReader, CultureInfo, bool)`
+- `CsvReader.CsvReader(TextReader)` -> `CsvReader.CsvReader(TextReader, CultureInfo)`
+- `CsvReader.CsvReader(TextReader, bool)` -> `CsvReader.CsvReader(TextReader, CultureInfo, bool)`
+- `CsvSerializer.CsvSerializer(TextWriter)` -> `CsvSerializer.CsvSerializer(TextWriter, CultureInfo)`
+- `CsvSerializer.CsvSerializer(TextWriter, bool)` -> `CsvSerializer.CsvSerializer(TextWriter, CultureInfo, bool)`
+- `CsvWriter.CsvWriter(TextWriter)` -> `CsvWriter.CsvWriter(TextWriter, CultureInfo)`
+- `CsvWriter.CsvWriter(TextWriter, bool)` -> `CsvWriter.CsvWriter(TextWriter, CultureInfo, bool)`
+- `Factory.CreateParser(TextReader)` -> `Factory.CreateParser(TextReader, CultureInfo)`
+- `Factory.CreateReader(TextReader)` -> `Factory.CreateReader(TextReader, CultureInfo)`
+- `Factory.CreateWriter(TextWriter)` -> `Factory.CreateWriter(TextWriter, CultureInfo)`
+- `IFactory.CreateParser(TextReader)` -> `IFactory.CreateParser(TextReader, CultureInfo)`
+- `IFactory.CreateReader(TextReader)` -> `IFactory.CreateReader(TextReader, CultureInfo)`
+- `IFactory.CreateWriter(TextWriter)` -> `IFactory.CreateWriter(TextWriter, CultureInfo)`
+- Added `ISerializerConfiguration.NewLine`.
+- Added `ISerializerConfiguration.NewLineString`.
+- Added `Configuration.NewLine`.
+- Added `Configuration.NewLineString`.
+- Removed `Configuration.Configuration()` parameterless constructor.
+- Attributes now require the use of `IMemberMapper` or `IMemberReferenceMapper` to be loaded. All existing attributes added these and implemented the interface.
+- Renamed `Configuration` to `CsvConfiguration`.
+- Added `IAsyncEnumerable<T> CsvReader.GetRecordsAsync<T>()`
+- Added `IAsyncEnumerable<T> CsvReader.GetRecordsAsync<T>(T anonymousTypeDefinition)`
+- Added `IAsyncEnumerable<object> CsvReader.GetRecordsAsync(Type type)`
+- Added `IAsyncEnumerable<T> CsvReader.EnumerateRecordsAsync<T>(T record)`
+- Added `Task CsvWriter.WriteRecordsAsync(IEnumerable records)`
+- Added `Task CsvWriter.WriteRecordsAsync<T>(IEnumerable<T> records)`
+- Added `IAsyncEnumerable<T> IReader.GetRecordsAsync<T>()`
+- Added `IAsyncEnumerable<T> IReader.GetRecordsAsync<T>(T anonymousTypeDefinition)`
+- Added `IAsyncEnumerable<object> IReader.GetRecordsAsync(Type type)`
+- Added `IAsyncEnumerable<T> IReader.EnumerateRecordsAsync<T>(T record)`
+- Added `Task IWriter.WriteRecordsAsync(IEnumerable records)`
+- Added `Task IWriter.WriteRecordsAsync<T>(IEnumerable<T> records)`
+
+### 12.3.2
+
+#### Bug Fixes
+
+- Changed double and single converters to only test for format "R" if the user hasn't supplied a format.
+
+### 12.3.1
+
+#### Bug Fixes
+
+- Fix for bug in .NET Framework that causes a StackOverflowException. This needs to be changed back eventually.
+
+### 12.3.0
+
+#### Features
+
+- Added UriConverter.
+
+### 12.2.3
+
+#### Big Fixes
+
+- Changed round trip default format to test if "R" works and use backup of "G9" for float and "G17" for double.
+
+### 12.2.2
+
+#### Bug Fixes
+
+- Fixed issue where multiple properties with the same name were used when a child class property hides a parent class property using the new modifier.
+- Fixed issue where a null reference exception was thrown when writing and all properties are ignored.
+
+### 12.2.1
+
+#### Bug Fixes
+
+- Fixed issue where an "Index out of bounds of the array" exception was happening on TryGetField of type DateTime.
+- Fix `RawRecord` adding spaces if `TrimOptions.Trim` is used.
+
+### 12.2.0
+
+#### Features
+
+- Allow default value when using optional members.
+- Added BigIntConverter.
+- Mapping to member with type `Type` will throw exception by default.
+
+#### Bug Fixes
+
+- Made SingleConverter and DoubleConverter round-trip-able.
+
+### 12.1.3
+
+#### Bug Fixes
+
+- Always write \r\n line endings to be compliant with RFC 4180.
+
+### 12.1.2
+
+#### Bug Fixes
+
+- Fixed issue where CsvDataReader would skip the first row when there is no header record.
+- Fixed CsvDataReader issue where null values weren't being represented as DBNull.Value on GetValue and GetValues methods.
+- Fixed issue with IsDBNull method where an empty string was considered a null.
+
+### 12.1.1
+
+#### Bug Fixes
+
+- Fixed issue where `CsvReader.ReadAsync` wasn't behaving the same as `CsvReader.Read`.
+
+### 12.1.0
+
+#### Features
+
+- Added constructor to `Configuration` to pass in the `CultureInfo`. When passing a culture in, the `Delimiter` will be set to `CultureInfo.TextInfo.ListSeparator`.
+
+### 12.0.1
+
+#### Bug Fixes
+
+- Fixed issue where writing a dynamic object would still sort the header when no sort was specified.
+
+### 12.0.0
+
+#### Features
+
+- Added config option for sorting dynamic object properties when writing. Defaults to property value set order.
+
+#### Breaking Changes
+
+- Added `IComparer<string> IWriterConfiguration.DynamicPropertySort`.
+- Added `IComparer<string> Configuration.DynamicPropertySort`.
+
+### 11.0.1
+
+#### Bug Fixes
+
+- Fixed issue with leaveOpen not being used in the context's dispose.
+
+### 11.0.0
+
+#### Features
+
+- Removed config options `QuoteAllFields`, `QuoteNoFields`, `QuoteRequiredChars`, and `BuildREquiredQuoteChars` in favor of `ShouldQuote` function.
+
+#### Breaking Changes
+
+- Removed `IWriterConfiguration.QuoteAllFields`.
+- Removed `IWriterConfiguration.QuoteNoFields`.
+- Removed `IWriterConfiguration.QuoteRequiredChars`.
+- Removed `IWriterConfiguration.BuildRequiredQuoteChars`.
+- Removed `Configuration.QuoteAllFields`.
+- Removed `Configuration.QuoteNoFields`.
+- Removed `Configuration.QuoteRequiredChars`.
+- Removed `Configuration.BuildRequiredQuoteChars`.
+- Added `Func<string, WritingContext, bool> IWriterConfiguration.ShouldQuote`.
+- Added `Func<string, WritingContext, bool> Configuration.ShouldQuote`.
+
+### 10.0.0
+
+#### Features
+
+- Added a more friendly header validation message.
+- Separated header and field validation exceptions.
+- Added data properties to validation classes.
+- Changed Configuration.ReadingExceptionOccurred to not throw an exception and return a boolean whether it should throw an exception. The caller will throw if true.
+- Changed `NamedIndexCache` type from `Tuple<string, int>` to `(string, int)`.
+- Config option to consider a line break in a quoted field as bad data.
+- Changed delimiter default value from ',' to CultureInfo.CurrentCulture.TextInfo.ListSeparator.
+- PrepareHeaderForMatch now passes in the header name and index.
+- Dynamic records will now have null properties for missing fields.
+- Write ExpandoObject and IDynamicMetaObjectProvider object properties in ascending order to ensure order of property creation doesn't matter.
+- Added escape character configuration.
+- Added IDataReader implementation. This allows for easily loading a DataTable.
+
+### Breaking Changes
+
+- `ValidationException` is now `abstract`.
+- `IReaderConfiguration.ReadingExceptionOccurred` type changed from `Action<CsvHelperException>` to `Func<CsvHelperException, bool>`.
+- `Configuration.ReadingExceptionOccurred` type changed from `Action<CsvHelperException>` to `Func<CsvHelperException, bool>`.
+- Changed `NamedIndexCache` type from `Tuple<string, int>` to `(string, int)`. This adds a dependency to `System.ValueTuple` on .NET 4.5.
+- Added `bool IParserConfiguration.LineBreakInQuotedFieldIsBadData`.
+- Added `bool Configuration.LineBreakInQuotedFieldIsBadData`.
+- Changed `IReaderConfiguration.PrepareHeaderForMatch` type from `Func<string, string>` to `Func<string, int, string>`.
+- Changed `Configuration.PrepareHeaderForMatch` type from `Func<string, string>` to `Func<string, int, string>`.
+- Added `char ISerializerConfiguration.Escape`.
+- Added `char IParserConfiguration.Escape`.
+- Added `char Configuration.Escape`.
+
+### 9.2.3
+
+#### Bug Fixes
+
+- Fixed issue where TrimOptions.InsideQuotes would fail when there were escaped quotes in the field.
+
+### 9.2.2
+
+#### Bug Fixes
+
+- Fixed issue where NamedIndexes wasn't being reset on ReadHeader call.
+
+### 9.2.1
+
+#### Bug Fixes
+
+- Fixed issue where a TypeConverterAttribute isn't being used when on a reference.
+
+### 9.2.0
+
+#### Features
+
+- More clear exception messages when reading and a missing field is found.
+
+### 9.1.0
+
+#### Features
+
+- Allow parameterless constructor on classes and reference property classes when auto mapping.
+
+### 9.0.2
+
+#### Bug Fixes
+
+- Fixed issue where `WriteAsync` wasn't calling `SanitizeForInjection`.
+
+### 9.0.1
+
+#### Bug Fixes
+
+- Fixed issue where `leaveOpen` parameter in `CsvParser` constructor was hard coded.
+- Fixed issue where header validation was being ran on properties that only had an index mapped.
+
+### 9.0.0
+
+This release contains changes from 8.3.0 and 8.2.0.
+
+### 8.3.0
+
+This has been unlisted in nuget because of a breaking change before it. The changes are in 9.0.0.
+
+#### Features
+
+- Removed restriction that was disallowing the null char '\0' to be used as a delimiter.
+
+### 8.2.0
+
+This has been unlisted in nuget because of a breaking change. The changes are in 9.0.0.
+
+#### Features
+
+- Added Optional config to factory builder.
+- Added `OptionalAttribute`.
+
+#### Breaking Changes
+
+- Added `IHasMapOptions : IHasOptional`.
+- Added `MemberMapBuilder : IHasOptional`.
+- Added `MemberMapBuilder : IHasOptionalOptions`.
+
+### 8.1.1
+
+#### Features
+
+- Configuration functions are available on a static class `ConfigurationFunctions`.
+
+#### Bug Fixes
+
+- Fixed issue where `IgnoreBlankLines` wasn't being checked in `GetField<T>(int index, ITypeConverter converter)`.
+
+### 8.1.0
+
+#### Features
+
+- Added `IsOptional` mapping option.
+
+### 8.0.0
+
+#### Features
+
+- Added Unity build.
+- Added `IsOptional` mapping option.
+
+#### Bug Fixes
+
+- Added missing interface methods to configs.
+- Fixed issue with parsing when only CR is used and fields are quoted.
+- Fixed issue where `GetField` was calling the `ObjectResolver`.
+- Made the contexts not serializable in exceptions.
+- Fixed issue with `ObjectResolver` fallback causing a `StackOverflowException`.
+
+#### Breaking Changes
+
+- Added `IReaderConfiguration.IgnoreReferences`.
+- Added `IWriterConfiguration.IgnoreReferences`.
+
+### 7.1.1
+
+#### Bug Fixes
+
+- Added constructor to `CsvWriter` that allows for `leaveOpen` to be set.
+- Made `CsvWriter.Dispos`e able to be called multiple times.
+- Added `ConfigureAwait(false)` to all async calls.
+
+### 7.1.0
+
+#### Features
+
+- Changed record object creation to use the `ObjectResolver`.
+
+### 7.0.1
+
+#### Bug Fixes
+
+- Allow private constructors to be used to instantiate new class instances.
+
+### 7.0.0
+
+#### Features
+
+- Reading performance improvements.
+
+#### Breaking Changes
+
+- Removed `IReadingContext` and `IWritingContext` interfaces. `ReadingContext` and `WritingContext` are used directly now.
+
+### 6.1.1
+
+#### Bug Fixes
+
+- Fixed issue with circular references when auto mapping.
+
+### 6.1.0
+
+#### Features
+
+- Dynamic now uses `Configuration.PrepareHeaderForMatch` on header name to get property name for dynamic object.
+
+### 6.0.3
+
+#### Bug Fixes
+
+- Fixed issue with LINQPad not working properly due to types from differently assemblies being cached in the writer.
+
+#### Breaking Changes
+
+- `IWritingContext.TypeActions` signature changed.
+
+### 6.0.2
+
+#### Bug Fixes
+
+- Fixed issue with LINQPad not working properly due to types from differently assemblies being cached.
+
+### 6.0.0
+
+#### Features
+
+- Use `ObjectResolver` to create internal classes `RecordManager`, `ExpressionManager`, `RecordCreatorFactory`, and `RecordHydrator`, `RecordWriterFactory`.
+- Added generic resolve method to object resolver.
+- Added mapping methods to MemberMap for use during runtime mapping.
+- Added more info and properties to TypeConverterException.
+
+#### Bug Fixes
+
+- Fixed issue where mapping an interface doesn't get used when writing.
+
+#### Breaking Changes
+
+- Added `IObjectResolver.Resolve<T>( params object[] constructorArgs )` method.
+- Added `IWriter.WriteRecords<T>( IEnumerable<T> records )` method.
+- `TypeConverterException` constructors signatures changed.
+
+### 5.0.0
+
+#### Features
+
+- Added `Map<TClass>.References( expression )` back in.
+
+#### Bug Fixes
+
+- Fixed `DefaultTypeConverterException` message. The generated message wasn't being used.
+
+### 4.0.3
+
+#### Bug Fixes
+
+- Added `ReadingExceptionOccurred` callback to `GetRecord` methods when an exception occurs.
+
+### 4.0.2
+
+#### Bug Fixes
+
+- Fixed issue with parsing when buffer spans over a field.
+
+### 4.0.1
+
+#### Bug Fixes
+
+- Fixed issue where trimming inside quotes would fail when the character after a space was a delimiter, \r, or \n.
+
+### 4.0.0
+
+#### Breaking Changes
+
+- Added setter to `ISerializerConfiguration.Quote`.
+- Removed `ClassMap<TClass>.References( expression, constructorArs )`. Use sub property mapping instead.
+- Removed `ClassMap<TClass>.ConstructUsing( expression ). Use the `ObjectResolver` instead.
+- Change how reference header prefixing works.
+ - Changed `Configuration`/`IReaderConfiguration`/`IWriterConfiguration` `bool PrefixReferenceHeaders` to `Func<Type, string, string> ReferenceHeaderPrefix`. The function takes in the member type and member name and returns the prefix.
+ - Removed `MemberReferenceMap.Prefix()` method.
+ - Removed `ParameterReferenceMap.Prefix()` method.
+- Changed `Configuration`/`IReaderConfiguration`/`IWriterConfiguration` `ClassMap AutoMap<T>()` to `ClassMap<T> AutoMap<T>()`
+- Changed `TypeConverterException` constructors parameter from `ReadingContext` to `IReadingContext`.
+
+### 3.4.0
+
+#### Bug Fixes
+
+- Fixed issue when a map was created through auto mapping, you couldn't use sub property mapping to update a member.
+
+### 3.3.0
+
+#### Features
+
+- Added more information to the `DefaultTypeConverter.ConvertFromString` not convertible exception.
+- Reduced the number of `PrepareHeaderForMatch` calls.
+
+### 3.2.0
+
+#### Features
+
+- Attribute mapping. It's back...
+
+### 3.1.1
+
+#### Bug Fixes
+
+- Fixed issue where you weren't able to write `IEnumerable`.
+
+### 3.1.0
+
+#### Features
+
+- Allow multiple headers to be written.
+
+#### Bug Fixes
+
+- Flush `CsvWriter` on `Dispose`.
+- Made `ShouldSkipRecord` not called if the parser returns `null` for an end of stream.
+- `ShouldUseConstructorParameters` returns `false` if there are no constructors.
+- Header validation doesn't validate members where `ConvertUsing` or `Constant` are used.
+
+### 3.0.0
+
+#### Features
+
+- netstandard2.0
+- Massive speed improvements to the `CsvParser`.
+- Speed improvements to `CsvSerializer`.
+- Map child properties so multiple mapping classes aren't needed.
+- `ConvertUsing` implementation for writing.
+- Read/write `IEnumerable` properties.
+- Field mapping.
+- Async reading/writing.
+- Added `ClassMapBuilder` to build maps on the fly without a mapping class.
+- Write `IDynamicMetaObjectProvider` objects. `DynamicObject` and `ExpandoObject` are the 2 most common.
+- Allow `null` fields to be written.
+- `IDictionary` type converters.
+- Added trim options to trim in parser and removed trim from reader.
+- Header validation.
+- Field validation.
+- Added `leaveOpen` flag to constructors to not dispose of underlying `TextReader` and `TextWriter`.
+- Added properties to `CsvHelperException` and removed the string data.
+- Speed up mappings that use `ConvertUsing` by caching the named indexes.
+- Write comments.
+- Map constants.
+- Write fields that aren't mapped.
+- Specify values that resolve to `null` when reading.
+- Added CsvProperMap<T> to allow for compile time type checking on mappings.
+- Read more than 1 header row.
+- Changed reading exception callback to send a CsvHelperException.
+- Map the same property more than once.
+- Exposed the underlying TextReader as a property.
+- Removed header matching manipulation configuration `IsHeaderCaseSensitive`, `IgnoreHeaderWhiteSpace`, and `TrimHeaders` and added a config for `PrepareHeaderForMatch` that is a function. Both the header field name and the property name are ran through this method before matching against each other.
+- Added interfaces for configuration so you can tell what options are available in your current context.
+- Moved detection of column count changes into the reader. The parser shouldn't care and should just return whatever data it finds.
+- `ConstructUsing` works with reference maps.
+- `ConstructUsing` can use initializers.
+- Allow resuming reading of more data is written to the stream.
+- Auto mapping with user defined `struct`.
+- Ability to change required quote characters.
+- Speed improvements when using `GetField`.
+- Speed improvements when using `WriteField`.
+- Allow mapping default value to be a string that is converted.
+- Moved reading/writing state data into a common context object that is shared.
+- Multiple `string` formats for `TypeConverterOptions`.
+- Created object resolver so interfaces can be mapped to and IoC containers can be plugged in.
+- Made methods `ReIndex` and `GetMaxIndex` on `CsvClassMap` `public`.
+- Added a `Flush` method to the writer so `NextRecord` just writes a line ending. This will allow users to not write a line ending if they want.
+- Removed statics to eliminate possible threading issues.
+- Added `SerializableAttribute` to exception classes. It was removed previously because of netstandard1.x not having it available.
+- Added `ByteArrayConverter`.
+- Reading anonymous types.
+- Auto mapping with any constructor.
+- Changed `Property` naming to `Member` since both properties and fields are used.
+- `TypeConverterFactory` is now instance of `Configuration` instead of a static.
+- Changed `Configuration` flags to callbacks with default functionality to let the user change the functionality if they want.
+
+#### Bug Fixes
+
+- Fixed issue with `CsvClassMapCollection[type]` choosing the wrong type when multiple types on the inheritance tree are mapped.
+- Fixed issue where setting `Configuration.ShouldSkipRecord` method always overrides the `Configuration.SkipEmptyRecords` setting.
+- Fixed issue where ignoring header whitespace wouldn't work if a named property had the same whitespace in it.
+- When comments are on and a field is being written that is the first field in the record and the first char is a comment char, quote the field because it's not a comment.
+- Fixed issue with type converter options set in factory not working with auto mapping or explicit map.
+- Fixed line ending spanning buffer issue.
+- Fixed issue of skipping a character if a line ending was within a quoted field.
+- Added locking to factory to make it thread safe.
+- Fixed bug when mapping a constant then mapping another property after will throw an exception.
+- Changed reflection calls to `ConvertToString` to get the method for `ITypeConverter` instead of the actual converter. This is so the overridden implementation will be used instead of a random method with the same name.
+- Adding locking in `ReflectionHelper.CreateInstance` for the static delegate cache.
+- Fixed quote handling issue of `IsFieldBad` by marking unquoted fields with quote chars as bad only when `Configuration.IgnoreQuotes` is `false`.
+- Fixed issue with automapping not mapping references correctly in some nested situations because it thought it was a circular dependency when it wasn't.
+- Fixed issue with private properties not being able to be set.
+- Fixed issue with getting the class map from the collection. It was only getting the current and not looking up the tree.
+- Fixed issue with `Constant` not working with `null`.
+
+#### Breaking Changes
+
+- Removed all .NET builds except for net45 and netstandard2.0.
+- Removed obsolete code.
+ - `object ICsvReader.GetField( int index, ITypeConverter converter )`
+ - `object ICsvReader.GetField( string name, ITypeConverter converter )`
+ - `object ICsvReader.GetField( string name, int index, ITypeConverter converter )`
+ - `void ICsvWriter.WriteField( Type type, object field )`
+ - `void ICsvWriter.WriteField( Type type, object field, ITypeConverter converter )`
+ - `void ICsvWriter.WriteRecord( Type type, object record )`
+- Moved methods that aren't row level out of `ICsvReaderRow` and into `ICsvReader`.
+ - `IEnumerable<T> GetRecords<T>()`
+ - `IEnumerable<object> GetRecords( Type type )`
+ - `void ClearRecordCache<T>()`
+ - `void ClearRecordCache( Type type )`
+ - `void ClearRecordCache()`
+- Removed `CanConvertTo` and `CanConvertFrom` from the type converters because there is no need for them.
+- Added properties to `CsvHelperException` and removed the string data.
+- Changed `WriteRecord` to not call `NextRecord`.
+- Changed config setting name from `IgnorePrivateAccessor` to `IncludePrivateProperties` to be more clear on intention.
+- Changed reading exception callback to send a `CsvHelperException`.
+- Removed configuration `IsHeaderCaseSensitive`, `IgnoreHeaderWhiteSpace`, and `TrimHeaders` and added `PrepareHeaderForMatch`.
+- Changed `DateTime` and `DateTimeOffset` converters to not work when the `string` is spaces to match what all the other converters do. The .NET Framework `DateTime` and `DateTimeOffset` converters will convert a `string` of all spaces into `MinValue`, so we are diverging from that a little.
+- Changed `ReadHeader` to not set `CurrentRecord` to `null`.
+- Removed Excel specific code. This will go into a separate library. The malformed fallback behavior that mimics Excel still exists.
+- Moved reading/writing state data into a common context object that is shared.
+- Changed `BadDataCallback` to take in a `ReadingContext` instead of a `string`.
+- Removed `Csv` prefix from all classes except `CsvReader`, `CsvParser`, `CsvWriter`, and `CsvSerializer`.
+- Removed default `null` values since there is no common standard that could be found.
+- Removed default `boolean` values of `yes`, `y`, `no`, `n` since it's not a standard boolean. `true`, `false`, `1`, `0` still work.
+- Changed default delimiter to `,` instead of ListSeparator.
+- Added a `Flush` method to the writer.
+- Changed `Property` naming to `Member`.
+- Removed `Configuration`s `ThrowOnBadData`, `IgnoreReadingExceptions`, `SkipEmptyRecords`, and `WillThrowOnMissingField` in favor of function callbacks.
+- Renamed
+ - `TypeConverterFactory` to `TypeConverterCache`
+ - `TypeConverterOptionsFactory` to `TypeConverterOptionsCache`
+ - `Configuration.HeaderValidatedCallback` to `Configuration.HeaderValidated`
+ - `Configuration.MissingFieldFoundCallback` to `Configuration.MissingFieldFound`
+ - `Configuration.ReadingExceptionCallback` to `Configuration.ReadingExceptionOccurred`
+ - `Configuration.BadDataFoundCallback` to `Configuration.BadDataFound`
+ - `ICsvParser` to `IParser`
+ - `FieldReader` to `CsvFieldReader`
+ - `ICsvReader` to `IReader`
+ - `ICsvReaderRow` to `IReaderRow`
+ - `ICsvSerializer` to `ISerializer`
+ - `ICsvWriter` to `IWriter`
+ - `ICsvWriterRow` to `IWriterRow`
+
+### 2.16.3
+
+#### Bug Fixes
+
+- Fixed issue with `CsvClassMapCollection[type]` choosing the wrong type when multiple types on the inheritance tree are mapped.
+
+### 2.16.2
+
+#### Bug Fixes
+
+- Made `TypeInfo` compatibility stuff internal to not cause conflicts.
+
+### 2.16.1
+
+#### Bug Fixes
+
+- Fix for UWP release not working.
+
+### 2.16
+
+#### Features
+
+- Added `CsvReader.ReadHeader` so headers can be read without reading the first row.
+
+### 2.15.0.2
+
+#### Features
+
+- Update to .NET Core 1.0 release.
+
+### 2.15
+
+#### Features
+
+- Added `SerializableAttribute` to all exceptions.
+
+### 2.14.3
+
+#### Features
+
+- Updated project to .NET Core RC2.
+
+#### Bug Fixes
+
+- Fixed issue with assembly not being a release build.
+
+### 2.14.2
+
+#### Bug Fixes
+
+- Added net45 build and excluded it from CoreFX compatibility.
+
+### 2.14.1
+
+#### Bug Fixes
+
+- Fixed issue with .NET 2.0 classes being included that shouldn't have been in .NET 4.0.
+
+### 2.14
+
+#### Features
+
+- Added CoreCLR support.
+
+### 2.13.5
+
+#### Bug Fixes
+
+- Fixed `ShouldSkipRecord` not working on rows before header.
+
+### 2.13.3
+
+#### Bug Fixes
+
+- Fixed issue where the number of delimiter characters was read when a multiple character delimiter is hit. This was causing non-delimiters to be read when just the first character of the delimiter was found.
+
+### 2.13.2
+
+#### Bug Fixes
+
+- Fixed issue with `TryGetField` with named index returning wrong value.
+
+### 2.13.1
+
+#### Bug Fixes
+
+- Added missing `DateTimeConverter` to the list of default converters.
+
+### 2.13
+
+#### Features
+
+- When writing, use empty values for properties on reference properties when flag `UseNewObjectForNullReferenceProperties` is off.
+
+#### Bug Fixes
+
+- Fixed portable target for Windows Phone 8.1.
+
+### 2.12
+
+#### Features
+
+- Added Windows Phone 8.1 support to the PCL assembly.
+- Added ability to set a prefix for reference maps. i.e. `Prefix( string prefix = null)`
+- Added callback to use to determine if a record should be skipped when reading.
+- Excel leading zeros number formatting. This allows you to read and write numbers that will preserve the zeros on the front. i.e. `="0001"`
+- Use default value when a field is null because of a missing field in the row.
+- Added `TrimFields` to CsvWriter.
+- ability to specify constructor arguments when referencing another map within a mapping.
+- Added `Names` property on `CsvPropertyNameCollection` to get raw list of property names.
+- Added raw file line number to parser.
+- Mapping methods on `CsvClassMap<T>` are now public to more easily allow mapping during runtime.
+- Added `DateTimeOffset` converter.
+
+#### Bug Fixes
+
+- Fixed exception that was occurring when fields were empty and `UseExcelLeadingZerosFormatForNumerics = true`.
+- Excel compatibility fix. If a field starts with a quote but never ends and the end of the file is reached, the field would be null. The field will now contain everything.
+- Don't get static properties when automapping.
+- Made all exceptions thrown contain Exception.Data["CsvHelper"].
+- Fixed missing support writing the double quotes for inner quotes on a quoted field. This used to be there and was removed at some point. A unit test is now in place so this doesn't happen again.
+
+### 2.11.1.1
+
+#### Bug Fixes
+
+- Fixed issue with writing an array of records.
+
+### 2.11
+
+#### Features
+
+- Allow preservation of numeric strings for Excel.
+
+#### Bug Fixes
+
+- Fixed writing issue with anonymous objects outputting wrong headers.
+
+### 2.10
+
+#### Features
+
+- Updated writer methods to match reader methods.
+
+### 2.9.1
+
+#### Bug Fixes
+
+- Fixed issue where char converter would trim a single space string.
+
+### 2.9
+
+#### Features
+
+- Added support to ignore whitespace when determining a record is empty.
+
+### 2.8.4
+
+#### Bug Fixes
+
+- Fixed breaking change to not break.
+
+### 2.8.3
+
+#### Bug Fixes
+
+- Fixed issue where header wasn't written when there were no records in the IEnumerable on WriteRecords( IEnumerable ).
+
+### 2.8.2
+
+#### Bug Fixes
+
+- Fixed issue where an exception was always thrown if Configuration.ThrowOnBadData is on.
+
+### 2.8
+
+#### Features
+
+- Added configurations for a callback when a bad field is detected. Added configuration to throw an exception when a bad field is detected.
+- Made mapping with interfaces not duplicate property maps.
+
+### 2.7.1
+
+#### Bug Fixes
+
+- Fixed issue with mappings overwriting an explicitly set index when re-indexing.
+- Auto mapping will ignore Enumerable properties instead of throwing an exception. Exceptions will still be thrown if an Enumerable is used outside of auto mapping.
+
+### 2.7
+
+#### Bug Fixes
+
+- Fixed issue where using dynamic proxy objects would always automap instead of using a registered class map.
+- Fixed issue when trimming fields and the field is null.
+- Fixed issue when writing a field and the value is null.
+- Removed deprecated writer methods.
+
+### 2.6.1
+
+#### Features
+
+- PCL implementation. .NET 4.0+, Silveright 4.0+, WP7 7.5+, Windows 8
+- Excel separator record reading and writing.
+- Writer speed enhancements. Thanks to thecontrarycat.
+
+#### Bug Fixes
+
+- Fixed issue with mapping order when no index is specified.
+
+### 2.6
+
+#### Features
+
+- Added config to prefix headers of reference properties with the parent property name when automapping.
+- Ability to ignore blank lines. When this config option is set to false, the parser will return and array of nulls. You can differentiate between a row with commas this way. The reader will behave the same way as a blank record.
+
+#### Bug Fixes
+
+- Fixed issue when writing and a reference map type is a struct.
+
+### 2.5
+
+#### Features
+
+- Global type converter options.
+- Easier access to property maps to allow for changing maps on the fly.
+- Option to ignore references when auto mapping.
+- AutoMap functionality is available in class maps.
+- Mappings can be specified in the constructor of the mapping class. Overriding CreateMap is now deprecated.
+
+#### Bug Fixes
+
+- Updated ConvertUsing to not cause the exception "Operation Could Destabilize the Runtime" when property is a nullable type and a non-nullable type is returned.
+
+### 2.4.1
+
+#### Bug Fixes
+
+- Fixed issue where parsing would add delimiter chars to the field when the buffer ran out in the middle of the delimiter.
+
+### 2.4
+
+#### Features
+
+- Split writing up into a writer and serializer so the writer can write other things besides CSV files.
+
+#### Bug Fixes
+
+- Fixed issue where a NullReferenceException was thrown when using reference maps and a reference was null.
+- Fixed issue where TryGetField was throwing MissingFieldException.
+- Fixed issue where a commented row on the last line that doesn't have a newline will return the commented row.
+- Fixed NuGet package for WP8.
+- Added missing WriteHeader methods to ICsvWriter that were a part of CsvWriter.
+
+### 2.3
+
+#### Features
+
+- Support for TimeSpan.
+- Support for writing records of type dynamic. The dynamic objects do not work with collections, which means ExpandoObject doesn't currently work.
+
+#### Bug Fixes
+
+- Fixed issue with extra exception info not being added when the reading exception callback is used.
+- Fixed issue where having only reference maps throws exception.
+
+### 2.2.2
+
+#### Bug Fixes
+
+- Fixed issue with parser where a line wouldn't end if the previous char was a \0.
+
+### 2.2.1
+
+#### Bug Fixes
+
+- Fixed issue with trimming fields not working under one path.
+2.2.0
+
+#### Features
+
+- Added Row property to ICsvReader.
+- Config option to trim headers and values when reading.
+
+### 2.1.1
+
+#### Bug Fixes
+
+- Fixed issue when WillThrowOnMissingField is off and exception was still being thrown.
+
+### 2.1.0
+
+#### Features
+
+- Made RegisterClassMap overload with CsvClassMap instance public.
+
+### 2.0.1
+
+#### Bug Fixes
+
+- Made a WinRT Any CPU build and removed the arch specific WinRT builds.
+
+### 2.0.0
+
+#### Features
+
+- Added parser configuration to ignoring quotes and treating them like any other character.
+- Added CsvFactory to create ICsvParser, ICsvReader, and ICsvWriter classes. This is useful when you need to unit test code that uses CsvHelper since these 3 classes require a TextReader or TextWriter to work.
+- All assembly versions are strong named but will use a single version of 2.0.0.0. The file version and NuGet versions will change with every release.
+- Removed class type constraint from reading and writing.
+- Added non-generic class mapping overload.
+- WriteRecords param changed from IEnumerable<object> to non-generic IEnumerable.
+- Value types can be read and written instead of just custom classes.
+- Indexes are automatically set and incremented when mapping in order of the Map and Reference calls.
+- Auto mapping with circular reference detection.
+- Config option to ignore spaces in header names.
+- Fixed exception handling. Exception are no longer wrapped. Exception.Data["CsvHelper"] contains CsvHelper specific exception info.
+- Row exception can be skipped during GetRecords.
+- Renamed IsStrictMode to WillThrowOnMissingField.
+- Window Phone 7 & 8 builds.
+- Auto mapping will use defined maps if available.
+- Type converter options.
+- Added IEnumerable converter that throws an exception so people will know that converting to/from and enumerable is not supported instead of getting a cryptic error message.
+- Dynamic support for reading and writing.
+- Multiple maps can be supplied.
+- Renamed InvalidateRecordCache to ClearRecordCache.
+- Recursive reference mapping down the whole mapping tree.
+- Configuration.CultureInfo was added in place of Configuration.UseInvariantCulture.
+
+#### Bug Fixes
+
+- Getting the exception helper message failed when writing because no parser is available.
+- WriteRecords Dynamic invoke had wrong parameter count.
+- GetField( string ) was not returning null if the header is not found.
+- CsvBadDataException when there were extra columns in the row.
+- Raw record corruption.
+
+### 1.17.0
+
+#### Features
+
+- Ignore properties that can't be set in attribute mapping.
+- Made TypeConverterFactory thread safe.
+- Added remove converter method.
+
+#### Bug Fixes
+
+- Issue with writer exception in WinRT.
+
+### 1.16.0
+
+#### Features
+
+- Change TypeConverterFactory to use a set of cache type converters so global type converters can be used.
+- Added GetField<T, TConverter> overloads.
+- Changed all Activator.CreateInstance calls to use compiled expression trees to create them instead.
+- Changed mapping for ConvertUsing to accept a Func so a block expression can be used.
+
+### 1.15.0
+
+#### Features
+
+- Support for Silverlight 4 & 5.
+
+#### Bug Fixes
+
+- Issue where writing with Configuration.QuoteAllFields enabled will not quote the quotes inside the field.
+- Issue with WinRT not building after pull request merge.
+
+### 1.14.0
+
+#### Features
+
+- Parse full line on read. This allows for the parser to retain the whole unchanged raw CSV lin on a read.
+- Changed delimiter config from a char to a string.
+- Iterating records multiple times will throw a CsvReaderException. This is to help stop confusion when 0 results are returned the second iteration.
+
+#### Bug Fixes
+
+- Issue where EnumConverter isn't created correctly from the TypeConverterFactory.
+- Issue with updating count for all closing quotes.
+
+### 1.13.0
+
+#### Features
+
+- Configuration to always not quote all fields.
+- WriteHeader method is public.
+- Added enum converter.
+
+#### Bug Fixes
+
+- Issue with boolean converter returning true for "no" value.
+- Issue with GetMethod in WinRT.
+
+### 1.12.1
+
+#### Bug Fixes
+
+- Issue where an exception was being thrown when reading all records multiple times.
+
+### 1.12.0
+
+#### Features
+
+- WinRT support.
+
+### 1.11.0
+
+#### Features
+
+- Better exception information added to CsvBadDataException.
+
+### 1.10.0
+
+#### Features
+
+- Mapping property for CreateUsing which allows user to specify how the property gets created.
+
+### 1.9.2
+
+#### Bug Fixes
+
+- Issue with skipping empty records.
+
+### 1.9.1
+
+#### Bug Fixes
+
+- Issue with detecting column count changes.
+
+### 1.9.0
+
+#### Features
+
+- Added properties to CsvReaderException to give more information about the error.
+- Ability to skip empty records based on config settings.
+- Getting by index that doesn't exist will give a default or CsvMissingFieldException.
+- Made column count detection a config setting.
+- Map option for constructing the row object.
+- Throw exception when inconsistent column lengths are detected.
+- String.Format support in CsvWriter.
+- Excel compatible parsing.
+- Parser can keep track of the byte position using an encoding so a user can seek to a stream and start reading from there.
+
+#### Bug Fixes
+
+- Fixed bug with column count detection.
+- Issue with double counting the closing quote.
+- Issue where parsing was incorrect when the last row didn't have a CRLF at the end.
+- Issue with error messages.
+
+### 1.8.0
+
+#### Features
+
+- Writer overload for shouldQuote when writing a field.
+- Ability for using alternative names for headers in the configuration.
+- Better error messages.
+
+### 1.7.0
+
+#### Features
+
+- Configuration to quote all fields when writing.
+- Parser keeps a char count of where it's at.
+
+#### Bug Fixes
+
+- Fixed subclass issue by having the reader and writer use interfaces instead of concrete classes.
+
+### 1.6.0
+
+#### Features
+
+- Custom boolean type converter that can convert from 1 and 0 besides the normal conversion.
+- Property map configuration to set a default value.
+- CsvWriter no longer flushes to the output stream after every record.
+- Non-generic overloads for reading, writing, and attribute mapping.
+- Invalidate record cache will clear the properties list.
+
+### 1.5.0
+
+#### Features
+
+- Support .NET 2.0 and 3.5 builds.
+
+### 1.4.0
+
+#### Features
+
+- Case insensitive header matching.
+
+### 1.3.0
+
+#### Features
+
+- Removed CsvHelper class.
+- Property reference mapping. One level deep.
+
+### 1.2.0
+
+#### Features
+
+- Support for multiple duplicate header names.
+
+### 1.1.2
+
+#### Bug Fixes
+
+- Issue when using a readonly or writeonly stream and disposing causes an exception.
+
+### 1.1.1
+
+#### Features
+
+- Updated CsvHelper.cs to allow for readonly and writeonly stream.
+
+#### Bug Fixes
+
+- Fixed DateTimeConverter issue where a white space string would return a - DateTime.MinValue instead of null.
+
+### 1.1.0
+
+#### Features
+
+- Changed .NET 3.5 project to client profile.
+- Added getter for the current record in the header.
+
+### 1.0.0
+
+#### Features
+
+- Changed strict mode to default to true.
+- Renamed strict mode configuration property.
+- Changed reader to not throw an exception when there are duplicate header records unless in strict mode.
+
+#### Bug Fixes
+
+- Fixed bug where if there is no line ending at the end of the file, the last field would be null instead of an empty string.
+- Fixed configuration references and constructor signatures.
+
+### 0.16.0
+
+#### Features
+
+- Added configuration option for using CultureInvariant to read/write.
+- Updated the reader/writer to use the config option.
+- Both CsvReader and CsvWriter are using Local culture when converting from/to strings.
+- CsvClassMap without generic argument.
+
+### 0.15.0
+
+#### Features
+
+- Changed TryGetField<T> to do a low level check instead of jsut wrapping in try/catch blocks.
+- Removed non generic TryGetField methods.
+- Formatting changes.
+- Changed CsvParser to use the Configuration.Comment char instead of #.
+
+#### Bug Fixes
+
+- Fixed indentation error caused by new constructor in CsvPropertyMap.
+
+### 0.14.0
+
+#### Features
+
+- Changed GetRecords<T> to return IEnumerable<T>.
+- Added convenience constructor to CsvPropertyMap.
+- Major configuration overhaul.
+- Changed end of file check to be more low level.
+- Final record is returned if there is a trailing delimiter.
+- Added an exception re-throw to parsing that tells the line and character number.
+- Added ability to change what the quote char is.
+- Added CSV specific exceptions.
+
+#### Bug Fixes
+
+- Fix for issue when CsvHelper uses CurrentCulture instead of InvariantCulture.
+
+### 0.13.0
+
+#### Features
+
+- Changed StreamReader to TextReader to be more generic.
+
+### 0.12.0
+
+#### Features
+
+- Added option to have a commented out line using '#' as the first character of the line.
+
+#### Bug Fixes
+
+- Fixed issue with spaces in non-quoted field.