Version 3.1, July 2015
Hi everyone again !!
The FileHelpers has reached a big Milestone today we are releasing the 3.1 version!
Now with full support for .NET 4.0, 4.5 and Mono and with a ton of news and enhancements.
After some time off for different reasons we are now trying to update the library in a more regular fashion. We redesigned the HomeSite with a Material Design Template from GeeksLabs
- NEW: Full .NET 2.0, 4.0 & 4.5 support.
- NEW: Added support for MONO !!
- NEW: FileHelpers.Analyzer is a Roslyn Analyzer with best practices and quicks fixes
- NEW: A ton of new examples, autogenerated from FileHelpers.Examples project
- NEW: Partial support to use Autoproperties
- NEW: Async Methods returns IDisposable to allow using() statements that autoclose files on ends or exception.
- NEW: Events for the Async engines.
- NEW: The events args now have TotalBytes and CurrentBytes to allow you show progress while reading or writing.
- NEW: FieldIndexers you can now get the values in the AsyncEngine like in the DataReader of ADO.NET =) You can access them via index or fieldName (at the moment case sensitive). This also completes the RunTime records support
- NEW: BigFileSorter: if you need to sort big files, you can use this feature that implements External Sorting
- NEW: SmartFormatDetector: A class designed to discover the format of delimited and flat files based on sample files. It is integrated with the wizzard
- NEW: FieldOrder: a new attribute to override the default order of fields.
- NEW: Better Delimited validations to make sure that the file contains the right number of fields
- NEW: [FieldValueDiscarted]: a new attribute to allow the value of a particular field to be read but not stored in the record class (this was a very requested feature)
- NEW: [FieldNotEmpty]: Indicates whether the target field needs to be populated with a non-empty value.
- MOD: The error messages have been made more meaningful. In all exceptions you get: FieldName, ColumnNumber, LineNumber etc.
- DOCS: rewritten thanks to the work of Ken Foskey and Matthias Cavigelli
- Removed support for .NET Compact Framework
- [FieldIgnored] => [FieldHidden]
- IComparableRecord<T> => IComparable<T>
- Better caching of internal classes
- The core code of the library was refactored to make easier to extend it.
- Better performance.
- ADD: UpdateLinks properties, allow to specify how the library must handle Workbook links (thanks to Stefan Schälle)
- FIX: A little problem with the quoted fields in the wizard
- More documentation has been added to the Library source code. It is now even easier to get involved in development!
2.0The library has passed its 1st birthday !!! and thanks to the work and contribution of a lot of people ([partial list of them)](credits.html) Too many things were changed, mostly internally, now we have a performance gain of more than 60% in .NET 2.0 I will be releasing the version for .NET 1.1 because I know that a lot of people use it in some corporations, but maybe in the next releases the new features will be .net 2.0 only. It's a massive job maintain and optimize both =( versions There are also a lot of major changes, refactoring in the code, and a big core rewrite that allow the engines to use less memory and temporary string (we are using more buffers to avoid this) We were very busy to keep to library updated and to give support to the users. Check the forums for any problems as it's likely they have been addressed here. We have our own domain www.filehelpers.com thanks to (Antoine) and a DevBlog at http://blog.filehelpers.com Here do you have all the stuff that keep me busy for a while :P
- The constructor of the MultiRecordEngine was changed to allow params args, and to allow users to not pass the RecordSelector (in write operations where it was not needed).
- EndsRead and EndsWrite deleted, now you have a Close() operation to simplify the API and to make it similar to the System.Data namespace. (The async engines also implement IDisposable)
- Rename FileHelperException --\> FileHelpers Exception a better name =) and an easy to solve problem
- By default the numeric fields in the FixedLengthRecords that don't have an [FieldAlign] will be aligned to the right and the rest the left by default, with this we avoid the problem of generate files with different meaning when reading and writing
- Internal use of Reflection.Emit, Dynamic Methods and char buffers to get **more than 50% enhancement in performance and for .NET 2.0 more than 65%**
- The Read..AsDT methods now creates the DataTable record by record, not at the end, so you can handle large files without any memory overload
- No more reflection in the operations (only in the constructors).
- FieldSorter faster too, Removed REFLECTION for EMIT
Shining new features
- The very cool [DelimitedFileEngine](example_delimitedengine.html) and [FixedFileEngine](example_fixedengine.html) that allow to change options at RunTime (also with generic versions) [Check an example here](example_generics.html)
- [ConditionalRecords](example_conditionalrecords.html) you can easily include or exclude certain records based on a RecordCondition (like BeginsWith, EndsWith, Contains or RegEx) [Check the example](example_conditionalrecords.html)
- A new GenericDatabaseStorage to allow databases use ADO.NET to work with the FileHelpers (Thanks Rodolfo Finochietti)
- Experimental [Mono project](http://www.mono-project.com) Support (some users are already using it, we hope that in the next release we have a completely working version for this framework)
- New version checker in the demos and wizard (both with a renewed look and feel) [Check the movies](http://www.filehelpers.com/movies.html)
- .NET 2.0 Nullable Types support. (Thanks Vijayan) [Check the example](example_nullable.html)
- Notification Interfaces: you can now get notified of the events simply implement them
- Enhanced Debugging in .NET 2.0 with DebuggerDisplay and DebuggerBrowsable, DebugVisualizars to come.
- The wizard has a record class test that allows you to introduce sample data and your class and check for errors or results.
- You can [check our screencasts](http://www.filehelpers.com/movies.html) for the demos, wizard and other features of the library.
- Now the code for Vs2003 and Vs2005 are both on SVN, sharing the same files and the build script autodetect your Visual Studio installation. So no more excuses time to get involved =)
- The engines with asynchronous operations are now IDisposable and IEnumerable so you can declare it with using(..) and use them in a foreach loop
API changes and extensions
- The write methods are less strict. You can pass now an IEnumerable instead of an array, so you can directly pass a List or ArrayList to the method without doing a ToArray()
- RunTime records can now get a DataTable in the constructor and use DataColumns to create one field for each column.
- Generic versions of near all the engines of the library (it is really hard to maintain the two copies :P so everyone it is time to port !!)
- Asynchronous operations in others engines like the MultiRecordEngine
- Event support to the MultiRecordEngine thanks to the contribution of Francis de Fouchier
- The library now handles infinite levels of inheritance adding the high level fields first in the result record class.
- Allow to ignore spaces and tabs in the [IgnoreEmptyLinesAttribute](FileHelpers.IgnoreEmptyLinesAttribute.html)
- [IgnoreCommentedLines](FileHelpers.IgnoreCommentedLinesAttribute.html) thanks to MCampbell
- The Read methods now have a maxRecords args to tell to the engines how much them must read.
- A new constructor overload to the engine that allow to pass the Encoding. This is useful to make the users aware of the Encoding feature.
- FileTransformEngine with two new methods ReadAndTransformRecords and TransformRecords
- Flush method to AsyncEngines to allow users to ensure data is written. For example, if they are using the library for logging.
- The converters are now smarter as they validate to which types can be assigned and throw exceptions if converter is wrong (for example if you use ConverterKind.Decimal in a int field)
- The [ConvertException](FileHelpers.ConvertException.html) has a lot of context information: LineNumber, ColumnNumber, FieldName. Also better exception messages.
- The integer converters receive now take a decimal separator to build an InvariantCulture to format and parse the values and strings
- Fixed the problem with ASP.NET: "Line 0: Metadata file 'filehelpers.dll' could not be found"
- Fixed some problems with the CsvClassBuilder (it is a good practice to not to release the last minute added features)
- The assemblies are now signed
- The new ConverterBase.DefaultDateTimeFormat to avoid set the converter format field by field =)
- Some error messages from the library were rewritten and now provides more contextual information (line and column numbers, field name, etc).
- ExcelStorage supports more than 26 columns (thanks to Mark Izendooren)
- Encoding support to the CsvEngine
- The wizard remembers all the paths now
- SkipThisRecord in the AfterReadRecordEventArgs, this allows engine to skip records from the results (thanks Crestline)
- More methods for the [CommonEngine](FileHelpers.CommonEngineMembers.html)
- More than [420+ NUnit tests](testing.html) !!! (I cant believe it, I'm a lazy developer but I know how much value you get out of testing the library)
- You now have two versions for the demos, one for each framework version.
- The FixedLengthClassBuilder has more constructors to set the length of the fields in your instruction
- Improved documentation. (Thanks Antoine and Matt)
- [A lot of new examples check it out !!](examples.html)