AutoMapper 3.0 released

AutoMapper had Silverlight 4 support a while back, but it was a huge pain to keep up. In this release, I converted AutoMapper to a Portable Class Library, with supported platforms:

  • .NET 4 and higher
  • Silverlight 4 and higher
  • Windows Phone 7.5 and higher
  • .NET for Windows Store apps (WinRT)

Additionally, the base AutoMapper PCL is fully functioning on its own, so you can even reference AutoMapper from your own PCL projects.

The other big change was the (long overdue) addition of code comments. If I’m being completely honest, it’s a lot more fun coding than documenting code.

Finally LINQ projection is front and center, with support for flatting, projection, lists and collections. Now your mapping can be pushed all the way down to your LINQ provider (and eventually to SQL).

Release notes on GitHub

Thanks to all the contributors on this release, and happy mapping!

Related Articles:

Post Footer automatically generated by Add Post Footer Plugin for wordpress.

About Jimmy Bogard

I'm a technical architect with Headspring in Austin, TX. I focus on DDD, distributed systems, and any other acronym-centric design/architecture/methodology. I created AutoMapper and am a co-author of the ASP.NET MVC in Action books.
This entry was posted in AutoMapper. Bookmark the permalink. Follow any comments here with the RSS feed for this post.
  • http://blog.deltacode.be/ David De Sloovere

    Congratulations Jimmy!
    I know documenting is hard, but it really makes your product better and more usable. So thanks for going through with that.

  • Jinish

    Hi Jimmy,
    Had a question for you. Is it possible to use Automapper with Paged lists.
    Currently when the mapped model is rendered as paged list it dies not seem to work.
    As an example if i do something like:
    var model = Mapper.Map(sourcelist).ToPagedList(1, 5)
    This returns model with 0 count. And i know sourcelist has records.
    Anything i might be missing?

    • jbogard

      Can you post this on the mailing list?

      Thanks!

      • CIWAN

        Thanks for the great work, I too am after Paged lists, and AutoMapper doesn’t seem to like it :(

        • jbogard

          Paged lists? Can you open a GitHub issue?

  • Bernie

    Thanks for your fine work on AutoMapper Jimmy. It’s greatly appreciated.

  • Pingback: The Morning Brew - Chris Alcock » The Morning Brew #1428

  • Anders Borum

    Thanks for the great work on 3.0. I was wondering if you could share a few thoughts on why the official 3.0 package on nuget isn’t signed (with a strong name key), like the previous official release?

    • jbogard

      Part of it was strong named assemblies are a pain in the ass. The other reason is I forgot to turn it back on. I’m thinking of creating an SN-only version of it if needed.

      • Anders Borum

        I think the degree of pain in the ass depends on your situation and type of project(s). I am writing software that uses strong naming and was hoping that the 3.0 nuget binaries would receive a strong naming treatment once out of pre-release.
        As the previous nuget release was signed, and the fact that I’d like to use the latest 3.0 binaries, I’d really appreciate a signed version on nuget.

      • Anders Borum

        Jimmy, if possible, please voice your intent on whether you’ll release a SN-version of the 3.0 binaries on nuget or we should resort to signing a local version. As much as I know it’s extra work on your behalf, I’d really like to stick with using the nuget package manager to manage upgrades.

        • jbogard

          It’ll be 3.1 that has a signed version on NuGet.

      • Jesús Adolfo García Díaz

        Jimmy, please let me know when the version 3.1 with strong name key be ready, I really need it. Best regards

  • Alain Brito

    Awesome news!

    Linq projection is sweet cake. Congratulations!

  • Pingback: Windows Store Developer Links – 2013-08-28 | Dan Rigby

  • Juan Correa

    Great work! Recently we downloaded and installed the most recent automapper version 3.0 but the assemblies are not signed and we need them signed as part of companies policies. Thanks in advance and again great work.

  • Pingback: Reading Notes 2013-09-01 | Matricis

  • John Quest

    Hi Jimmy

    Great product. I was just wondering if you could explain why adding formatters has been deprecated in the latest release. Is there an alternative?

    • jbogard

      Couple of reasons – one is that they’re actually quite expensive to support, performance-wise. Second, they’re better used with something like a type converter/value resolver instead. Basically a type formatter is a specialized version (just for strings) of the other two pieces. This is a bit of housekeeping to simplify the extension points.

      • John Quest

        Thank you Jimmy for the clarification.

  • crazybert

    +1 for signed assemblies.
    I would say that in the modern world NOT having a strong name causes much more pain in the half spheres…

    • jbogard

      The 3.1 release will be signed (as are the current prerelease packages)

      • crazybert

        Thank you!

  • crazybert

    Please also note that AutoMapper.Net4.dll has Version 0.0.0.0 which makes it impossible to re-sign with another key.

  • Fereshte Mohsenian

    Is AutoMapper.AutoMapperMappingException covered in this version?

    • jbogard

      Eh? What do you mean?

      • Fereshte Mohsenian

        i got this issue with my auto mapper ,version 2 .

        Missing type map configuration or unsupported mapping.
        Exception of type ‘AutoMapper.AutoMapperMappingException’ was thrown.

        Is this issue fixed in new version?

        • jbogard

          That just means that you’ve likely misconfigured AutoMapper. Can you post on the mailing list?

          • Fereshte Mohsenian

            Thanks for your attention. Here is my Code:

            public interface ITypeAdapter
            {
            ///
            /// Adapt a source object to an instance of type
            ///
            /// Type of source item
            /// Type of target item
            /// Instance to adapt
            /// mapped to
            TTarget Adapt(TSource source)
            where TTarget : class,new()
            where TSource : class;

            ///
            /// Adapt a source object to an instnace of type
            ///
            /// Type of target item
            /// Instance to adapt
            /// mapped to
            TTarget Adapt(object source)
            where TTarget : class,new();
            }

            and I use it like this:

            protected override void Configure()
            {
            var map = Mapper.CreateMap(); Mapper.CreateMap();

            }

          • Fereshte Mohsenian

            Any idea?

          • jbogard

            Actually having a really hard time seeing this in the comments here, can you post on the mailing list?

          • Fereshte Mohsenian

            would you please help me to send this on mailing list? thanks

          • jbogard

            Sure! Just go here: https://groups.google.com/forum/#!forum/automapper-usersand click “New Topic”. I moderate messages on that group (too much spam) so
            it might take a couple of minutes to get posted.

            Thanks,

            Jimmy