Project Set Manager Visual Studio Extension

In my work I work with a rather large solution in Visual Studio on a daily basis. It contains about 200 projects, where about one third of them are C++ and the rest are .NET.  Having all projects loaded means that many things run slower when working with the solution, especially building which frequently builds a lot of projects that were not affected by the recent changes I had made.

The solution to this problem of course is to unload the projects that are not needed at the moment. However, this quickly becomes quite tedious, because there are so many of them, and there are many to unload/load on various occasions.

So to remedy this problem I decided to create an extension to Visual Studio that allows saving and restoring the state (loaded/unloaded) of all the projects in a solution.

The Alphaleonis Project Set Manager Visual Studio Extension allows saving any number of solution states and giving them a descriptive name, and the easily restore that state.

The extension can be downloaded for free from the Visual Studio Gallery.

AlphaVSS 1.1.4000.2 and 1.2.4000.2 released

Due to a bug introduced in Visual Studio 2010 SP1 the previous releases of AlphaVSS had a pretty serious bug in that all the platform-specific x86 assemblies were signed with the wrong key-file. The 1.1.4000.2 and 1.2.4000.2 releases fixes this problem. The workaround that has to be applied to your environment if you are building the sources yourself is outlined at

Release: AlphaVSS versions 1.1.4000 and 1.2.4000

AlphaVSS versions 1.1.4000 and 1.2.4000 have been released!

In addition to some bug fixes, this release contains a more full-featured sample application, called AlphaShadow, that replicates many of the features from the VShadow sample application found in the Windows SDK.

This release unfortunately introduces a few breaking changes that will require you to modify your existing applications. The most important one is the removal of the IVssAsync interface. To adapt the standard asynchronous programming model (APM) of .NET this interface was exchanged for IVssAsyncResult which implements the standard System.IAsyncResult interface from .NET. The adoption of the standard APM also means that the methods that previously returned an IVssAsync
instance now has become synchronous and returns void. For example the method DoBackupSet in IVssBackupComponents now does not return until the operation is complete. In addition to this methods the method BeginDoSnapshotSet is provided which returns an IAsyncResult, and EndDoSnapshotSet that waits for the operation
to complete.

As usual the library is found at

Two new versions of AlphaVSS released!

It has been a long time since AlphaVSS 1.0 Beta was first released. A little over two years to be precise. The original plan was of course to go from beta to final in a month or two, but for reasons I’ve rambled way too much about already that didn’t happen.

So it is now with great pleasure I release two new beta versions of AlphaVSS!

"Wait? What? Two new versions? Beta… again!?", I hear you ask. Well, the fact that they are still beta versions and no final version is simply due to the fact that quite a few things have changed in the source code and projects with the move to Visual Studio 2010, and I have not yet had the time to test everything thoroughly. After all, that is kind of what a beta version is there for. So I ask you to help me in this task and report any errors/bugs that you may find. Also, I want a better sample application for the final, and I have not had time to write that yet. And some of you have asked me to put up a release of the latest version because of all the hassles of building this library, so therefore I wanted to get it published as soon as possible.

So why two versions? Well, as it turns out using a mixed mode assembly (which the AlphaVss.Platform.* assemblies are) built for .NET 2.0 framework in a .NET 4.0 application is not as straightforward as one might have thought. It requires some special configuration in the App.config to work, but this have other implications as well which may not be desired. So the best way to solve that was simply to build AlphaVSS against .NET 4.0 instead. But I didn’t want to abandon anyone still using older .NET versions either, and managing to target both frameworks within the same solution just isn’t feasible, so therefore there are now two versions. 1.1 and 1.2.

They are built from more or less exactly the same source  code, so there should be no difference functionality-wise, the only difference is the target framework for which they are built.

The 1.1 version will be the last version made for the .NET 2.0 framework. All future development (except for bug-fixes) will be done for .NET 4.0, i.e. on the 1.2 code base.

Anyway, I hope you find use for this and that you help out by reporting any bugs you find. 

