Changelog
v34.0.0
Released October 27, 2026. Previous release: v33.1.0. Migration guide.
Added
New target framework: net10.0.
Changed
-
CsvDataReaderBreakingThe type is now sealed. The base type changed from object to DbDataReader.
-
Now overrides the base class's member.
-
CsvDataReader.CsvDataReader(CsvReader, bool)BreakingThe parameters changed from (CsvReader, DataTable) to (CsvReader, bool).
-
Now overrides the base class's member.
-
Now overrides the base class's member.
-
Now overrides the base class's member. Parameter i is now named ordinal (this only affects calls that name the argument).
-
Now overrides the base class's member. Parameter i is now named ordinal (this only affects calls that name the argument).
-
CsvDataReader.GetBytes(int, long, byte[], int, int)Now overrides the base class's member. Parameters i, fieldOffset, bufferoffset are now named ordinal, dataOffset, bufferOffset (this only affects calls that name the arguments).
-
Now overrides the base class's member. Parameter i is now named ordinal (this only affects calls that name the argument).
-
CsvDataReader.GetChars(int, long, char[], int, int)Now overrides the base class's member. Parameters i, fieldoffset, bufferoffset are now named ordinal, dataOffset, bufferOffset (this only affects calls that name the arguments).
-
CsvDataReader.GetDataTypeName(int)Now overrides the base class's member. Parameter i is now named ordinal (this only affects calls that name the argument).
-
CsvDataReader.GetDateTime(int)Now overrides the base class's member. Parameter i is now named ordinal (this only affects calls that name the argument).
-
Now overrides the base class's member. Parameter i is now named ordinal (this only affects calls that name the argument).
-
Now overrides the base class's member. Parameter i is now named ordinal (this only affects calls that name the argument).
-
CsvDataReader.GetFieldType(int)Now overrides the base class's member. Parameter i is now named ordinal (this only affects calls that name the argument).
-
Now overrides the base class's member. Parameter i is now named ordinal (this only affects calls that name the argument).
-
Now overrides the base class's member. Parameter i is now named ordinal (this only affects calls that name the argument).
-
Now overrides the base class's member. Parameter i is now named ordinal (this only affects calls that name the argument).
-
Now overrides the base class's member. Parameter i is now named ordinal (this only affects calls that name the argument).
-
Now overrides the base class's member. Parameter i is now named ordinal (this only affects calls that name the argument).
-
Now overrides the base class's member. Parameter i is now named ordinal (this only affects calls that name the argument).
-
CsvDataReader.GetOrdinal(string)Now overrides the base class's member.
-
CsvDataReader.GetSchemaTable()Now overrides the base class's member.
-
Now overrides the base class's member. Parameter i is now named ordinal (this only affects calls that name the argument).
-
Now overrides the base class's member. Parameter i is now named ordinal (this only affects calls that name the argument).
-
CsvDataReader.GetValues(object[])Now overrides the base class's member.
-
Now overrides the base class's member.
-
Now overrides the base class's member. Parameter i is now named ordinal (this only affects calls that name the argument).
-
Now overrides the base class's member.
-
Now overrides the base class's member.
-
Now overrides the base class's member.
-
Now overrides the base class's member. Parameter i is now named ordinal (this only affects calls that name the argument).
-
Now overrides the base class's member.
-
CsvReaderBreakingThe type is now sealed. The type no longer implements IReader, IReaderRow. The type now implements IAsyncDisposable.
-
CsvReader.EnumerateRecords<T>(T)BreakingNew type parameter constraints: where T : class. No longer virtual (the type can't be derived from).
-
CsvReader.EnumerateRecordsAsync<T>(T, CancellationToken)BreakingNew type parameter constraints: where T : class. No longer virtual (the type can't be derived from).
-
CsvReader.GetFieldIndex(string, int)BreakingThe parameters changed from (string, int, bool) to (string, int).
-
No longer virtual (the type can't be derived from).
-
CsvReader.GetRecord<T>(T)BreakingThe return type changed from T to void. New type parameter constraints: where T : class. No longer virtual (the type can't be derived from). Parameter anonymousTypeDefinition is now named record (this only affects calls that name the argument).
-
No longer virtual (the type can't be derived from).
-
CsvReader.GetRecordsAsync<T>(CancellationToken)No longer virtual (the type can't be derived from).
-
No longer virtual (the type can't be derived from).
-
CsvReader.ReadAsync(CancellationToken)BreakingNew optional parameters (CancellationToken): calls compile unchanged, but code built against the old version must be recompiled.
-
CsvReader.ReadHeader()BreakingThe return type changed from bool to void. No longer virtual (the type can't be derived from).
-
No longer virtual (the type can't be derived from).
-
CsvReader.this[int]BreakingThe type changed from string to CsvField. No longer virtual (the type can't be derived from).
-
CsvReader.this[string]BreakingThe type changed from string to CsvField. No longer virtual (the type can't be derived from).
-
CsvWriterBreakingThe type is now sealed. The type no longer implements IWriter, IWriterRow.
-
No longer virtual (the type can't be derived from).
-
CsvWriter.FlushAsync(CancellationToken)BreakingNew optional parameters (CancellationToken): calls compile unchanged, but code built against the old version must be recompiled.
-
CsvWriter.WriteComment(string)No longer virtual (the type can't be derived from).
-
No longer virtual (the type can't be derived from). Parameter field is now named value (this only affects calls that name the argument).
-
CsvWriter.WriteField(string, CsvQuoting)BreakingThe parameters changed from (string, bool) to (string, CsvQuoting).
-
CsvWriter.WriteField<T>(T, ReadOnlySpan<char>)BreakingNew optional parameters (ReadOnlySpan<char>): calls compile unchanged, but code built against the old version must be recompiled.
-
No longer virtual (the type can't be derived from).
-
No longer virtual (the type can't be derived from).
-
CsvWriter.WriteRecords<T>(IEnumerable<T>)No longer virtual (the type can't be derived from).
-
CsvWriter.WriteRecordsAsync<T>(IAsyncEnumerable<T>, CancellationToken)BreakingThe return type changed from Task to ValueTask. No longer virtual (the type can't be derived from).
-
CsvWriter.WriteRecordsAsync<T>(IEnumerable<T>, CancellationToken)BreakingThe return type changed from Task to ValueTask. No longer virtual (the type can't be derived from).
Removed
-
AllowCommentsAttributeBreaking -
ArrayConverterBreaking -
ArrayHelperBreaking -
BadDataExceptionBreaking -
BadDataFoundBreaking -
BadDataFoundArgsBreaking -
BigIntegerConverterBreaking -
BooleanConverterBreaking -
BooleanFalseValuesAttributeBreaking -
BooleanTrueValuesAttributeBreaking -
BufferSizeAttributeBreaking -
ByteArrayConverterBreaking -
ByteArrayConverterOptionsBreaking -
ByteConverterBreaking -
CacheFieldsAttributeBreaking -
CharConverterBreaking -
ClassMapBreaking -
ClassMap<TClass>Breaking -
ClassMapCollectionBreaking -
CollectionConverterFactoryBreaking -
CollectionGenericConverterBreaking -
CommentAttributeBreaking -
ConfigurationExceptionBreaking -
ConfigurationFunctionsBreaking -
ConstantAttributeBreaking -
ConvertFromString<TMember>Breaking -
ConvertFromStringArgsBreaking -
ConvertToString<TClass>Breaking -
ConvertToStringArgs<TClass>Breaking -
CountBytesAttributeBreaking -
CsvConfigurationBreaking -
CsvContextBreaking -
CsvDataReader.Dispose()BreakingNo longer declared by CsvDataReader; it may still be inherited from DbDataReader.
-
CsvDataReader.GetData(int)BreakingNo longer declared by CsvDataReader; it may still be inherited from DbDataReader.
-
CsvHelperExceptionBreaking -
CsvMode.RFC4180Breaking -
CsvParserBreaking -
CsvParser.ProcessedFieldBreaking -
CsvReader.CanRead(MemberMap)Breaking -
CsvReader.CanRead(MemberReferenceMap)Breaking -
CsvReader.CheckHasBeenRead()Breaking -
CsvReader.ColumnCountBreaking -
CsvReader.ConfigurationBreaking -
CsvReader.ContextBreaking -
CsvReader.CsvReader(IParser)Breaking -
CsvReader.CsvReader(TextReader, CultureInfo, bool)Breaking -
CsvReader.CsvReader(TextReader, IReaderConfiguration, bool)Breaking -
CsvReader.CurrentIndexBreaking -
CsvReader.Dispose(bool)Breaking -
CsvReader.GetField(Type, int)Breaking -
CsvReader.GetField(Type, int, ITypeConverter)Breaking -
CsvReader.GetField(Type, string)Breaking -
CsvReader.GetField(Type, string, ITypeConverter)Breaking -
CsvReader.GetField(Type, string, int)Breaking -
CsvReader.GetField(Type, string, int, ITypeConverter)Breaking -
CsvReader.GetField(int)Breaking -
CsvReader.GetField(string)Breaking -
CsvReader.GetField(string, int)Breaking -
CsvReader.GetField<T, TConverter>(int)Breaking -
CsvReader.GetField<T, TConverter>(string)Breaking -
CsvReader.GetField<T, TConverter>(string, int)Breaking -
CsvReader.GetField<T>(int)Breaking -
CsvReader.GetField<T>(int, ITypeConverter)Breaking -
CsvReader.GetField<T>(string)Breaking -
CsvReader.GetField<T>(string, ITypeConverter)Breaking -
CsvReader.GetField<T>(string, int)Breaking -
CsvReader.GetField<T>(string, int, ITypeConverter)Breaking -
CsvReader.GetFieldIndex(IEnumerable<string>, int, bool, bool)Breaking -
CsvReader.GetRecord(Type)Breaking -
CsvReader.GetRecords(Type)Breaking -
CsvReader.GetRecords<T>(T)Breaking -
CsvReader.GetRecordsAsync(Type, CancellationToken)Breaking -
CsvReader.GetRecordsAsync<T>(T, CancellationToken)Breaking -
CsvReader.HeaderRecordBreaking -
CsvReader.ParseNamedIndexes()Breaking -
CsvReader.ParserBreaking -
CsvReader.TryGetField(Type, int, ITypeConverter, out object)Breaking -
CsvReader.TryGetField(Type, int, out object)Breaking -
CsvReader.TryGetField(Type, string, ITypeConverter, out object)Breaking -
CsvReader.TryGetField(Type, string, int, ITypeConverter, out object)Breaking -
CsvReader.TryGetField(Type, string, int, out object)Breaking -
CsvReader.TryGetField(Type, string, out object)Breaking -
CsvReader.TryGetField<T, TConverter>(int, out T)Breaking -
CsvReader.TryGetField<T, TConverter>(string, int, out T)Breaking -
CsvReader.TryGetField<T, TConverter>(string, out T)Breaking -
CsvReader.TryGetField<T>(int, ITypeConverter, out T)Breaking -
CsvReader.TryGetField<T>(int, out T)Breaking -
CsvReader.TryGetField<T>(string, ITypeConverter, out T)Breaking -
CsvReader.TryGetField<T>(string, int, ITypeConverter, out T)Breaking -
CsvReader.TryGetField<T>(string, int, out T)Breaking -
CsvReader.TryGetField<T>(string, out T)Breaking -
CsvReader.ValidateHeader(ClassMap, List<InvalidHeader>)Breaking -
CsvReader.ValidateHeader(Type)Breaking -
CsvReader.this[string, int]Breaking -
CsvWriter.CanWrite(MemberMap)Breaking -
CsvWriter.ConfigurationBreaking -
CsvWriter.ContextBreaking -
CsvWriter.CsvWriter(TextWriter, CultureInfo, bool)Breaking -
CsvWriter.CsvWriter(TextWriter, IWriterConfiguration, bool)Breaking -
CsvWriter.Dispose(bool)Breaking -
CsvWriter.DisposeAsync(bool)Breaking -
CsvWriter.FlushBuffer()Breaking -
CsvWriter.FlushBufferAsync()Breaking -
CsvWriter.GetTypeInfoForRecord<T>(T)Breaking -
CsvWriter.HeaderRecordBreaking -
CsvWriter.IndexBreaking -
CsvWriter.NextRecord()Breaking -
CsvWriter.NextRecordAsync()Breaking -
CsvWriter.RowBreaking -
CsvWriter.SanitizeForInjection(string)Breaking -
CsvWriter.WriteConvertedField(string, Type)Breaking -
CsvWriter.WriteDynamicHeader(IDynamicMetaObjectProvider)Breaking -
CsvWriter.WriteField<T, TConverter>(T)Breaking -
CsvWriter.WriteField<T>(T, ITypeConverter)Breaking -
CsvWriter.WriteHeader(Type)Breaking -
CsvWriter.WriteRecords(IEnumerable)Breaking -
CsvWriter.WriteRecordsAsync(IEnumerable, CancellationToken)Breaking -
CsvWriter.WriteToBuffer(string)Breaking -
CultureInfoAttributeBreaking -
DateTimeConverterBreaking -
DateTimeOffsetConverterBreaking -
DateTimeStylesAttributeBreaking -
DecimalConverterBreaking -
DefaultAttributeBreaking -
DefaultClassMap<T>Breaking -
DefaultTypeConverterBreaking -
DelimiterAttributeBreaking -
DetectColumnCountChangesAttributeBreaking -
DetectDelimiterAttributeBreaking -
DetectDelimiterValuesAttributeBreaking -
DoubleConverterBreaking -
DynamicRecordCreatorBreaking -
DynamicRecordWriterBreaking -
EncodingAttributeBreaking -
EnumConverterBreaking -
EnumConverterFactoryBreaking -
EnumIgnoreCaseAttributeBreaking -
EnumerableConverterBreaking -
EscapeAttributeBreaking -
ExceptionMessagesContainRawDataAttributeBreaking -
ExpandoObjectRecordWriterBreaking -
ExpressionManagerBreaking -
FactoryBreaking -
FieldValidationExceptionBreaking -
FormatAttributeBreaking -
GetConstructorBreaking -
GetConstructorArgsBreaking -
GetDelimiterBreaking -
GetDelimiterArgsBreaking -
GetDynamicPropertyNameBreaking -
GetDynamicPropertyNameArgsBreaking -
GuidConverterBreaking -
HasHeaderRecordAttributeBreaking -
HeaderPrefixAttributeBreaking -
HeaderValidatedBreaking -
HeaderValidatedArgsBreaking -
HeaderValidationExceptionBreaking -
IBuildableClass<TClass>Breaking -
IClassMapperBreaking -
IDictionaryConverterBreaking -
IDictionaryGenericConverterBreaking -
IEnumerableConverterBreaking -
IEnumerableGenericConverterBreaking -
IFactoryBreaking -
IHasConstant<TClass, TMember>Breaking -
IHasConvertUsing<TClass, TMember>Breaking -
IHasDefault<TClass, TMember>Breaking -
IHasDefaultOptions<TClass, TMember>Breaking -
IHasIndex<TClass, TMember>Breaking -
IHasIndexOptions<TClass, TMember>Breaking -
IHasMap<TClass>Breaking -
IHasMapOptions<TClass, TMember>Breaking -
IHasName<TClass, TMember>Breaking -
IHasNameIndex<TClass, TMember>Breaking -
IHasNameIndexOptions<TClass, TMember>Breaking -
IHasNameOptions<TClass, TMember>Breaking -
IHasOptional<TClass, TMember>Breaking -
IHasOptionalOptions<TClass, TMember>Breaking -
IHasTypeConverter<TClass, TMember>Breaking -
IHasTypeConverterOptions<TClass, TMember>Breaking -
IHasValidate<TClass, TMember>Breaking -
IMemberMapperBreaking -
IMemberReferenceMapperBreaking -
IObjectResolverBreaking -
IParameterMapperBreaking -
IParameterReferenceMapperBreaking -
IParserBreaking -
IParserConfigurationBreaking -
IReaderBreaking -
IReaderConfigurationBreaking -
IReaderRowBreaking -
ITypeConverterBreaking -
ITypeConverterFactoryBreaking -
IWriterBreaking -
IWriterConfigurationBreaking -
IWriterRowBreaking -
IgnoreAttributeBreaking -
IgnoreBaseAttributeBreaking -
IgnoreBlankLinesAttributeBreaking -
IgnoreReferencesAttributeBreaking -
IncludePrivateMembersAttributeBreaking -
IndexAttributeBreaking -
InjectionCharactersAttributeBreaking -
InjectionEscapeCharacterAttributeBreaking -
InjectionOptionsBreaking -
InjectionOptionsAttributeBreaking -
Int16ConverterBreaking -
Int32ConverterBreaking -
Int64ConverterBreaking -
InvalidHeaderBreaking -
LineBreakInQuotedFieldIsBadDataAttributeBreaking -
MaxFieldSizeAttributeBreaking -
MaxFieldSizeExceptionBreaking -
MemberMapBreaking -
MemberMap<TClass, TMember>Breaking -
MemberMapCollectionBreaking -
MemberMapDataBreaking -
MemberMapTypeConverterOptionBreaking -
MemberNameCollectionBreaking -
MemberReferenceMapBreaking -
MemberReferenceMapCollectionBreaking -
MemberReferenceMapDataBreaking -
MemberTypesBreaking -
MemberTypesAttributeBreaking -
MissingFieldExceptionBreaking -
MissingFieldFoundBreaking -
MissingFieldFoundArgsBreaking -
ModeAttributeBreaking -
NameAttributeBreaking -
NameIndexAttributeBreaking -
NewLineAttributeBreaking -
NotSupportedTypeConverter<T>Breaking -
NullValuesAttributeBreaking -
NullableConverterBreaking -
NullableConverterFactoryBreaking -
NumberStylesAttributeBreaking -
ObjectCreatorBreaking -
ObjectRecordCreatorBreaking -
ObjectRecordWriterBreaking -
ObjectResolverBreaking -
OptionalAttributeBreaking -
ParameterMapBreaking -
ParameterMapDataBreaking -
ParameterMapTypeConverterOptionBreaking -
ParameterReferenceMapBreaking -
ParameterReferenceMapDataBreaking -
ParserExceptionBreaking -
PrepareHeaderForMatchBreaking -
PrepareHeaderForMatchArgsBreaking -
PrimitiveRecordCreatorBreaking -
PrimitiveRecordWriterBreaking -
ProcessFieldBufferSizeAttributeBreaking -
QuoteAttributeBreaking -
ReaderExceptionBreaking -
ReadingExceptionOccurredBreaking -
ReadingExceptionOccurredArgsBreaking -
RecordCreatorBreaking -
RecordCreatorFactoryBreaking -
RecordHydratorBreaking -
RecordManagerBreaking -
RecordTypeInfoBreaking -
RecordWriterBreaking -
RecordWriterFactoryBreaking -
ReferenceHeaderPrefixBreaking -
ReferenceHeaderPrefixArgsBreaking -
ReflectionExtensionsBreaking -
SByteConverterBreaking -
ShouldQuoteBreaking -
ShouldQuoteArgsBreaking -
ShouldSkipRecordBreaking -
ShouldSkipRecordArgsBreaking -
ShouldUseConstructorParametersBreaking -
ShouldUseConstructorParametersArgsBreaking -
SingleConverterBreaking -
StringConverterBreaking -
TimeSpanConverterBreaking -
TrimOptionsBreaking -
TrimOptionsAttributeBreaking -
TypeConverter<T>Breaking -
TypeConverterAttributeBreaking -
TypeConverterCacheBreaking -
TypeConverterExceptionBreaking -
TypeConverterOptionsBreaking -
TypeConverterOptionsCacheBreaking -
UInt16ConverterBreaking -
UInt32ConverterBreaking -
UInt64ConverterBreaking -
UriConverterBreaking -
UseNewObjectForNullReferenceMembersAttributeBreaking -
ValidateBreaking -
ValidateArgsBreaking -
ValidateMessageBreaking -
ValidationExceptionBreaking -
WhiteSpaceCharsAttributeBreaking -
WriterExceptionBreaking