**IMPORTANT: MFractor v2 is only supported on Xamarin Studio. To use MFractor in Visual Studio Mac, please install MFractor v3 and above.

Release Notes - v2.10.0

6th March 2017

Download MFractor 2.10.2

Introduction

This is a summary of the changes introduced in v2.10.2 of MFractor for Visual Studio Mac.

This release is all about improving MFractors usability. You can now tap Alt+Return in Xaml documents to quickly access any fixes or refactorings at that location, the xaml analyser has been tuned for speed and a new code issue tooltip gives deeper insight into the code issue beneath it:

Accessing code actions using the quick fix menu

Features

  • The quick fix menu is now available to quickly access all Xaml actions. Tap Alt+Return in your Xaml document for a list of available code actions to appear!
  • The xaml analyser integration has been rebuilt and as such, xaml analysis is now much, much quicker. You might notice that fixable issues no longer underline in yellow; the check for available fixes is now.
  • An improved code issue tooltip now appears when you hover over a xaml or android resource. This tooltip tells you what kind of error it is (Compile time, runtime or code improvement), presents information on the issue and let's you know if any fixes are available.

Enhancements

  • Improve the can execute checking algorithms for all code actions (refactorings, issue fixes etc) to reduce the noise in the quick fix menu.

Bug Fixes

  • Fixed: When generating a view model and the view has bindings against an unknown class, previously these bindings would be missed.

##Release Notes - v2.9.4

22nd February 2017

Download MFractor 2.9.4

##Introduction

This is a summary of the changes introduced in v2.9.4 of MFractor for Visual Studio Mac.

Important: If Visual Studio Mac loses IntelliSense/Code Completion when you update to cycle 9 (XS v6.2), uninstall MFractor and upgrade to the latest version

This release focuses on keeping your Xaml tidy... you can now rename xaml namespaces, align the naming of duplicate namespace imports and format your entire Xaml document.

It's also easier than ever to build out custom controls, the new Implement Missing Members code generator can bulk implement properties or bindable properties onto custom views in your Xaml. No need to hand code bindable properties!

Hold onto your socks!

MFractor v2.9 demo

##Features

- **New Refactorings**
 - Right click on an `xmlns` declaration on the root node and select **Refactor** -> **Rename Xaml Namespace** to rename all occurrences of that namespace in the doc!
- **New Code Organisers**
 - Right click on the root xaml node and select **Organise** -> **Format** to organise your entire xaml document.
- **New Code Generators**
 - Quickly build out Grids by using the **Insert Row Definitions** and **Insert Column Definitions** actions.
 - Bulk implement missing properties on a class by right clicking on the xaml node with the missing members and selecting **Implement missing members**.
- **New Xaml Analysers**
 - Detect if the root xaml element uses a `x:Name` attribute as this is redundant.
 - Detect duplicate xaml namespaces that reference the same namespace and assembly.
 - Detect when the xaml views code behind class derives from a different type than what is declared by it's root element.
- **New Code Fixes**
 - When a xaml namespace references the same namespace and assembly, you can now rename all duplicate namespace declarations to a certain namespace to align the usages in your xaml.

##Enhancements

  • FreshMVVM style page models (EG: LoginPageModel) are now supported for view <-> view model <-> code behind association.
  • The Model suffix (EG: LoginModel) is now supported for view <-> view model <-> code behind association.
  • This release targets Visual Studio Mac v6.2.

##Bug Fixes

  • Undefined StaticResource detection has been disabled in this release.
  • Fixed: When generating view models, if a binding expression was within an undefined control property, the refactoring would fail as it could not resolve the member type. Undefined properties will now auto-generate using System.Object.
  • Fixed: When generating a static property from an x:Static expression whose outer attribute is unresolved, now default to use System.Object.
  • Fixed: When generating members or static properties onto a code behind class, sometimes the insertion point would jump to the xaml.g.cs auto-generated class.
  • Fixed: When the Visual Studio Mac Xamarin Forms Previewer is open, the refactoring engine would fail to commit text replace changes.

##Release Notes - v2.8.0

12th February 2017

Download MFractor 2.8.0

##Introduction

This is a summary of the changes introduced in v2.8.0 of MFractor for Visual Studio Mac.

This release focuses on adding new refactoring and code generation actions into the Xaml editor.

You can now sort your xaml, edit colors interactively, extract values into binding expressions and more:

MFractor v2.8 demo

