Add configurations and update packages

This commit is contained in:
2021-07-15 22:28:26 +02:00
parent 84b5e44a83
commit c84077ef58
23 changed files with 451 additions and 102 deletions

View File

@@ -0,0 +1,29 @@
using System;
using System.Linq;
using Microsoft.Extensions.Configuration;
namespace GerstITS.Examples.Api.Configurations
{
public static class IConfigurationExtensions
{
#region Methods
public static TEnum GetFlaggedEnum<TEnum>(this IConfiguration configuration, string key)
where TEnum : struct, IConvertible
{
ThrowsAnExceptionIfTypeIsNotAnEnumeration<TEnum>();
return (TEnum)(object)(configuration.GetSection(key)?
.Get<TEnum[]>() ?? Enumerable.Empty<TEnum>())
.Sum(i => (int)(object)i);
}
private static void ThrowsAnExceptionIfTypeIsNotAnEnumeration<TEnum>() where TEnum : struct, IConvertible
{
if (!typeof(TEnum).IsEnum)
throw new InvalidOperationException($"{typeof(TEnum)} is not supported.");
}
#endregion
}
}

View File

@@ -0,0 +1,27 @@
using GerstITS.Data.EntityFramework;
using GerstITS.System.Configurations;
using Microsoft.Extensions.Configuration;
namespace GerstITS.Examples.Api.Configurations
{
internal sealed class EntityFrameworkMigrationConfiguration : IEntityFrameworkMigrationConfiguration
{
#region Constructors
public EntityFrameworkMigrationConfiguration(string parentPrefix,
Microsoft.Extensions.Configuration.IConfiguration configuration)
{
var prefix = $"{parentPrefix}:{this.ToConfigurationPrefix()}";
AutoMigrate = configuration.GetValue<bool>($"{prefix}:{nameof(AutoMigrate)}");
}
#endregion
#region IMigrationConfiguration
public bool AutoMigrate { get; }
#endregion
}
}

View File

@@ -0,0 +1,34 @@
using GerstITS.Web.Api.Swagger;
using Microsoft.Net.Http.Headers;
using Microsoft.OpenApi.Models;
namespace BakeTronic.Web.Api.Configurations
{
internal sealed class OpenApiSecuritySchemeConfiguration : IOpenApiSecuritySchemeConfiguration
{
#region Properties
public bool AllowAnonymous { get; }
public string HttpHeaderKey { get; }
public string Scheme { get; }
public SecuritySchemeType SchemeType { get; }
public ParameterLocation ParameterLocation { get; }
public string Description { get; }
#endregion
#region Constructors
public OpenApiSecuritySchemeConfiguration()
{
AllowAnonymous = false;
HttpHeaderKey = HeaderNames.Authorization;
Scheme = "Bearer";
SchemeType = SecuritySchemeType.Http;
ParameterLocation = ParameterLocation.Header;
Description = "Authorization header using the Bearer scheme (Value: Bearer {{access_token}}).";
}
#endregion
}
}

View File

@@ -0,0 +1,34 @@
using GerstITS.Authentication.OpenId;
using Microsoft.Extensions.Configuration;
namespace BakeTronic.Web.Api.Configurations
{
internal class OpenIdValidationConfiguration : IOpenIdValidationConfiguration
{
#region Constructors
public OpenIdValidationConfiguration(string parentPrefix,
IConfiguration configuration)
{
var prefix = $"{parentPrefix}:Validate";
Issuer = configuration.GetValue<string>($"{prefix}:{nameof(Issuer)}");
Audience = configuration.GetValue<string>($"{prefix}:{nameof(Audience)}");
RsaPublicKey = configuration.GetValue<string>($"{prefix}:{nameof(RsaPublicKey)}");
RequiredClaimType = configuration.GetValue<string>($"{prefix}:{nameof(RequiredClaimType)}");
ValidateLifetime = configuration.GetValue<bool>($"{prefix}:{nameof(ValidateLifetime)}");
}
#endregion
#region IOpenIdValidationConfiguration
public string Issuer { get; }
public string Audience { get; }
public string RsaPublicKey { get; }
public string RequiredClaimType { get; }
public bool ValidateLifetime { get; }
#endregion
}
}

