Using Nuget for your LightSwitch extensions

Why VSIX was preferred over Nuget for LightSwitch extensibility.

Nuget Nuget Nuget.

Technology is moving forward, and Nuget is one of those giant leaps that the .NET community is taking.  But why, one might ask, did the LightSwitch team then decide to use VSIX over Nuget to implement the extensibility features?

Two reasons come to mind:

1. The LightStore

The lightswitch gallery, the default source for all your VSIX extensions, comes with a fully integrated payment model.  VSIX extensions can be free, trial, or paid for.  This opens up a whole new market.  Imagine someone told you five years ago just how fast the AppStore would grow?  Well, think about it, the LightStore is here, it’s rather empty at the moment, but full of possibilities.

Nuget on the other hand, is a more open source kind of platform.  But… What if I (as a LightSwitch extension developer), am a more open source kind of guy?

2. The Visual Studio integration

As Michael Washington stated: VSIX is a deep integration into Visual Studio.  Nuget packages can not do all the things a VSIX extension can.

True, but still, do we really need the deep Visual Studio integration for every little extension we write?  Can’t we have the best of both worlds?

And of course, to the latter question, the answer is: yes we can…

Combining the best of both worlds: VSIX, meet Nuget.

The idea for this blog post series is simple.  We’re going to (try to) take any LightSwitch extension, and split it into two parts.  Some kind of simple, lightweight VSIX extension, to do the deep integration into VSIX, and one or more different Nuget packages, that handle the actual implementation of whatever we want our extension to do.

<<Update September 5th, 2011>>

Out of this idea, ExtensionsMadeEasy was born… This post doesn’t use it, so you can follow my new guide for an up to date sample.

<< /Update >>

In summary…

At this point, we have successfully used a Nuget package to change the theme of our LightSwitch application, by splitting a VSIX extension into one generic VSIX extension,  one Nuget package with the actual implementation, and having them find each other using LightSwitch’s VSExportProviderService (so basically: using MEF).

Before you leave though…  One BIG THANK YOU, to David Fowler, for helping me create the Nuget package during the (messy) migration from 1.4 to 1.5…

1 thought on “Using Nuget for your LightSwitch extensions

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s