I promise that I will do my best to make these versions go final within a couple of months at the latest.

What’s new?

  • AlphaVSS is now built using Visual Studio 2010 (together with Visual Studio 2008 for version 1.1). This doesn’t affect anyone using the library very much, but it feels really good to have gotten that conversion done and tidying up quite a few things in the project management area.
  • Some bug-fixes of course. Not that many since not very many bugs have been found that could be reproduced and traced back to AlphaVSS. (The VSS API’s are not straightforward to use so it’s quite easy to get things wrong and mess up when trying to code against these API’s).
  • Most classes in AlphaVSS are now marked as Serializable.
  • The DLL-files have a new naming scheme, see the documentation for more details.
  • Several new interfaces and methods introduced in Windows 7 and Windows Server 2008 R2 have been added.
  • AlphaVSS version 1.2 is built targeting the .NET 4.0 framework, simplifying and enhancing the use of AlphaVSS in a .NET 4.0 application.

And as always the latest releases and source code of AlphaVSS are available at

Site working again

I just discovered that no links on this site worked any more. Seems that mod_rewrite had been disabled for some reason.

Anyway, that should be fixed now. Although I guess most of you may not care much since I haven’t updated this page for about a year.

But there may be something new coming up with both AlphaVSS and AlphaFS in the not too distant future. :)

Vacation = web-development!?

Finally I am on vacation for three short weeks. And what better way to spend a vacation than by doing web-”development”? Well… any way would be better pretty much, but since I had to take down the webpage I created for a good friend of mine about a year ago due to continous hacker sabotages, I felt it was time to give him a new page. So now is also powered by WordPress.

Why development of AlphaVSS and AlphaFS suddenly slowed down…

When I started developing AlphaVSS and AlphaFS I was in the final stages of my Master Thesis project at Chalmers Univeristy, and looking for a job. This meant I had a whole lot of spare time, and development of these two libraries progressed quite quickly.

In November 2008 I got a job as a developer at iCore Solutions AB and unfortunately this meant that my spare time suddenly was a lot more limited. Furthermore, working as a developer in .NET means I spend at least 8 hours a day at work in front of Visual Studio.  Needless to say, that significantly reduces the wish to spend your spare time in front of the computer doing the same thing.  So this means that lately the development and activity of both these libraries has come close to a standstill.

Another reason for the slowdown is that they are both in beta stage, but not enough feedback has been received as to make the decision to go final.

Anyway, I just wanted to let you know that I have not abandoned these projects, and I intend to continue developing them, however the pace is unfortunately severely reduced.

If you feel you have the time, and will to contribute to either of these projects, please don’t hesitate to let me know as any help would be greatly appreciated.

And also, if you have any feedback, both negative and positive on any of these projects, please let me know!

AlphaVSS 1.0 (alpha) released

Due to a major effort over the holidays we managed to get AlphaVSS 1.0 (alpha) out. This release contains many new features, most prominently probably the dynamic loading of the platform specific assemblies. Hence, no need to compile multiple versions of your executable for each platform you want to support (unless you need to for other reasons).

For more information and downloads, go to AlphaVSS on CodePlex.

Happy New Year!

I just wanted to wish everyone who may be reading this a very happy new year.

As for me I’ve been working at a new job as a professional .NET developer since November now, and I really enjoy it, even though it gives me so much less time to work on my hobby projects compared to when I was a full-time student.

However I took a few days over the holidays that I spent on AlphaVSS and we are really getting close to a 1.0 release now. 0.8 was released a few days ago, and work has really been progressing quite rapidly since. Implementation-wise there are not many more features to take care of before 1.0. Lots of testing and some documentation work has to be done still of course, and some coding that needs to be taken care of before we can se 1.0 final, but we’re getting there anyway.

But for now, enjoy your new year, and please let me know if you’re using one of my projects. I am interested in both successes and failures to use my projects… because after all, if noone is using them, why bother to do anything more than what I need myself?

Happy new year again! Looking forward to hearing from you in 2009.