Release Notes v3.4.0

January 25th 2018

Introduction

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

This release adds an MFractor powered XAML IntelliSense engine!

The MFractor XAML editor is a dramatic improvement on Visual Studio for Macs default IntelliSense. MFractors IntelliSense has feature parity and injects a lot of MFractors smarts into the XAML editing experience.

Initially we've added obvious auto-completions to take the friction out of what you're currently working on; for example, we suggest available properties when creating a style setter based on the styles TargetType, suggest available images when editing an image source or even suggest available properties for databinding when MFractor can infer the view model.

We've also revamped our free licensing model; previously we had several feature groups as free and allowed up to 5 pro features per day; this licensing model was confusing, hard to communicate and didn't let you fully evaluate what you'd get by upgrading to MFractor Professional.

To simplify our free tier, we now allow unlimited use of all of MFractor's features in 2 XAML files per day. After you've used your 2 documents per day, Visual Studio for Mac will revert back to it's original behaviour. Additionally, all C# refactorings and inspections are still available in only MFractor Professional.

Features

  • XAML IntelliSense:
    • Feature parity with Visual Studio Macs XAML IntelliSense.
    • The ability to generate property bindings from XAML when MFractor can resolve the ViewModel. This is intentionally deactivated in DataTemplates, ResourceDictionaries and the App.xaml.
    • Suggest all available properties when the view model for a XAML view can be resolved.
    • Suggest FontSizes such as Micro, Small, Large etc
    • When in a GridUnit element, suggest Auto and *.
    • Suggest the .Behaviors property for VisualElements and suggest available behaviors.
    • Suggest the .Effects property for VisualElements and suggest available effects.
    • Suggest the .Triggers property for VisualElements and suggest available triggers.
    • Suggest the .GestureRecognizers property for Views and suggest available gesture recognisers.
    • Suggest Style, Color, String, Double, OnIdiom and OnPlatform inside resource dictionaries.
    • In Styles, suggest Setters and available styleable controls in the TargetType property.
    • In Setters, suggest properties and relevant property values based on the TargetType of the parent style.
    • In Triggers, suggest properties and relevant property values based on the TargetType.
    • For colors, you can now open a color picker while coding XAML.
    • For colors, you now have access to all Xamarin.Forms colors.
    • For an ImageSource, MFractor will provide available images from Android (drawable/mipmap) and iOS (Resources/image catalogs) projects.
    • For an ImageSource, you can now open the Image Wizard to quickly import an image into your project.
    • For OnPlatform, suggest available platforms inside On elements and provide relevant completions based on the x:TypeArguments.
    • For OnIdiom, provide relevant completions based on the x:TypeArguments.
    • Suggest the MergedDictionaries property in resource dictionaries.
    • Suggest available resource dictionaries to merge in ResourceDictionary.MergeWith and ResourceDictionary.MergedDictionaries properties.
    • Full native view declaration editing support.
  • New MFractor options panel under Visual Studio -> Preferences -> MFractor.
  • Use the Delete Output Folders action to quickly delete the bin and obj folders for a solution or project.
  • New C# refactoring to simplify a fully qualified type by introducing a using for its namespace (EG: System.IO.Path becomes Path + using System.IO;);

Enhancements

  • Intelligent prioritisation of XAML completion suggestions.
  • The amount of information displayed in the XAML tooltips has been reduced as it was a bit too much.
  • Under settings, you can now turn off automatic code formatting. You should use this if you want to preserve the structure of code snippets when MFractor inserts them into your code.
  • Under settings, you can set MFractor to prompt you to choose the location to insert code or for MFractor to insert it automatically.
  • In the image wizard, when you start changing the width or height of the importing image, the Resize checkbox is automatically enabled.
  • The .droidres directory that MFractor creates alongside a solution has been renamed to .mfractor.
  • Significantly reduced distribution size. We've shaved 30mbs off the final MFractor distribution bundle.
  • New licensing model of 2 XAML documents per day.
  • When generating new code files or code insertions, MFractor will now convert fully qualified types into a using directive to cleanup code that it generates.
  • MFractors C# code actions are now integrated with Visual Studio Macs Quick Fix menu.

Bug Fixes

  • Fixed: The FontSize analyser would incorrectly report Default as an error.
  • Fixed: The Generate Interface code action would occasionally include the entire project folder. 😱
  • Fixed: The Generate Interface code action now correctly generates out and ref parameters in methods.
  • Fixed: The image wizard would occasionally lock Visual Studio due to a threading issue when adding the downsampled images into the project structure.
  • Fixed: The missing image analyser would fail when a project had no images in it.
  • Fixed: The missing image analyser now detects image catalogs on iOS.

Deprecations

  • Deprecated: MFractor no longer inspects XAML view resources to validate only resource dictionaries are used. This is irrelevant with coming StyleSheet support.