BaseHost 1.0.0.143-beta
See the version list below for details.
dotnet add package BaseHost --version 1.0.0.143-beta
NuGet\Install-Package BaseHost -Version 1.0.0.143-beta
<PackageReference Include="BaseHost" Version="1.0.0.143-beta" />
paket add BaseHost --version 1.0.0.143-beta
#r "nuget: BaseHost, 1.0.0.143-beta"
// Install BaseHost as a Cake Addin #addin nuget:?package=BaseHost&version=1.0.0.143-beta&prerelease // Install BaseHost as a Cake Tool #tool nuget:?package=BaseHost&version=1.0.0.143-beta&prerelease
Purpose
This is used as the foundation of my other C# projects. It provides some common bits of setup with are often needed. It sets up a configured host which uses my config module, my console module, Autofac and NLog. There is also a code generator which will create builders for any class [BuilderPattern].
How to use
Host
This is how a host can be setup, you'll need to add your own nlog config
public class Host : ConsoleHost{
public static void Main(string[] args) => new Host().Start(args);
protected override void Setup(ContainerBuilder builder){
builder.AutoActivateWith<Controller>(i => i.Start());
}
public class Controller{
public Controller(ILogger logger){...}
public void Start(){...}
}
}
Builder Generator
The generator will create a builder class, also add methods for each public property with a private mutator, With(value), Update(Func<value,value>). It will also make special use of ImmutableArray, ImmutableDictionary and ImmutableHashSet
Example model class
[BuilderPattern]
public partial class Model
{
public string Value { get; private set; }
}
generated class
public partial class Model
{
private Model () { }
public Builder AsBuilder() => Builder.BasedOn(this);
public static Builder CreateBuilder() => Builder.Instance();
public Mutable AsMutable() => new Mutable(){
Value = this.Value,
};
public Model WithValue(string value) => AsBuilder().WithValue(value).Build();
public Model UpdateValue(Func<string,string> valueFunc) => AsBuilder().UpdateValue(valueFunc).Build();
public sealed partial class Builder {
private Model _instance = new Model();
private Builder() { }
internal static Builder Instance () => new Builder();
internal static Builder BasedOn(Model reference) => Instance ()
.WithValue(reference.Value);
public Builder WithValue(string value){
_instance.Value = value;
return this;
}
public Builder UpdateValue(Func<string,string> valueFunc){
_instance.Value = valueFunc(_instance.Value);
return this;
}
public Model Build() {
var local = _instance;
_instance = null;
local = local.GetValidatedInstance();
return local;
}
}
public sealed class Mutable {
public string Value {get; set; }
public Model AsImmutable() => Model.CreateBuilder()
.WithValue(this.Value)
.Build();
}}}
Console
There are shells, console and commands. shells run on a console, and have access to commands. new commands can be registered and them will be accessable from all the consoles. There are some commands included, for shutdown/get-starting-args/config and more commands can be registered in ICommandManager
There is also a websocket interface for this.
var shutdown = new Shutdown();
_commandManager.Register("get-starting-args",args);
Config
A config can be given in the form of a json file (Host.config.json), if no json file is provied one will be generated and saved in output at runtime. Config is specified as below:
[ConfigValue(Name = "ws_pokemon_server_path", DefaultString = "ws:bhah.blah.blah:12")]
private static string ConnectionString => Config.ws_pokemon_server_path; //Config is generated at build time
Extention Methods
Lots of extention methods, covering a variety of functionality, ienumerable/observables/funcs ..., not really much structure, just whaterver I've found useful
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- Autofac (>= 6.3.0)
- CommandLineParser (>= 2.8.0)
- Newtonsoft.Json (>= 13.0.1)
- NLog (>= 4.7.13)
- System.Collections.Immutable (>= 6.0.0)
- System.ComponentModel.Annotations (>= 5.0.0)
- System.Reactive (>= 5.0.0)
- WebSocketSharp-netstandard (>= 1.0.1)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on BaseHost:
Package | Downloads |
---|---|
BaseHost.Web
Configured host, with generators, modules for logging, console and config |
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
1.2.33 | 39 | 11/28/2024 |
1.2.32 | 45 | 11/22/2024 |
1.2.31 | 39 | 11/19/2024 |
1.2.29 | 32 | 11/18/2024 |
1.2.26 | 40 | 11/4/2024 |
1.2.25 | 40 | 11/3/2024 |
1.2.24 | 39 | 11/3/2024 |
1.2.23 | 45 | 10/22/2024 |
1.2.22 | 52 | 10/4/2024 |
1.2.21 | 52 | 9/25/2024 |
1.2.20 | 45 | 9/12/2024 |
1.2.19 | 60 | 9/2/2024 |
1.2.18 | 46 | 8/15/2024 |
1.2.17 | 55 | 8/15/2024 |
1.2.16 | 45 | 8/9/2024 |
1.2.15 | 43 | 8/9/2024 |
1.2.14 | 46 | 8/9/2024 |
1.2.13 | 47 | 8/9/2024 |
1.2.12 | 49 | 7/30/2024 |
1.2.11 | 45 | 7/30/2024 |
1.2.10 | 46 | 7/30/2024 |
1.2.7 | 73 | 7/4/2024 |
1.2.6 | 59 | 7/4/2024 |
1.2.5 | 57 | 7/3/2024 |
1.2.1 | 52 | 7/3/2024 |
1.0.0.201 | 107 | 6/30/2024 |
1.0.0.200 | 100 | 6/30/2024 |
1.0.0.172 | 582 | 9/28/2023 |
1.0.0.171 | 800 | 4/23/2023 |
1.0.0.170 | 787 | 4/16/2023 |
1.0.0.169 | 757 | 4/16/2023 |
1.0.0.168 | 733 | 4/16/2023 |
1.0.0.167 | 755 | 4/14/2023 |
1.0.0.166 | 786 | 3/19/2023 |
1.0.0.165 | 785 | 3/18/2023 |
1.0.0.164 | 875 | 1/7/2023 |
1.0.0.163 | 887 | 1/1/2023 |
1.0.0.162 | 863 | 12/30/2022 |
1.0.0.161 | 865 | 12/30/2022 |
1.0.0.160 | 852 | 12/16/2022 |
1.0.0.159 | 861 | 12/16/2022 |
1.0.0.153 | 1,005 | 6/26/2022 |
1.0.0.152 | 1,022 | 6/25/2022 |
1.0.0.151 | 1,027 | 6/25/2022 |
1.0.0.151-beta | 719 | 6/25/2022 |
1.0.0.150 | 1,006 | 6/25/2022 |
1.0.0.150-beta | 681 | 6/25/2022 |
1.0.0.149 | 998 | 6/23/2022 |
1.0.0.149-beta | 695 | 6/23/2022 |
1.0.0.148 | 1,006 | 6/21/2022 |
1.0.0.148-beta | 719 | 6/21/2022 |
1.0.0.147 | 1,037 | 4/20/2022 |
1.0.0.147-beta | 719 | 4/20/2022 |
1.0.0.146 | 1,027 | 1/16/2022 |
1.0.0.146-beta | 730 | 1/16/2022 |
1.0.0.145 | 1,035 | 1/16/2022 |
1.0.0.145-beta | 726 | 1/16/2022 |
1.0.0.144-beta | 743 | 1/16/2022 |
1.0.0.143-beta | 703 | 1/16/2022 |
1.0.0.141 | 1,064 | 1/15/2022 |
1.0.0.141-beta | 733 | 1/15/2022 |
1.0.0.140 | 1,041 | 1/11/2022 |
1.0.0.140-beta | 712 | 1/11/2022 |
1.0.0.139-beta | 743 | 1/11/2022 |
1.0.0.138-beta | 743 | 1/10/2022 |
1.0.0.135 | 869 | 12/22/2021 |
1.0.0.135-beta | 745 | 12/22/2021 |
1.0.0.132-beta | 735 | 12/22/2021 |
1.0.0.131-beta | 742 | 12/4/2021 |
1.0.0.130-beta | 719 | 12/2/2021 |
1.0.0.129-beta | 723 | 12/1/2021 |
1.0.0.128-beta | 739 | 12/1/2021 |
1.0.0.127-beta | 726 | 12/1/2021 |
1.0.0.126-beta | 1,398 | 12/1/2021 |
1.0.0.125-beta | 1,463 | 12/1/2021 |
1.0.0.124-beta | 738 | 12/1/2021 |
1.0.0.123-beta | 1,582 | 11/29/2021 |
1.0.0.122-beta | 1,490 | 11/29/2021 |
1.0.0.121 | 1,938 | 11/28/2021 |
1.0.0.121-beta | 1,809 | 11/28/2021 |
1.0.0.120 | 851 | 11/28/2021 |
1.0.0.120-beta | 730 | 11/28/2021 |
1.0.0.119 | 866 | 11/27/2021 |
1.0.0.119-beta | 705 | 11/27/2021 |
1.0.0.118-beta | 722 | 11/27/2021 |
1.0.0.117-beta | 718 | 11/27/2021 |
1.0.0.116-beta | 743 | 11/27/2021 |
1.0.0.113-beta | 720 | 11/27/2021 |
1.0.0.112-beta | 746 | 11/27/2021 |
1.0.0.111-beta | 1,881 | 11/27/2021 |
1.0.0.110-beta | 1,884 | 11/27/2021 |
1.0.0.109-beta | 1,770 | 11/27/2021 |
1.0.0.108-beta | 1,755 | 11/26/2021 |
1.0.0.107-beta | 1,927 | 11/26/2021 |
1.0.0.105 | 897 | 11/8/2021 |
1.0.0.105-beta | 782 | 11/8/2021 |
1.0.0.104-beta | 773 | 11/8/2021 |
1.0.0.103-beta | 793 | 11/8/2021 |
1.0.0.102 | 913 | 11/8/2021 |
1.0.0.102-beta | 829 | 11/8/2021 |
1.0.0.101 | 935 | 11/8/2021 |
1.0.0.95 | 906 | 11/6/2021 |
1.0.0.94 | 923 | 11/6/2021 |
1.0.0.91 | 929 | 11/4/2021 |
1.0.0.90 | 971 | 11/2/2021 |
1.0.0.89 | 906 | 11/1/2021 |
0.0.200 | 60 | 7/2/2024 |
0.0.199 | 54 | 7/2/2024 |
0.0.198 | 54 | 7/2/2024 |
0.0.6.84 | 977 | 11/1/2021 |
0.0.6.83 | 972 | 11/1/2021 |
0.0.6.81 | 973 | 11/1/2021 |
0.0.6.80 | 979 | 11/1/2021 |
0.0.6.79 | 1,007 | 10/31/2021 |
0.0.6.78 | 902 | 10/31/2021 |
0.0.6.77 | 935 | 10/31/2021 |
0.0.6.76 | 952 | 8/20/2021 |
0.0.6.75 | 967 | 8/20/2021 |
0.0.6.73 | 930 | 6/18/2021 |
0.0.6.72 | 992 | 2/27/2021 |
0.0.6.71 | 974 | 2/27/2021 |
0.0.6.70 | 1,045 | 11/23/2020 |
0.0.5.67 | 1,002 | 11/23/2020 |
0.0.4.69 | 1,141 | 10/10/2020 |
0.0.4.68 | 1,020 | 11/23/2020 |
0.0.3.69 | 1,092 | 10/4/2020 |
0.0.3.68 | 1,085 | 10/2/2020 |
0.0.2.68 | 1,097 | 10/2/2020 |
0.0.2.64 | 1,124 | 8/23/2020 |
0.0.2.62 | 1,031 | 8/23/2020 |
0.0.1.62 | 1,117 | 8/23/2020 |
0.0.1.61 | 1,106 | 8/16/2020 |
0.0.1.60 | 1,078 | 8/16/2020 |
0.0.1.57 | 1,173 | 4/10/2020 |
0.0.1.53 | 1,317 | 1/18/2020 |
0.0.1.52 | 1,277 | 1/7/2020 |
0.0.1.51 | 1,170 | 1/7/2020 |
0.0.1.49 | 1,190 | 1/7/2020 |
0.0.1.48 | 1,142 | 1/6/2020 |
0.0.1.47 | 1,178 | 1/5/2020 |
0.0.1.46 | 1,166 | 1/4/2020 |
0.0.1.45 | 1,189 | 1/4/2020 |
0.0.1.44 | 1,148 | 1/4/2020 |
0.0.1.43 | 1,266 | 1/1/2020 |
0.0.1.42 | 1,273 | 1/1/2020 |
0.0.1.41 | 1,250 | 1/1/2020 |
0.0.1.40 | 1,160 | 11/21/2019 |
0.0.1.39 | 1,192 | 10/18/2019 |
0.0.1.38 | 1,270 | 5/6/2019 |
0.0.1.37 | 1,254 | 5/6/2019 |
0.0.1.36 | 1,333 | 4/22/2019 |
0.0.1.34 | 1,326 | 4/22/2019 |