A tip to get rid of Microsoft.Windows.Shell dynamic link library (dll)

May 17, 2013 at 12:20 PM
Edited May 17, 2013 at 12:59 PM
In the response to a review and for myself too I managed to get ride of Microsoft.Windows.Shell

Technically, I did not really got ride of, I decompiled the dll, updated the few mistakes the decompiler made and I placed the sources in FirstFloor.ModernUI folder

To decompile Microsoft.Windows.Shell I have used the exact same file that koz redistributes Microsoft.Windows.Shell.dll v3.5.41019.1

Then I have modified namespaces to match xmlns:shell="clr-namespace:Microsoft.Windows.Shell">

Results in a larger binary (because Shell is inside) but you get more controls because you now have access to the source of Microsoft.Windows.Shell and you are no more forced to redistribute the dll Microsoft.Windows.Shell

I have 7zip the modified mui project and uploaded to my googledrive if you are interested , it has the source of Shell + the new Demo recompiled with it, working out of the box for XP aswell in Windows 8

You may need theses redistributables
NET Framework 4.0
Visual C++ Redistributable for Visual Studio 2012 Update 1

Revision: 100280 (1.0.3+) - Framework 4.0 - no shell edition - http://goo.gl/APCJ0

//edit1: Just updated gdrive package, i forgot to zip NuGet packages
May 17, 2013 at 4:44 PM
why do you wan't to get rid of the assembly Microsoft.Windows.Shell?
May 17, 2013 at 5:58 PM
Edited May 17, 2013 at 6:24 PM
Why not ? I'm just not fine with redistributing an old .NET 2.0 dll that is no more developped, I prefer to get the source so that it compiles with the same Framework I'm targeting to so I can eventually patch it myself if I find bugs
I did not invent this anyway it already exist but the only project I have found around is called WPF Shell and is outdated 2010, the sources where missing stuffs kozw uses in mui. So up is one up to date for its project

Also in Windows 8 .NET 2.0 is not activated by default so I prefer the old OS to install NET 4.0 rather than forcing Windows 8 to activate NET 2.0
May 21, 2013 at 9:03 AM
Edited May 21, 2013 at 9:03 AM
good point, i totally agree with you! i hope kozw will adopt this change in the next release of M:UI.
May 21, 2013 at 9:29 AM
Edited May 21, 2013 at 9:30 AM
I don't think he will because it is more a "cosmetic" feature that some people will appreciate but some will not too. I have made this post more for the advanced users who want to completely include kozw's project as source in their own project without deps, or the guy requesting this in the review should also appreciate if he find my thread
May 21, 2013 at 10:12 AM
i would also prefer to include kozw's project as source but i don't want to update it manually if there is a code change. Is there a way to do this automatically (like nuget)?
May 21, 2013 at 2:33 PM
Edited May 21, 2013 at 2:34 PM
With this link https://mui.svn.codeplex.com/svn/1.0/FirstFloor.ModernUI/FirstFloor.ModernUI (because svn offers checking out in sub directories)

Nor you checkout this link in your folder project or if you have your project in a svn, the cleanest way to do this is to put the link in the svn-externals property so that it will update automatically when you will Update your own project.

I do also this and once I have applied modification to the sources of mui, I right click in TortoiseSVN > Create patch, so you can reapply your own changes with just a patch file
Coordinator
May 21, 2013 at 2:51 PM
Great work guys. I'm about to start tweaking mui and will do so based on the priority in the issue tracker. Be sure to create an issue for removing the dependency, so people can vote.
May 21, 2013 at 6:10 PM
No prob I do this in a few hour
May 21, 2013 at 8:24 PM
May 22, 2013 at 9:15 AM
I hope SVN plays well with TFS. However i will give it a shoot, thank you for your help!
May 23, 2013 at 8:43 AM
I dont know TFS at all never used it. For svn I often use AnkhSvn that in,tegrates into VS and i switch from TFS to akhsvn in vs options
May 29, 2013 at 3:45 PM
Why decompile the binary? The source was originally available. I ported the original MSDN library over to github with multiple bug fixes and minor improvements. (https://github.com/joecastro/wpf-shell). At the very least you'll get the comments with the source.
May 29, 2013 at 10:32 PM
Because when I have typed wpf shell in google in returns http://archive.msdn.microsoft.com/WPFShell and the package I had tried in the download section is not compatible with the version kozw uses it had some missing Aero stuffs but thanks for the github link, looks more up to date indeed.

It seems your project page is not seo friendly because it does not even show up on the first google page when i type wpf shell the first github entry is down the page and not your project
May 29, 2013 at 11:26 PM
Edited May 30, 2013 at 3:56 AM
Ah, yeah... I had forgotten that the source release from that page was so far out of date. I suspect that kozw is referencing the version that was shipped with Ribbon. The one on my Github project page will probably have some minor discrepancies but also some different bug fixes. I tried building the mui library against my version and things seem to be working properly.

You have an excellent point about the SEO on that project. I haven't done anything to make it discoverable, and the project description is very terse. I'll see if I can make that better :)
May 30, 2013 at 1:13 AM
Edited May 31, 2013 at 3:20 PM
It is a very good sign that a few top-notch developers contributing/helping this project.