So first of all let me explain what I want to achieve:
I want to create a basic .NET Core console application which is responsible for loading external extensions (more on this later on), listening for events, connection handling etc.
Let’s assume this application is a Discord bot or Amazon’s Alexa. It is responsible for starting, shutting down, connecting and so on.
But you want to provide a system to extend this basic application with a plug n play system. So instead of extending the core repository you would create another repository with a .NET Core library which provides a new feature/command/skill.
At the end you would have a core application in one repository and multiple repositories extending the core application.
How to develop this?
- Developer A creates the core application in a repository myApp.core
- Developer B wants to create a “Hello World” command in a separate repository myApp.extensions.hello-world
- Developer C wants to create a “Ping” command in a separate repository myApp.extensions.ping
Developer A could work on the application it’s easy to test locally.
Developers B and C create libraries for their features. To get their libraries loaded into the application Developer A loads all DLL files from a specific directory “Extensions” during startup.
But how could Developers B and C test their new features if they want to debug the libraries in their IDEs? They can’t run that library so they have to test that library by running the core application.
Things might get tricky if developer A is an employee and developer B and C are just customers creating their own commands but don’t have access to the core application.
So how would developers B and C debug their libraries locally then? Are there any better approaches for this? Maybe Docker helps out?