Thursday 25 February 2016

Ninja Coder for MvvmCross and Xamarin Forms for Visual Studio 2015



 

So first of all thoughts on Microsoft buying of Xamarin.

Well its something all followers of Xamarin thought might happen and now it has.

As with all Microsoft purchases you never know quite how it will work out - they have a chequered history of acquisitions.

There is no doubt that Xamarin licenses are too expensive to indie developers and the Xamarin code base - especially Visual Studio integration and Xamarin Forms has far too many bugs to be acceptable for such a high cost to developers.

Additionally communication has been patchy at best from Xamarin and non-existent at times!

There doesn’t seem to be a public roadmap for Xamarin products either.

That all sounds very negative on my part - but if things turn out well with the Microsoft and Xamarin love in all the above is solvable given Microsoft's vast resources :-)


Now to the reason for this blog post!

It has taken much longer than I thought it would be I’m just about there with Ninja Coder for Visual Studio 2015.

The biggest challenge was moving from a 'studio add-in' to a 'vs-package' - You would assume that would be quite straight forward especially as I had kept almost all the code in a separate assembly away from the 'add-in' assembly.

The truth is it has been painful - additional complexity was around getting the Vsix installer working  - better documentation around these 2 things from Microsoft would have helped!!

This version also supports the recently launched MvvmCross 4.0 - mainly namespaces changes for me to update (quite a few of them!!!)


Other highlights that have been introduced in the new shiney version include:-
  • Support for Adding Xamarin Forms Dependency Services
  • Support for Adding Xamarin Forms Custom Renderers
  • Support for Adding Xamarin Forms Effects 
  • Support for Xib files in MvvmCross iOS projects
  • Suppot for Storyboard files in MvvmCross iOS projects
  • The ability to select the Startup project on the Finish screen of the 'Add Projects' wizard
  • Support for Xamarin Forms Build time compilation 
  • Coding style improvements - support for removal of file headers and xml comments and 'this' pointer
  • Several UI tweaks and improved options

This version of the Ninja Coder is currently in beta testing - if you would like to test (please help!!!) get in touch via twitter @asudbury

thanks

adrian.















Monday 17 February 2014

Ninja Coders for MvvmCross Part 8

 
VS2013 we have lift off!
 
 
Support for VS2013 is now here - this has been the number one request by far - so enjoy :-).

Other note worthy things :-
 
The first thing you will notice is that the Ninja has had a makeover (or lick of paint as we say in the UK)! For better or worse I've moved the UI to WPF and used a metro style theme. You will be happy to know you can change the theme colors via the options screen as shown below.
 
 
 
Other things that have changed are back tracking a bit on testing and mocking frameworks - I started with MSTest and then moved to NUnit (both with Moq mocking framework)
 
Now I support both MSTest and NUnit plus Moq, RhinoMocks and NSubstitute as mocking framework (will attempt Microsoft Fakes at some point - any help with this would be great!)
 
Frameworks can be changed via the options screen as shown below.
 
 
 
User Plugins now supported. This means you can add your own plugins to the Ninja (and also override current ones defined to the system) - All you need to do is copy your plugin to the user directory following the plugin naming convention and hey presto it should appear as an available plugin to install.
 
 
 
Still work in progress but you will be able to select different View templates - at the moment you can select blank, sample data and web. I can see more views coming time permitting - which should make it easier to jump start development.
 


The Ninja now has an in built update notification facility too!

There are other bug fixes and minor enhancements, there a couple of things that need some work but I was keen to get this release out to support VS2013 and MvvmCross v3.1.

As always feed is welcome.
 
 
 
 
 

Saturday 26 October 2013

Ninja Coders for MvvmCross Part 7


 

Its all about the community.

Ninja for MvvmCross version 2.2.0 is now available for download.

The focus of this release has been on improving the plugin support and also nuget integration  especially around plugins.

The following core plugins have been added to the list :-

  • FieldBinding
  • JsonLocalisation
  • MethodBinding

To try and improve the discoverability of plugins I have added the following community developed plugins :-

  • AppId
  • Bitmap
  • Connectivity
  • FaceTime
  • Settings
  • SimpleWebToken
  • SMS
  • Sqlite (Community version)
  • UserInteraction
  • Vibrate 





Please note that some of these community plugins are not available via nuget,
in cases where this happens the ninja will install the local version.

Some minor bugs have also been fixed and some performance improvements have been made.

Wednesday 9 October 2013

Ninja Coders for MvvmCross Part 6

 
 
 

Sometimes no change is good.


 
Version 2.1.0 of the Ninja Coder for MvvmCross is now available for download from the Visual Studio gallery.
 
Again its not that exciting. Version 2.1.0 is now built with MvvmCross 3.0.13 and there have been a couple of small changes.
 
Change No. 1 is a link to the MvvmCross Plugins Wiki page from the 'Add Plugins' option.
 
Change No. 2 In the 'Add ViewModel and Views' option you now have the ability to set which ViewModel the newly created ViewModel was navigated from and also which ViewModel the newly created ViewModel will navigate to!
 
I told you they weren't very exciting!
 
I am working hard on providing the 'Add Service' functionality. I am in the middle of creating services for :-
 
  • LocationService
  • SqliteDataService
  • WebRequestService
  • DropBoxService

and also plan to add in my first release :-

  • AzureMobileService (though I must admit its still very early)


The problem is its turning out to be a lot of work :-(


 

Friday 6 September 2013

Ninja Coders for MvvmCross Part 5

 
 
 

It's all about options.

 
Version 2.0 of the Ninja Coder for MvvmCross is now available for download from the Visual Studio gallery.
 
Well that's the good news, the bad news is there isn't that much new functionality, but what we do have is options, hopefully some very useful options.
 
I always wanted the Ninja to work on a train with no internet connection so everything needs to work from the local machine.
 
The no connection mode of operation will always be the cornerstone of the Ninja, however to progress the Ninja to where I would like it to be it is going to need an online mode of operation.
 
Having an online mode of operation means its easier to install MvvmCross updates - in an offline world I would need to package up a setup program to be installed onto the local machine.
 
MvvmCross solutions can be created via Nuget and I have know taken the decision to support both Nuget and offline mode in the Ninja!
 
 
For some people this is a big deal, for others not so.
 
Who would have thought one little checkbox would cause me so much work!!

 

 
 
What actually happens is everything is installed in the offline mode and then removed and then Nuget commands are launched which
download the relevant code and assemblies from the Nuget service.
 
The Nuget service approach is quite a bit slower than the offline mode so I would recommend not using the Nuget option .  I will try and keep the offline mode of operation update with MvvmCross updates as I can.
 
Some people like the fact that they can be notified if the MvvmCross nuget packages have been updated by @slodge and allows them to update very easily.
 
Moving to some new options that have been implemented with version 2.0.0.
 
Below we can see the new options screen in the Ninja.
 
 
 
ReSharper can get in the way when building MvvmCross solutions especially on slow machines so an option has been created to suspend ReSharper while the solution is created (and will be restarted after!).
 
The option to include the lib folder (and its contents) in the solution is now an opt in option for those that like all their files in the solution.
 
Coding Style is always a contentious issue - Everyone things that the way they code is the way to do it. Removing file headers and the default xml comments are both options. Coding style may be more configurable in the future, it will depend on community feedback.
 
Options to set the defaults for Nuget also on this screen.
 
I'm off on holiday now - I think I've deserved it - will pick things up again in a couple of weeks time (though laptop is going with me so who knows!) - I'm not sure what next for the Ninja - do I leave as it is? or do I move it forward to try and be more helpful - answers on a postcard (or tweet me at @asudbury)