View File

@@ -0,0 +1,36 @@
using BakeTronic.Web.Api.Configurations;
using GerstITS.Authentication.OpenId;
using GerstITS.System.Configurations;
using Microsoft.Extensions.Configuration;
namespace GerstITS.Examples.Api.Configurations
{
internal class OpenIdConfiguration : IOpenIdConfiguration
{
#region Constructors
public OpenIdConfiguration(string parentPrefix,
Microsoft.Extensions.Configuration.IConfiguration configuration)
{
var prefix = $"{parentPrefix}:{this.ToConfigurationPrefix()}";
Authority = configuration.GetValue<string>($"{prefix}:{nameof(Authority)}");
RequireHttpsMetadata = configuration.GetValue<bool>($"{prefix}:{nameof(RequireHttpsMetadata)}");
SaveToken = configuration.GetValue<bool>($"{prefix}:{nameof(SaveToken)}");
Validate = new OpenIdValidationConfiguration(prefix, configuration);
}
#endregion
#region IOpenIdConfiguration
public string Authority { get; }
public bool RequireHttpsMetadata { get; }
public bool SaveToken { get; }
public IOpenIdValidationConfiguration Validate { get; }
#endregion
}
}

View File

@@ -0,0 +1,32 @@
using GerstITS.System.Configurations;
using GerstITS.Web.Api.Builder;
using Microsoft.Extensions.Configuration;
namespace BakeTronic.Web.Api.Configurations
{
internal sealed class CorsPolicyConfiguration : ICorsPolicy, GerstITS.System.Configurations.IConfiguration
{
#region Constructors
public CorsPolicyConfiguration(string parentPrefix, Microsoft.Extensions.Configuration.IConfiguration configuration)
{
var prefix = $"{parentPrefix}:{this.ToConfigurationPrefix()}";
AllowCredentials = configuration.GetValue<bool>($"{prefix}:{nameof(AllowCredentials)}", false);
AllowedOrigins = configuration.GetSection($"{prefix}:{nameof(AllowedOrigins)}").Get<string[]>() ?? new string[0];
AllowedHeaders = configuration.GetSection($"{prefix}:{nameof(AllowedHeaders)}").Get<string[]>() ?? new string[0];
AllowedMethods = configuration.GetSection($"{prefix}:{nameof(AllowedMethods)}").Get<string[]>() ?? new string[0];
}
#endregion
#region ICorsPolicy
public bool AllowCredentials { get; }
public string[] AllowedOrigins { get; set; }
public string[] AllowedHeaders { get; set; }
public string[] AllowedMethods { get; set; }
#endregion
}
}

View File

@@ -0,0 +1,30 @@
using GerstITS.System.Configurations;
using GerstITS.Web.Api.Builder;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.HttpOverrides;
namespace GerstITS.Examples.Api.Configurations
{
internal sealed class WebApiHeadersConfiguration : IHeaderConfiguration, IConfiguration
{
#region Constructors
public WebApiHeadersConfiguration(string parentPrefix, Microsoft.Extensions.Configuration.IConfiguration configuration)
{
var prefix = $"{parentPrefix}:{this.ToConfigurationPrefix()}";
ForwardedHeaders = new ForwardedHeadersOptions
{
ForwardedHeaders = configuration.GetFlaggedEnum<ForwardedHeaders>($"{prefix}:{nameof(ForwardedHeadersOptions)}:{nameof(ForwardedHeadersOptions.ForwardedHeaders)}")
};
}
#endregion
#region IHeaderConfiguration
public ForwardedHeadersOptions ForwardedHeaders { get; }
#endregion
}
}

View File

