Release Notes v3.3.0

December 19th 2017

Introduction

This is a summary of the changes introduced in v3.3.0 of MFractor for Visual Studio Mac.

This standout feature in this release is the addition of code snippet support. Got a particular way you write your view model properties or commands? MFractor now lets you use your own code snippet, enabling complete customisation!

We've also added a localisation wizard that will quickly move string literals into ResX files, several handy code actions and a update notification dialog that let's you know when new MFractor releases are available.

Features

  • A localisation wizard for XAML and C# so you can quickly move strings into ResX files.
  • Code Snippets are now generally supported throughout MFractor. They are available for:
    • View Model Properties.
    • Bindable Properties.
    • Command Implementations.
    • Routing Effects.
    • Platform Specific Effects.
    • Value Converters.
    • Value Conversion Attribute.
    • Code Behind class declarations.
  • Use the Extract XAML layout into new control code action to move a XAML section into its own code file.
  • Use the Generate Platform Effect code action to easily generate the routing effect and platform effects.
  • Use the Generate interface implementation code action to quickly create a new class implementation from an existing C# interface;
  • The Add UsesLayout to class code action will append an MFractor.Annotations.Android.UsesLayout annotation to an Android class to specify the layout that class uses. Use this to quickly enable MFractors Android layout usage validation.
  • Support for config files that are included within a nuget packages build folder. Framework authors can now include an MFractor config to enforce their framework standards by including an MFractor config file named .mfc.xml in the packages build folder.

Enhancements

  • Support for Visual Studio Mac 7.2 and above.
  • Support for Roslyn 2.3.
  • MFractor now regularly checks for updates against the addin server and let's you know when there's been a new release.
  • Enhanced code completion for MFractor configuration files.
  • Code analysis for MFractor configuration files to check for common gotchas.
  • Specify a new width and height for the highest density when you import an image with the importing wizard.
  • The Generate constructor for all readonly members will now include constructor arguments for auto properties as well as readonly fields.
  • The empty XAML attribute and node analysers have been removed as they were plain annoying (and frequently incorrect).
  • MFractor Lite now allows up to 5 pro feature uses per day.
  • Internally, MFractor now uses Roslyn's concept of text spans instead of line/columns. This significantly reduces MFractors memory footprint and improves the speed of all analysers.
  • The following features are now professional only:
    • Image tooltips.
    • Go To View Model, Go To Code Behind and Go To View.
    • Android resource IntelliSense.
  • Significantly expanded documentation, we now, where possible, show a preview of the code MFractor will generate under default settings.
  • Branded MFractor code completion.

Bug Fixes

  • Fixed: MFractor no longer bundles the Microsoft.CodeAnalysis (Roslyn) assemblies into its distribution package. This caused critical issues in VSMac 7.2 😱
  • Fixed: Upgraded MFractor to use Microsoft.CodeAnalysis (Roslyn) 2.3. This required several code generators to be upgraded.
  • Fixed: A regression in the Migrate OnPlatform code action caused it to failed.
  • Fixed: When generating property bindings with a string value, the string would inserted as syntax rather than a string literal in the view model. (EG: string myString = Hello instead of string myString = "Hello").
  • Fixed: When generating a bindable property, MFractor would always use bool as the instance property type. It will now try to infer the indended type, falling back to System.Object as a default.
  • Fixed: The XAML analyser would frequently fail to infer the BindingContext. It now uses the same MVVM resolution logic as the MVVM shortcuts.
  • Fixed: The ValueConversionAttribute would occasionally fail to generate.
  • Fixed: The Android XML text editor would always trigger license notifications.

Deprecations

  • The configurable property ImplementConversionForConvert on the value converter generator is deprecated and has been removed. Please use the code snippet to control the Convert method body.
  • The configurable property ImplementConversionForConvertBack on the value converter generator is deprecated and has been removed. Please use the code snippet to control the ConvertBack method body.