##Features

 - **New Refactorings**
  - Right click on a xaml attribute property that's a `System.Drawing.Color` or a `Xamarin.Forms.Color` and edit it using the color selection dialog. This action won't be available if the attribute value is an expression.
  - Right click on a xaml attribute property that has a literal value and extract it into a `Binding` expression. This action is not available if the attribute value is an expression or the attribute does not have a corresponding bindable property.
  - **Organise Refactorings:**
      - The *Collapse Xaml Attributes* refactoring will collapse all xaml attributes onto the same line as the parent xaml node.
      - The *Expand Xaml Attributes* refactoring will expand all xaml attributes onto separate lines.
      - The *Sort Xaml Attributes* refactoring will sort the attributes for a xaml node by namespace and name.
      - The *Expand Node* refactoring takes a self-closing xaml node and generate a closing tag for it.
      - The *Collapse Node* refactoring takes a xaml node with no children and a closing tag and removes the closing tag to make the node self-closing.
 - **New Code Generators**
  - Right click on an xaml node that inherits from `Xamarin.Forms.VisualElement` or `Xamarin.Forms.Application` and select **Add Resource Dictionary** to generate a resource dictionary for that element.
 - **New Xaml Analysers**
  - Detect when an `x:Name` code-behind field declaration is empty.

##Enhancements

  • This release targets Visual Studio Mac v6.1.5
  • The Implement View Model refactoring has been moved from the Refactor menu to Generate.
  • Hover over a xaml attribute property that's a System.Drawing.Color or a Xamarin.Forms.Color to see the color value inside the tooltip.
  • The Android SDK meta-data has been removed from MFractor.mpack; you can download and update the sdk meta-data through the Help -> MFractor -> Install Android SDK Meta-Data menu item.

##Bug Fixes

  • Correctly validate the type provided to x:TypeArguments; there was a bug in the type checking algorithm.
  • Don't allow the 'Simplify' refactoring to run against expressions.
  • Fix multiple type conversion checking bugs in the ValueConversion attribute validation.

##Release Notes - v2.7.0

8th January 2017

Download MFractor 2.7.0

##Introduction

This is a summary of the changes introduced in v2.7.0 of MFractor for Visual Studio Mac.

This release adds the ability implement entire view models, introduces a dozen xaml analysers and fixes many bugs.

I recommend taking a moment to read these tutorials:

* [Implementing View Models](/xamarin-forms/implementing-view-models.md): Learn implement entire view models using the **Implement View Model** refactoring.
* [Value Converter Type Safety](/xamarin-forms/value-converter-type-safety.md): Learn to annotate `IValueConverter`s with value conversion attributes for `Converter` expression type-safety.

##Introducing View Model Generation

You already love being able to generate bindings but I've taken it to the next level this release 💪

www.mfractor.com

Got a heap of unimplemented bindings? Right click anywhere in your Xaml document and select Refactor -> Implement View Model.

MFractor will collect all the missing bindings and then generate a new class with all of those properties into a namespace named MyDefaultNamespace.ViewModels.

Does the view model already exist? Then MFractor simply inserts the missing bindings into the existing view model.

I think it'll save you enough time during the week that you may just get to Friday beers a few hours early 🍻

##Features

- By right clicking anywhere in a Xaml document, implement all missing bindings as a new or into an existing view model:
    - Implement view model properties with a getter and setter.
    - Implement view model properties with a backing field.
    - Bound properties that return `ICommand` will have an empty `Xamarin.Forms.Command` instance generated.
    - When MFractor encounters binding expressions that use a `Converter`, it inspects the converter for a `ValueConversion` attribute to deduce the input typed required. If it can't resolve the converter or the converter does not have value conversion information, it will default to using `System.Object`.
    - When implementing a new view model with getter and setters, MFractor will inspect for references to Fody's `ImplementPropertyChanged` and annotate the new class with it.
- **New Xaml Analysers:**
    - Validate that elements declared inside a resource dictionary have an x:Key.
    - Validate that elements declared inside a resource dictionary have a unique x:Key value.
    - Detect when an x:TypeArguments is used on a non-generic type and warn of incorrect usage.
    - Detect when a property setter node (`<MyClass.MyProperty/>`) references a non-existent member on the parent class.
    - Detect when a property setter attribute is empty.
    - Detect when an undefined static resource is referenced by a `StaticResource` expression.
    - Detect when the value returned by a `StaticResource` expression causes a type mismatch.
    - Detect when an unknown type is being provided to a `x:TypeArguments` attribute.
    - Validate that `OnIdiom` elements return the correct type for the outer property setter.
    - Validate that `OnPlatform` elements return the correct type for the outer property setter.
    - Detect when a developer has misused a property setter inside another xaml element. For example, `OnIdiom.Phone` doesn't make any sense when wrapped by the outer element `OnPlatform`.
    - Detect when an incorrect input type is provided to a `Converter`. The value converter must have a `ValueConversion` attribute for this to trigger.
    - Detect when an incorrect output type is returned by a `Converter` expression. The value converter must have a `ValueConversion` attribute for this to trigger.
    - Detect when multiple occurrences of the same automation ID exists within a Xaml document.