@@ -0,0 +1,36 @@
using GerstITS.Examples.Api.Configurations;
using GerstITS.System.Configurations;
using GerstITS.Web.Api.Builder;
using Microsoft.Extensions.Configuration;
namespace BakeTronic.Web.Api.Configurations
{
internal sealed class ServerConfiguration : IServerConfiguration
{
#region Constructors
public ServerConfiguration(string parentPrefix, Microsoft.Extensions.Configuration.IConfiguration configuration)
{
var prefix = $"{parentPrefix}:{this.ToConfigurationPrefix()}";
UseHttpsRedirection = configuration.GetValue<bool>($"{prefix}:{nameof(UseHttpsRedirection)}");
UseHsts = configuration.GetValue<bool>($"{prefix}:{nameof(UseHsts)}");
UseCors = configuration.GetValue<bool>($"{prefix}:{nameof(UseCors)}");
Headers = new WebApiHeadersConfiguration(prefix, configuration);
CorsPolicy = new CorsPolicyConfiguration(prefix, configuration);
}
#endregion
#region IServerConfiguration
public bool UseHttpsRedirection { get; }
public bool UseHsts { get; }
public bool UseCors { get; }
public IHeaderConfiguration Headers { get; }
public ICorsPolicy CorsPolicy { get; }
#endregion
}
}

View File

@@ -0,0 +1,29 @@
using System;
using GerstITS.System.Configurations;
using GerstITS.Web.Api.Swagger;
using Microsoft.Extensions.Configuration;
namespace BakeTronic.Web.Api.Configurations
{
internal sealed class LicenseConfiguration : ILicense, GerstITS.System.Configurations.IConfiguration
{
#region Constructors
public LicenseConfiguration(string parentPrefix, Microsoft.Extensions.Configuration.IConfiguration configuration)
{
var prefix = $"{parentPrefix}:{this.ToConfigurationPrefix()}";
Name = configuration.GetValue<string>($"{prefix}:{nameof(Name)}");
Url = configuration.GetValue<Uri>($"{prefix}:{nameof(Url)}");
}
#endregion
#region ILicence
public string Name { get; }
public Uri Url { get; }
#endregion
}
}

View File

@@ -1,49 +1,46 @@
using System; using System;
using System.Diagnostics; using System.Diagnostics;
using GerstITS.Examples.Api.Configurations;
using GerstITS.System.Configurations; using GerstITS.System.Configurations;
using GerstITS.Web.Api.Swagger; using GerstITS.Web.Api.Swagger;
using Microsoft.Extensions.Configuration;
namespace GerstITS.Examples.Api.Swagger namespace BakeTronic.Web.Api.Configurations
{ {
internal class WebApiConfiguration : ISwaggerConfiguration, IConfiguration internal sealed class SwaggerConfiguration : ISwaggerConfiguration
{ {
#region Constructors #region Constructors
public WebApiConfiguration() public SwaggerConfiguration(string parentPrefix,
Microsoft.Extensions.Configuration.IConfiguration configuration)
{ {
var prefix = $"{parentPrefix}:{this.ToConfigurationPrefix()}";
var currentAssembly = typeof(WebApiConfiguration).Assembly; var currentAssembly = typeof(WebApiConfiguration).Assembly;
var fileVersionInfo = FileVersionInfo.GetVersionInfo(currentAssembly.Location); var fileVersionInfo = FileVersionInfo.GetVersionInfo(currentAssembly.Location);
Company = fileVersionInfo.CompanyName;
Name = fileVersionInfo.ProductName; Name = fileVersionInfo.ProductName;
Company = fileVersionInfo.CompanyName;
SupportEMail = configuration.GetValue<string>($"{prefix}:{nameof(SupportEMail)}");
TermsOfService = configuration.GetValue<Uri>($"{prefix}:{nameof(TermsOfService)}");
Release = currentAssembly.GetName().Version; Release = currentAssembly.GetName().Version;
License = new LicenseConfiguration(prefix, configuration);
TermsOfService = new Uri("https://en.wikipedia.org/wiki/Terms_of_service"); Security = new OpenApiSecuritySchemeConfiguration();
License = new LicenseConfiguration
{
Name = "MIT",
Url = new Uri("https://opensource.org/licenses/MIT")
};
SupportEMail = "info@examples.net";
Security = new SwaggerSecurityConfiguration
{
AllowAnonymous = true
};
} }
#endregion #endregion
#region ISwaggerConfiguration #region ISwaggerConfiguration
public string Name { get; } public string Name { get; }
public string Company { get; } public string Company { get; }
public string SupportEMail { get; } public string SupportEMail { get; }
public Uri TermsOfService { get; } public Uri TermsOfService { get; }
public ILicense License { get; }
public Version Release { get; } public Version Release { get; }
public IOpenApiSecuritySchemeConfiguration Security { get; } public ILicense License { get; }
public IOpenApiSecuritySchemeConfiguration Security { get; }
#endregion #endregion
} }
} }

