SharpShell is a development framework designed to simplify the creation of Windows Shell Extensions using the .NET Framework. It enables developers to extend the functionality of the Windows shell without delving into complex low-level programming.
Key Features:
Comprehensive support for various shell extensions, including context menus, icon handlers, info tip handlers, drop handlers, preview handlers, icon overlay handlers, thumbnail handlers, property sheet extensions, and desk band extensions.
Streamlined development process with pre-built components and tools to accelerate the creation of custom shell extensions.
Compatibility with .NET Framework and support for both 32-bit and 64-bit environments.
Audience & Benefit:
Ideal for developers and software engineers who want to extend Windows functionality by creating custom shell extensions. By leveraging SharpShell, users can focus on building innovative solutions while minimizing the complexity of working with low-level Windows APIs. The framework ensures cross-platform compatibility and simplifies testing and deployment processes.
Installable via winget, SharpShell provides a robust foundation for developers to enhance the Windows experience through custom shell extensions.
README
SharpShell
SharpShell makes it easy to create Windows Shell Extensions using the .NET Framework.
Shell PreviewHandlers are dlls that can be registered in the system to allow you to create visually rich previews for items that are displayed directly in Windows Explorer.
Shell Icon Overlay Handlers can be really useful. They let you display an icon overlay over shell objects to provide extra information. Programs like Dropbox use these overlays to show whether files are synchronised or not.
Shell Thumbnail Handlers (or as they're sometimes known, Shell Thumbnail Providers) are COM servers that you can write to customise the appearance of the thumbnail icons in the Windows Shell.
As long as the correct components have be installed for Visual Studio, you should be able to just open the main ./SharpShell/SharpShell.sln solution to build, test and run any of the code or samples.
To build using Powershell (which is what is done in the CI/CD process), first allow Powershell to execute scripts and then install Chololatey:
Ensure your machine can run builds by installing necessary components such as nunit. Should only need to be run once.
build.ps1
Build all solutions. Ensures that we build both 32/64 bit versions of native components.
test.ps1
Run all tests, including those in samples.
coverage.ps1
Create a coverage report for the main SharpShell project (samples are not included). Reports are written to ./artifacts/coverage
These scripts will generate various artifacts which may be useful to review:
artifacts\
\build
\SharpShell # The SharpShell assembly.
\tests # NUnit Test Reportsd
\coverage # Coverage Reports
Only assemblies and binaries which need to be copied into other projects are added to the artifacts/build folder. This makes chaining more complex dependencies manageable. The solution is fairly standard, but be aware that:
SharpShell contains the SharpShellNativeBridge binaries. To update them, build the SharpShellNativeBridge solution from source and embed the new binaries.
The SharpShell assembly is copied to artifacts/build/SharpShell folder after a successful build.
The SharpShell assembly is embedded in the ServerRegistrationManager binary. The assembly is copied from artifacts/build/SharpShell prior to the server registration manager build.
All of the above steps are automated, and will run whether a build is trigger from Visual Studio, the build.ps1 script or msbuild.
Enabling Logging
A detailed guide explaining how to configure and use logging for SharpShell is at:
AppVeyor will build and publish a new NuGet package and as long as a new semver tag is pushed.
Compatibility
The goal is to maximize compatibility for platforms which are supported. For platforms which are no longer in support SharpShell may work, but is not tested.
Note: At the moment compatibility across platforms is being verified, this section of the documentation will be updated soon.
š¢ - Fully Supported; tested and verified as part of the build process
š - Partly Supported; potentially will work, but no longer formally supported or tested
š“ - Not Supported; confirmed that this will not work, unless the code is modified
Component
Compatibility
Windows
Windows 11
š¢ Fully Supported
Windows 10
š¢ Fully Supported
Windows 8.1
š Partly Supported
Windows 8
š Partly Supported
Windows 7
š Partly Supported
Visual Studio
Visual Studio 2022
š¢ Fully Supported
Visual Studio 2019
š¢ Fully Supported
Visual Studio 2017
š Partly Supported
Visual Studio 2015
š Partly Supported
msbuild
msbuild 17.3
š¢ Fully Supported
msbuild 16.11
š¢ Fully Supported
msbuild 15.9
š Partly Supported
Documentation
Documentation is still work in progress, and any contributions would be most welcome!
We have a Code of Conduct aimed at keeping the community welcoming and inclusive.
Testimonials
If you've used SharpShell and would like to add a testimonial, just send me a message!
> CmisSync, our Dropbox-like client for Enterprise Content Management servers, just switched to SharpShell,
> and we are extremely pleased with this library. Our previous custom-built Windows Explorer integration
> was buggy, unreliable and hard to maintain, and SharpShell is really rock-solid in comparison. The best
> part: It only took 2 days to integrate SharpShell into our software, testing and installer included.
> Thanks SharpShell!