- **New Xaml Fixes:**
    - Generate missing resource dictionary keys.
    - Auto-correct misspelt `StaticResource` references.
- **New Simplify Refactorings:**
    - Attributes that use a static instance to initialize the property (eg `VerticalOptions="LayoutOptions.CentreAndExpand"`) can now be simplified to just the instance name (eg `VerticalOptions="CentreAndExpand"`).

##Enhancements

- This release targets Visual Studio Mac v6.1.3
- The **About MFractor** dialog now contains a button to copy version and IDE information into the clipboard for bug reports. See [Support - Filing A Bug Report](/faq.md#how-do-i-file-a-bug-report) for more information on filing a bug report.
- This release introduces the framework for an Xml and Xaml refactoring engine. Over time, I'll be adding Xml and Xaml refactoring operations to make code cleanup a breeze.
- Annotating value converters with a `ValueConversion(typeof(InputType), typeof(OutputType))` attribute will trigger the conversion information to render into tooltip. See [FormsCommunityToolkit.Converters](https://github.com/FormsCommunityToolkit/Converters) for examples.

##Bug Fixes

- Sometimes the Xaml document analyser would fail to load and bring down the Xaml editor. This has been fixed.
- The View < - > Code Behind navigation shortcuts would break when an AST parse was in progress. View < - > Code Behind shortcuts will now always be active.
- When property setter nodes are used (`<MyClass.MyProperty/>`), the class component is now correctly validated.
- When importing a Xaml namespace, the element is inserted on a newline and formatted to align with other attributes.
- When resolving the binding context for nested DataTemplates, sometimes the binding context resolver would fail on generics or IEnumerables
- More resilient Mvvm resolver to drive the 'Go To View Model', 'Go To Xaml View' and 'Go To Code Behind' shortcuts. MFractor will attempt to infer as best possible the associations between those 3 files.
- Save the project after adding a new file to it.


##Release Notes - v2.6.0

**31st October 2016**

**[Download MFractor 2.6.0](http://addins.mfractor.com/releases/2.06.00/MFractor.MFractor_2.06.00.mpack)**

##Introduction

This is a summary of the changes introduced in v2.6.0 of MFractor for Visual Studio Mac.

As a major release, this release adds several code generation capabilities to improve your Xaml workflow. Generate views, classes and value converters in only a few clicks...

Just right click on that little yellow squiggle and use the fix to generate a whole lotta code.

There are also more xaml code checks to watch out for nasty Xaml issues and bug fixes galore.

Enjoy!

##Features

 - **New code generation actions:**
    - Generate classes from `<my_namespace:MyMissingClass>` in xaml.
    - Generate views from `<my_namespace:MyMissingView>` in xaml.
    - Generate value converters when a missing xaml node ends with "[cC]onverter] in xaml.
 - **New Xaml analysers:**
    - For generics, validate that an x:TypeArguments attribute or xml node setter exists.
    - For generics, validate that the count of parameters provided to x:TypeArguments matches the generics signature.
    - Validate the root xaml node contains an x:Class directive to set the code behind class name and namespace.

##Enhancements

 - This release targets Visual Studio Mac v6.1.1

## Bug Fixes

 - Fix a bug in xaml namespace resolution that prevented the "import new xmlns" fix from triggering.
 - Allow importing of xaml namespaces from x:Static symbols.
 - For Setters, don't validate TargetType property that the provided type is a static member of System.Type.
 - When a symbol name matches but its in the wrong namespace, don't suggest it as a fix.
 - Remove the MFractor settings panel to fix the Visual Studio Mac preferences dialog from not opening when it didn't exist.
 - When using native view declaration, the xaml symbolicator will now honor the targetPlatform flag and find the assembly for that platform. Previously this was a naive search that used the first assembly found; using the wrong symbols if a assembly of the same name existed in both an iOS and Android project.


 ##Release Notes - v2.5.3

 **10th of October 2016**

 **[Download MFractor 2.5.0](http://addins.mfractor.com/releases/2.06.00/MFractor.MFractor_2.06.00.mpack)**

 ##Introduction

 This is a summary of the changes introduced in v2.5.3 of MFractor for Visual Studio Mac.

 This release adds support for native view declaration and property generation for missing view attributes.

 ##Features

  - Generate properties and bindable properties onto classes that implement Xamarin.Forms.ObservableObject.
  - Full support for native view declaration. Tooltips, go-to declaration, xaml analysis and code generation enabled on native views used in Xaml.

 ##Bug Fixes

  - Xaml expressions now parsed on attributes that cannot be resolved to a .NET symbol. This enables Tooltips, go-to declaration, xaml analysis and code generation.
  - The analysis engine no longer assumes that the Xamarin.Forms and Microsoft schemas are the implicit and 'x' namespaces. This means that Xamarin.Forms could be remapped to xmlns:xf etc and the xaml analyser will still function correctly.