View File

@@ -0,0 +1,35 @@
using BakeTronic.Web.Api.Configurations;
using GerstITS.Authentication.OpenId;
using GerstITS.Data.EntityFramework;
using GerstITS.System.Configurations;
using GerstITS.Web.Api.Builder;
using GerstITS.Web.Api.Swagger;
namespace GerstITS.Examples.Api.Configurations
{
internal sealed class WebApiConfiguration : IConfiguration
{
#region Properties
public IServerConfiguration Server { get; }
public IOpenIdConfiguration OpenId { get; }
public ISwaggerConfiguration Swagger { get; set; }
public IEntityFrameworkMigrationConfiguration EntityFrameworkMigration { get; set; }
#endregion
#region Constructors
public WebApiConfiguration(Microsoft.Extensions.Configuration.IConfiguration configuration)
{
var prefix = this.ToConfigurationPrefix();
EntityFrameworkMigration = new EntityFrameworkMigrationConfiguration(prefix, configuration);
OpenId = new OpenIdConfiguration(prefix, configuration);
Server = new ServerConfiguration(prefix, configuration);
Swagger = new SwaggerConfiguration(prefix, configuration);
}
#endregion
}
}

View File

@@ -1,15 +0,0 @@
using System;
using GerstITS.Web.Api.Swagger;
namespace GerstITS.Examples.Api.Swagger
{
internal class LicenseConfiguration : ILicense
{
#region Properties
public string Name { get; set; }
public Uri Url { get; set; }
#endregion
}
}

View File

@@ -1,19 +0,0 @@
using GerstITS.Web.Api.Swagger;
using Microsoft.OpenApi.Models;
namespace GerstITS.Examples.Api.Swagger
{
internal sealed class SwaggerSecurityConfiguration : IOpenApiSecuritySchemeConfiguration
{
#region Properties
public bool AllowAnonymous { get; set; }
public string HttpHeaderKey { get; set; }
public string Scheme { get; set; }
public SecuritySchemeType SchemeType { get; set; }
public ParameterLocation ParameterLocation { get; set; }
public string Description { get; set; }
#endregion
}
}

View File

