Release Notes v3.5.0

18th of April 2018

Introduction

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

This release focuses on stabilising what MFractor already has and enhancing all of our existing features.

For example, we've added a dozen more code completions (including static resource completion), added search capabilities for static resources, included a go-to definition code action, made it super easier to generate custom renderers and have added heaps of enhancements and bug fixes.

Check it all out below!

Features

  • The Go To Implementation C# code action will find interface and abstract class implementations for a given type or member. Use this with the Option+D shortcut.
  • Use the Clean And Compress action to clean and then zip up a project or solution.
  • XAML IntelliSense:
    • Suggest available value converters in resource dictionaries.
    • Suggest a variety of commonly used types inside resource dictionaries.
    • Use the Generate Effect IntelliSense code action to quickly create a new platform specific effect.
    • When setting the row or column of an element in a grid, MFractor will suggest available row and column indexes with a summary of that row/column.
    • When setting the row span or column span of an element in a grid, MFractor will suggest available row and column spans with a summary of that span.
    • MFractor will suggest available static resources based on the current document, the app.xaml and any referenced resource dictionaries.
    • Suggest available style sheets.
    • When setting the source property on a style sheet, MFractor allows you to easily generate a new style sheet resource.
    • When adding new elements to a resource dictionary, you can use the "Generate New Value Converer" IntelliSense action to quickly create a
  • Code Actions:
    • The Generate XAML Localisation infrastructure code action will create the necessary classes to localise XAML.
    • The Generate Custom Renderers code action will create a platform specific renderer for iOS and Android for a custom control.
  • Code Analysis:
    • Inspect static resource references and validate they exist within the scope of the current document.
    • Warn when a Grid.Row, Grid.RowSpan, Grid.Column or Grid.ColumnSpan is used when the the outer type is not a grid.
  • Tooltips:
    • When you hover over a grid row or column definition, you can now see the index that row or column.
  • Search:
    • Static resources now appear in the global search bar. Press Command + Return to activate the search bar and then search for your static resources.

Enhancements

  • Support for "invisible" config files. Name a config file .mfc.xml and place it alongside a project for MFractor to import that config setting. Silent configs are designed to be included in a .gitignore so you can use MFractor configs without needing to include it into your project.
  • In IntelliSense, MFractor can now infer the binding context from the current context while you're editing your XAML. For example:
    • Support for inferring the binding context via ListView's item source while editing inside the ItemTemplate.
    • Support for custom binding contexts using the <MyXamlPage.BindingContext>< local:MyViewModel> </MyXamlPage.BindingContext> syntax.
    • Support for custom binding contexts through the BindingContext attribute. EG <... BindingContext="{x:Type local:MyViewModel}"/> or <... BindingContext="{x:Reference slider}"/>.
  • MFractor can now discover the view model for your XAML across project boundaries. For example, if your views are defined in MyApp.Views and your view models are defined in MyApp.ViewModels, when one of these project references the other, MFractor will discover the MVVM relationship and use it to power the MVVM tool-suite.
  • MFractor now let's you know that your license is expiring and directs you to re-purchase (1 week before expiry, day of expiry).
  • Significantly improved support for generating code across project boundaries.
  • When MFractor detects multiple code issues at the same location, it will display errors first, then warnings and lastly all other issues.
  • Cleaned up error messages for code analysis issues to make the issues they find more precise.
  • MFractor now saves the last window location of the localisation wizard and restores it in that same spot.
  • We've added icons for most IntelliSense suggestions to make is easily to understand what an action does at a glance.
  • MFractor now indexes all XAML files in your solution, building a resource data-base that is used to power some of our new features.

Bug Fixes

  • Fixed: Added parser support for using: syntax inside XAML namespace declarations.
  • Fixed: When converting fully qualified types into usings, the syntax reducer would collapse namespace declaration and other using statements.
  • Fixed: The syntax reducer would occasionally make the generate immutable constructor and the generate base class constructor code action fail.
  • Fixed: Don't suggest the exact same namespace for a symbol in XAML when it can't be resolved.
  • Fixed: When an assembly isn't referenced by a project, describe it clearly in the missing assembly xmlns code issue.
  • Fixed: When a symbol can't be resolved because it's namespace is unresolved, clearly say this in the code analysis issue.
  • Fixed: MFractor now supports creating custom controls or classes into other assemblies as specified by the xml namespace.
  • Fixed: When the root element in a XAML document failed to resolve it would cause a cascading effect that broke subsequent symbol resolutions and caused false code issues to be reported.
  • Fixed: For attached properties on the root XAML node, correctly resolve the symbol when the root element fails to resolve.
  • Fixed: When using go to view model or code behind and the view model or code behind is already open, MFractor will focus the document and not jump to the symbol.
  • Fixed: When navigating to a XAML symbol that has a XAML file as UI code, MFractor now opens the XAML file instead of the code behind.
  • Fixed: When generating new code in SDK style projects that used the projects default namespace, would incorrectly insert the namespace $(MSBuildProjectName) instead of evaluating it to the project name.
  • Fixed: When suggesting image assets, MFractor no longer suggests Android xml drawables.