https://github.com/reactivemarbles/Extensions.Hosting
An Extension of the Microsoft.Extensions.Hosting library with the aim of allowing windows applications to use the hosting base.
https://github.com/reactivemarbles/Extensions.Hosting
extensions hosting microsoft plugin reactiveui service winforms winui wpf
Last synced: 3 months ago
JSON representation
An Extension of the Microsoft.Extensions.Hosting library with the aim of allowing windows applications to use the hosting base.
- Host: GitHub
- URL: https://github.com/reactivemarbles/Extensions.Hosting
- Owner: reactivemarbles
- License: mit
- Created: 2023-07-24T22:03:10.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-05-18T13:20:45.000Z (11 months ago)
- Last Synced: 2024-10-30T00:11:05.503Z (6 months ago)
- Topics: extensions, hosting, microsoft, plugin, reactiveui, service, winforms, winui, wpf
- Language: C#
- Homepage:
- Size: 907 KB
- Stars: 4
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
NOTE: The namespacing has been changed to ReactiveMarbles.Extensions.Hosting. Please update your references to the new namespace.
# ReactiveMarbles.Extensions.Hosting
An Extension of the Microsoft.Extensions.Hosting library with the aim of allowing windows applications to use the hosting base.#### ReactiveMarbles.Extensions.Hosting.Identity.EntityFrameworkCore.Sqlite
 ```C#
.UseWebHostServices((whb, services) =>
{
services.UseEntityFrameworkCoreSqlite(whb, "DefaultConnection")
.Configure(options =>
{
// Configure options
});
})
```#### ReactiveMarbles.Extensions.Hosting.Identity.EntityFrameworkCore.SqlServer
 ```C#
.UseWebHostServices((whb, services) =>
{
services.UseEntityFrameworkCoreSqlServer(whb, "DefaultConnection")
.Configure(options =>
{
// Configure options
});
})
```#### ReactiveMarbles.Extensions.Hosting.MainUIThread
 Used to run the main UI thread in a Wpf / WinUI / WinForms application.
#### ReactiveMarbles.Extensions.Hosting.Plugins
 ```C#
.ConfigurePlugins(pluginBuilder =>
{
Console.ForegroundColor = ConsoleColor.Yellow;
Console.WriteLine("Running using dotNet {0}", Environment.Version);//// Specify the location from where the Dll's are "globbed"
var process = Process.GetCurrentProcess();
var fullPath = process.MainModule?.FileName?.Replace(process.MainModule.ModuleName!, string.Empty);
Console.WriteLine("Add Scan Directories: {0}", fullPath);
pluginBuilder?.AddScanDirectories(fullPath!);//// Add the framework libraries which can be found with the specified globs
pluginBuilder?.IncludeFrameworks(@"\netstandard2.0\*.FrameworkLib.dll");//// Add the plugins which can be found with the specified globs
var runtime = targetRuntime ?? Path.GetFileName(executableLocation);
Console.WriteLine(@"Include Plugins from: \Plugins\{0}\{1}*.dll", runtime, nameSpace);
pluginBuilder?.IncludePlugins(@$"\Plugins\{runtime}\{##YourPluginNameSpace##}*.dll");
Console.ResetColor();
})
``````C#
///
/// This plug-in configures the HostBuilderContext to have the hosted services
///
public class Plugin : PluginBase
{
}
```#### ReactiveMarbles.Extensions.Hosting.PluginService
 ```C#
await ServiceHost.Create(
typeof(Program),
args,
hb => hb, // Configure the HostBuilder
host => {}, // Configure the Host
nameSpace: "ReactiveMarbles.Plugin").ConfigureAwait(false);
```#### ReactiveMarbles.Extensions.Hosting.ReactiveUI.WinForms
 ```C#
.ConfigureSplatForMicrosoftDependencyResolver()
.ConfigureWinForms()
.UseWinFormsLifetime()
```#### ReactiveMarbles.Extensions.Hosting.ReactiveUI.WinUI
 ```C#
.ConfigureSplatForMicrosoftDependencyResolver()
.ConfigureWinUI()
.UseWpfLifetime()
```#### ReactiveMarbles.Extensions.Hosting.ReactiveUI.Wpf
 ```C#
.ConfigureSplatForMicrosoftDependencyResolver()
.ConfigureWpf()
.UseWpfLifetime()
```#### ReactiveMarbles.Extensions.Hosting.SingleInstance
 ```C#
.ConfigureSingleInstance(builder =>
{
builder.MutexId = "{ea031523-3a63-45e5-85f2-6fa75fbf37ed}";
builder.WhenNotFirstInstance = (hostingEnvironment, logger) =>
{
// Application already started, this is another instance
logger.LogWarning("Application {0} already running.", hostingEnvironment.ApplicationName);
};
})
```#### ReactiveMarbles.Extensions.Hosting.WinForms
 ```C#
.ConfigureWinForms()
.UseWinFormsLifetime()
```#### ReactiveMarbles.Extensions.Hosting.WinUI
 ```C#
.ConfigureWinUI()
.UseWpfLifetime()
```#### ReactiveMarbles.Extensions.Hosting.Wpf
 ```C#
.ConfigureWpf()
.UseWpfLifetime()
```