@@ -37,27 +37,29 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="GerstITS.Authentication.OpenId" Version="2021.7.21" />
<PackageReference Include="GerstITS.Common" Version="2021.6.24" /> <PackageReference Include="GerstITS.Common" Version="2021.6.24" />
<PackageReference Include="GerstITS.Data" Version="2021.6.17" /> <PackageReference Include="GerstITS.Data" Version="2021.7.12" />
<PackageReference Include="GerstITS.IoC" Version="2021.6.17" /> <PackageReference Include="GerstITS.Data.EntityFramework" Version="2021.7.23" />
<PackageReference Include="GerstITS.IoC.DotNetCore" Version="2021.7.2" /> <PackageReference Include="GerstITS.IoC" Version="2021.7.17" />
<PackageReference Include="GerstITS.IoC.DotNetCore" Version="2021.7.21" />
<PackageReference Include="GerstITS.Job" Version="2021.6.17" /> <PackageReference Include="GerstITS.Job" Version="2021.6.17" />
<PackageReference Include="GerstITS.Job.Scheduling" Version="2021.6.17" /> <PackageReference Include="GerstITS.Job.Scheduling" Version="2021.6.17" />
<PackageReference Include="GerstITS.Logging.Serilog" Version="2021.6.25" /> <PackageReference Include="GerstITS.Logging.Serilog" Version="2021.6.25" />
<PackageReference Include="GerstITS.Mapping.AutoMapper" Version="2021.6.21" /> <PackageReference Include="GerstITS.Mapping.AutoMapper" Version="2021.6.21" />
<PackageReference Include="GerstITS.Search" Version="2021.6.17" /> <PackageReference Include="GerstITS.Search" Version="2021.6.17" />
<PackageReference Include="GerstITS.System" Version="2021.6.17" /> <PackageReference Include="GerstITS.System" Version="2021.7.20" />
<PackageReference Include="GerstITS.Validation" Version="2021.7.7" /> <PackageReference Include="GerstITS.Validation" Version="2021.7.18" />
<PackageReference Include="GerstITS.Web" Version="2021.6.17" /> <PackageReference Include="GerstITS.Web" Version="2021.6.17" />
<PackageReference Include="GerstITS.Web.Api" Version="2021.7.9" /> <PackageReference Include="GerstITS.Web.Api" Version="2021.7.21" />
<PackageReference Include="GerstITS.Web.Api.Swagger" Version="2021.7.8" /> <PackageReference Include="GerstITS.Web.Api.Swagger" Version="2021.7.20" />
<PackageReference Include="GerstITS.Web.Rest" Version="2021.6.17" /> <PackageReference Include="GerstITS.Web.Rest" Version="2021.6.17" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="5.0.7" /> <PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="5.0.8" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="5.0.7"> <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="5.0.8">
<PrivateAssets>all</PrivateAssets> <PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference> </PackageReference>
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="5.0.1" /> <PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="5.0.2" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="5.0.0" /> <PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="5.0.0" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" /> <PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
</ItemGroup> </ItemGroup>

View File

@@ -1,5 +1,6 @@
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation"> <wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<s:Boolean x:Key="/Default/CodeInspection/NamespaceProvider/NamespaceFoldersToSkip/=common/@EntryIndexedValue">True</s:Boolean> <s:Boolean x:Key="/Default/CodeInspection/NamespaceProvider/NamespaceFoldersToSkip/=common/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/CodeInspection/NamespaceProvider/NamespaceFoldersToSkip/=common_005Cconfigurations_005Cextensions/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/CodeInspection/NamespaceProvider/NamespaceFoldersToSkip/=common_005Cexceptionhandling_005Ctransformations/@EntryIndexedValue">True</s:Boolean> <s:Boolean x:Key="/Default/CodeInspection/NamespaceProvider/NamespaceFoldersToSkip/=common_005Cexceptionhandling_005Ctransformations/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/CodeInspection/NamespaceProvider/NamespaceFoldersToSkip/=common_005Cswagger_005Cconfiguration/@EntryIndexedValue">True</s:Boolean> <s:Boolean x:Key="/Default/CodeInspection/NamespaceProvider/NamespaceFoldersToSkip/=common_005Cswagger_005Cconfiguration/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/CodeInspection/NamespaceProvider/NamespaceFoldersToSkip/=common_005Cversioning/@EntryIndexedValue">False</s:Boolean> <s:Boolean x:Key="/Default/CodeInspection/NamespaceProvider/NamespaceFoldersToSkip/=common_005Cversioning/@EntryIndexedValue">False</s:Boolean>

View File

