32 and 64-Bit Support
Thanks to its out-of-process architecture, CBFS Shell supports all 32-bit and 64-bit deployment scenarios:
- in 32-bit (x86) Windows
- in 64-bit (x64) Windows, for 64- and 32-bit clients (running on WOW https://en.wikipedia.org/wiki/Windows_on_Windows) simultaneously
- in ARM64 Windows, for all kinds of clients
The Shell folder server, the .NET application that you write when you use CBFS Shell, also can run in 32-bit or in 64-bit. This "server" can be hosted in two different ways:
- Option 1: As a .NET .exe. This is the easiest and preferred method and the one that is demonstrated in most CBFS Shell samples. In this case, we recommend that you compile this .exe as "Any CPU" (when possible), which will allow you, without any extra effort, to deploy your Namespace Extension to both 32-bit and 64-bit systems.
- Option 2: As a .NET .dll. In this case, the .dll also should be compiled as "Any CPU" (when possible) so it will adapt to its host program architecture.
In option 2, how your Shell folder server .NET .dll should be hosted is an architectural choice that ultimately depends on your context. You can host it in another .NET application written using your preferred .NET language or in an application written in any other language and tool (e.g., C/C++, Delphi), provided that this environment can run or host a .NET assembly by any means. Following are some possibilities for hosting a managed .NET .dll in a native program:
- COM: an obvious choice because it's fully supported by native code and .NET
- Native CLR Hosting: https://docs.microsoft.com/en-us/dotnet/framework/unmanaged-api/hosting/clr-hosting-interfaces
- DllExport for .NET assemblies: https://github.com/3F/DllExport