-
Notifications
You must be signed in to change notification settings - Fork 17
Home
Welcome to the Rubberduck3 wiki!
Rubberduck 3.0 splits projects in 3 distinct parts:
- /Client libraries that run within the host process.
- /Server libraries and server executables that run outside of the host process.
- /Shared contains libraries that define types and resources used by both client and server components.
The client side of things includes the connect/disconnect add-in entry points, VBE Extensibility API COM wrappers and the unmanaged ITypeLib
API, all user interface components and their respective view models, and LSP client-side handlers.
The assembly (Rubberduck.dll
) that the VBIDE loads as COM add-in, home of the client-side composition root and referencing every client and shared library in the solution. This assembly shouldn't need to change much, beyond service registrations ...and refactorings around that.
- Rubberduck.Client
- Rubberduck.Core
- Rubberduck.Interaction (to be removed)
- Rubberduck.InternalApi
- Rubberduck.Resources
- Rubberduck.SettingsProvider
- Rubberduck.UI
- Rubberduck.UI.WinForms
- Rubberduck.UI.Xaml
- Rubberduck.VBEditor
- Rubberduck.VBEditor.VBA
- Rubberduck.VBEditor.VB6 (to be added)
This library contains the language client service that configures and starts the LSP server process, and abstractions to do the same for eventual update and telemetry server processes. It also exposes client services so a library like Rubberduck.Core
can use it to send requests and notifications to a server process; these services provide a layer of indirection between OmniSharp and the rest of Rubberduck.
- Rubberduck.Interaction (to be removed)
- Rubberduck.InternalApi
- Rubberduck.SettingsProvider
Everything the editor needs - view models, services - should be found under a dedicated namespace in this assembly.
- Rubberduck.Client
- Rubberduck.Interaction (to be removed)
- Rubberduck.InternalApi
- Rubberduck.Resources
- Rubberduck.SettingsProvider
- Rubberduck.UI
- Rubberduck.UI.WinForms
- Rubberduck.VBEditor
This assembly should be folded into Rubberduck.Core, as it it nothing more than a namespace for messagebox services and abstractions.
- Rubberduck.InternalApi
Should probably also be folded into Rubberduck.Core, as it consists of models and view models.
- Rubberduck.InternalApi
- Rubberduck.Resources
- Rubberduck.Unmanaged
Will eventually disappear, unless we decide to keep the native dockable toolwindow as an option. RD3 UI otherwise no longer needs any WinForms components.
- Rubberduck.UI
- Rubberduck.UI.Xaml
Will ultimately be just Rubberduck.UI
, with the XAML markup for every UI component in Rubberduck - even the splash window.
- Rubberduck.InternalApi
- Rubberduck.Resources
- Rubberduck.UI
Extracted from Rubberduck.VBEditor
, this assembly contains all the native Win32 code and COM wrapper types. It targets Framework 4.8.1 only because a handful of Marshal
methods are not available under .net 7.
- Rubberduck.Resources
A small library that exposes models and services shared between servers.
- Rubberduck.InternalApi
Defines the handlers, models, and services used by the language server, as well as the language server itself.
- Rubberduck.ServerPlatform
- Rubberduck.SettingsProvider
Defines abstractions and models for everything around configuration settings.
- Rubberduck.InternalApi
Defines shared models, services, extensions, etc. that must be accessible from multiple assemblies, whether on the client, server, or both sides.
- Rubberduck.Resources
Organizes and exposes bitmaps and localized strings used everywhere in Rubberduck. This library has no project references.