@@ -0,0 +1,22 @@
using GerstITS.Examples.Api.Configurations;
using Microsoft.Extensions.DependencyInjection;
namespace GerstITS.Examples.Api
{
public sealed partial class Module
{
#region Methods
private static void RegisterConfigurations(IServiceCollection container)
{
container.AddSingleton<WebApiConfiguration>();
container.AddSingleton(c => c.GetService<WebApiConfiguration>().EntityFrameworkMigration);
container.AddSingleton(c => c.GetService<WebApiConfiguration>().OpenId);
container.AddSingleton(c => c.GetService<WebApiConfiguration>().Server);
container.AddSingleton(c => c.GetService<WebApiConfiguration>().Swagger);
}
#endregion
}
}

View File

@@ -1,18 +0,0 @@
using GerstITS.Examples.Api.Swagger;
using GerstITS.Web.Api.Swagger;
using Microsoft.Extensions.DependencyInjection;
namespace GerstITS.Examples.Api
{
public sealed partial class Module
{
#region Methods
private static void RegisterSwagger(IServiceCollection container)
{
container.AddSingleton<ISwaggerConfiguration, WebApiConfiguration>();
}
#endregion
}
}

View File

@@ -9,10 +9,10 @@ namespace GerstITS.Examples.Api
public void RegisterComponents(IServiceCollection container) public void RegisterComponents(IServiceCollection container)
{ {
RegisterConfigurations(container);
RegisterExceptionHandling(container); RegisterExceptionHandling(container);
RegisterMvc(container); RegisterMvc(container);
RegisterStartupTasks(container); RegisterStartupTasks(container);
RegisterSwagger(container);
} }
#endregion #endregion

View File

@@ -8,7 +8,64 @@
}, },
"AllowedHosts": "*", "AllowedHosts": "*",
"WebApi": { "WebApi": {
"SupportEMail": "support@someone.de" "Swagger": {
"SupportEMail": "support@baketronic.com",
"TermsOfService": "https://www.baketronic.com/impressum/",
"Licence": {
"Name": "MIT",
"Url": "https://opensource.org/licenses/MIT"
}
},
"EntityFrameworkmigration": {
"AutoMigrate": true
},
"Server": {
"UseCors": true,
"CorsPolicy": {
"AllowCredentials": true,
"AllowedHeaders": [
"*"
],
"AllowedMethods": [
"GET",
"POST",
"PUT",
"PATCH",
"DELETE",
"OPTIONS"
],
"AllowedOrigins": [
"https://www.example.com:443",
"https://localhost:4200",
"http://localhost:4200"
]
},
"UseHttpsRedirection": true,
"UseHsts": false,
"Headers": {
"ForwardedHeadersOptions": {
"ForwardedHeaders": [
"XForwardedFor",
"XForwardedProto"
]
}
}
},
"OpenId": {
"Authority": "https://openid.example.com/auth/realms/example",
"RequireHttpsMetadata": true,
"SaveToken": true,
"Validate": {
"Issuer": "https://openid.example.com/auth/realms/example",
"Audience": "audience",
"RequiredClaimType": "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress",
"ValidateLifetime": true,
"RsaPublicKey": "RsaToken"
}
}
},
"NotifyOvenJob": {
"CronExpression": "*/30 * * * * ? *"
}, },
"SayHelloWorldJob": { "SayHelloWorldJob": {
"CronExpression": "*/30 * * * * ? *", "CronExpression": "*/30 * * * * ? *",

View File

@@ -32,12 +32,12 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="GerstITS.Data" Version="2021.6.17" /> <PackageReference Include="GerstITS.Data" Version="2021.7.12" />
<PackageReference Include="GerstITS.IoC" Version="2021.6.17" /> <PackageReference Include="GerstITS.IoC" Version="2021.7.17" />
<PackageReference Include="GerstITS.IoC.DotNetCore" Version="2021.7.2" /> <PackageReference Include="GerstITS.IoC.DotNetCore" Version="2021.7.21" />
<PackageReference Include="GerstITS.Job" Version="2021.6.17" /> <PackageReference Include="GerstITS.Job" Version="2021.6.17" />
<PackageReference Include="GerstITS.Job.Scheduling" Version="2021.6.17" /> <PackageReference Include="GerstITS.Job.Scheduling" Version="2021.6.17" />
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="5.0.7" /> <PackageReference Include="Microsoft.EntityFrameworkCore" Version="5.0.8" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

View File

@@ -34,13 +34,13 @@
<ItemGroup> <ItemGroup>
<PackageReference Include="AutoMapper" Version="10.1.1" /> <PackageReference Include="AutoMapper" Version="10.1.1" />
<PackageReference Include="FluentValidation" Version="10.3.0" /> <PackageReference Include="FluentValidation" Version="10.3.0" />
<PackageReference Include="GerstITS.Data" Version="2021.6.17" /> <PackageReference Include="GerstITS.Data" Version="2021.7.12" />
<PackageReference Include="GerstITS.IoC" Version="2021.6.17" /> <PackageReference Include="GerstITS.IoC" Version="2021.7.17" />
<PackageReference Include="GerstITS.IoC.DotNetCore" Version="2021.7.2" /> <PackageReference Include="GerstITS.IoC.DotNetCore" Version="2021.7.21" />
<PackageReference Include="GerstITS.Mapping.AutoMapper" Version="2021.6.21" /> <PackageReference Include="GerstITS.Mapping.AutoMapper" Version="2021.6.21" />
<PackageReference Include="GerstITS.Search" Version="2021.6.17" /> <PackageReference Include="GerstITS.Search" Version="2021.6.17" />
<PackageReference Include="GerstITS.Validation" Version="2021.7.7" /> <PackageReference Include="GerstITS.Validation" Version="2021.7.18" />
<PackageReference Include="GerstITS.Web.Api" Version="2021.7.9" /> <PackageReference Include="GerstITS.Web.Api" Version="2021.7.21" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

View File

@@ -44,9 +44,9 @@
<ItemGroup> <ItemGroup>
<PackageReference Include="GerstITS.Common" Version="2021.6.24" /> <PackageReference Include="GerstITS.Common" Version="2021.6.24" />
<PackageReference Include="GerstITS.IoC" Version="2021.6.17" /> <PackageReference Include="GerstITS.IoC" Version="2021.7.17" />
<PackageReference Include="GerstITS.IoC.DotNetCore" Version="2021.7.2" /> <PackageReference Include="GerstITS.IoC.DotNetCore" Version="2021.7.21" />
<PackageReference Include="GerstITS.System" Version="2021.6.17" /> <PackageReference Include="GerstITS.System" Version="2021.7.20" />
<PackageReference Include="GerstITS.Web" Version="2021.6.17" /> <PackageReference Include="GerstITS.Web" Version="2021.6.17" />
<PackageReference Include="GerstITS.Web.Rest" Version="2021.6.17" /> <PackageReference Include="GerstITS.Web.Rest" Version="2021.6.17" />
<PackageReference Include="Microsoft.Extensions.Configuration" Version="5.0.0" /> <PackageReference Include="Microsoft.Extensions.Configuration" Version="5.0.0" />

View File

@@ -32,9 +32,9 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="GerstITS.IoC" Version="2021.6.17" /> <PackageReference Include="GerstITS.IoC" Version="2021.7.17" />
<PackageReference Include="GerstITS.IoC.DotNetCore" Version="2021.7.2" /> <PackageReference Include="GerstITS.IoC.DotNetCore" Version="2021.7.21" />
<PackageReference Include="GerstITS.System" Version="2021.6.17" /> <PackageReference Include="GerstITS.System" Version="2021.7.20" />
<PackageReference Include="GerstITS.Web" Version="2021.6.17" /> <PackageReference Include="GerstITS.Web" Version="2021.6.17" />
<PackageReference Include="GerstITS.Web.Rest" Version="2021.6.17" /> <PackageReference Include="GerstITS.Web.Rest" Version="2021.6.17" />
</ItemGroup> </ItemGroup>