From 6e61cd246979d31b81e221d540be7771eb1247a8 Mon Sep 17 00:00:00 2001 From: Dmitry Sikorsky Date: Tue, 11 Apr 2017 00:24:46 +0300 Subject: [PATCH 01/81] Fixed #58 --- .../ExtCore.Data.Abstractions.csproj | 2 +- ...ore.Data.EntityFramework.PostgreSql.csproj | 2 +- ...Core.Data.EntityFramework.SqlServer.csproj | 2 +- ...ExtCore.Data.EntityFramework.Sqlite.csproj | 2 +- .../ExtCore.Data.Models.Abstractions.csproj | 2 +- src/ExtCore.Data/ExtCore.Data.csproj | 2 +- src/ExtCore.Events/Event.cs | 9 +++---- src/ExtCore.Events/ExtCore.Events.csproj | 2 +- src/ExtCore.Events/IEventHandler.cs | 24 +++++++++++++++++++ .../ExtCore.Infrastructure.csproj | 2 +- .../ExtCore.Mvc.Infrastructure.csproj | 2 +- src/ExtCore.Mvc/ExtCore.Mvc.csproj | 2 +- .../ExtCore.WebApplication.csproj | 2 +- 13 files changed, 40 insertions(+), 15 deletions(-) diff --git a/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj b/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj index 5c0e304..d3a35e9 100644 --- a/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj +++ b/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj @@ -3,7 +3,7 @@ Part of the ExtCore.Data ExtCore framework extension. Copyright © 2015 Dmitry Sikorsky - 1.2.0-beta1 + 1.2.0-beta2 Dmitry Sikorsky netstandard1.6 ExtCore.Data.Abstractions diff --git a/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj b/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj index d52b998..2fa3f09 100644 --- a/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj +++ b/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj @@ -3,7 +3,7 @@ Part of the ExtCore.Data ExtCore framework extension. Copyright © 2015 Dmitry Sikorsky - 1.2.0-beta1 + 1.2.0-beta2 Dmitry Sikorsky netstandard1.6 ExtCore.Data.EntityFramework.PostgreSql diff --git a/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj b/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj index 05ac72b..a73da2f 100644 --- a/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj +++ b/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj @@ -3,7 +3,7 @@ Part of the ExtCore.Data ExtCore framework extension. Copyright © 2015 Dmitry Sikorsky - 1.2.0-beta1 + 1.2.0-beta2 Dmitry Sikorsky netstandard1.6 ExtCore.Data.EntityFramework.SqlServer diff --git a/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj b/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj index f199494..975311b 100644 --- a/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj +++ b/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj @@ -3,7 +3,7 @@ Part of the ExtCore.Data ExtCore framework extension. Copyright © 2015 Dmitry Sikorsky - 1.2.0-beta1 + 1.2.0-beta2 Dmitry Sikorsky netstandard1.6 ExtCore.Data.EntityFramework.Sqlite diff --git a/src/ExtCore.Data.Models.Abstractions/ExtCore.Data.Models.Abstractions.csproj b/src/ExtCore.Data.Models.Abstractions/ExtCore.Data.Models.Abstractions.csproj index bb1c880..af050a5 100644 --- a/src/ExtCore.Data.Models.Abstractions/ExtCore.Data.Models.Abstractions.csproj +++ b/src/ExtCore.Data.Models.Abstractions/ExtCore.Data.Models.Abstractions.csproj @@ -3,7 +3,7 @@ Part of the ExtCore.Data ExtCore framework extension. Copyright © 2015 Dmitry Sikorsky - 1.2.0-beta1 + 1.2.0-beta2 Dmitry Sikorsky netstandard1.6 ExtCore.Data.Models.Abstractions diff --git a/src/ExtCore.Data/ExtCore.Data.csproj b/src/ExtCore.Data/ExtCore.Data.csproj index 7cbbd65..d5c8f11 100644 --- a/src/ExtCore.Data/ExtCore.Data.csproj +++ b/src/ExtCore.Data/ExtCore.Data.csproj @@ -3,7 +3,7 @@ Part of the ExtCore.Data ExtCore framework extension. Copyright © 2015 Dmitry Sikorsky - 1.2.0-beta1 + 1.2.0-beta2 Dmitry Sikorsky netstandard1.6 ExtCore.Data diff --git a/src/ExtCore.Events/Event.cs b/src/ExtCore.Events/Event.cs index 36ae2b1..414c8d7 100644 --- a/src/ExtCore.Events/Event.cs +++ b/src/ExtCore.Events/Event.cs @@ -2,6 +2,7 @@ // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System.Collections.Generic; +using System.Linq; using ExtCore.Infrastructure; namespace ExtCore.Events @@ -20,7 +21,7 @@ public static class Event where TEventHandler : IEventHandler /// Resolved event handlers that have handled the event. public static IEnumerable Broadcast() { - IEnumerable eventHandlers = ExtensionManager.GetInstances(); + IEnumerable eventHandlers = ExtensionManager.GetInstances().OrderBy(eh => eh.Priority); foreach (TEventHandler eventHandler in eventHandlers) eventHandler.HandleEvent(); @@ -45,7 +46,7 @@ public static class Event where TEventHandler : I /// Resolved event handlers that have handled the event. public static IEnumerable Broadcast(TEventArgument argument) { - IEnumerable eventHandlers = ExtensionManager.GetInstances(); + IEnumerable eventHandlers = ExtensionManager.GetInstances().OrderBy(eh => eh.Priority); foreach (TEventHandler eventHandler in eventHandlers) eventHandler.HandleEvent(argument); @@ -73,7 +74,7 @@ public static class Event where /// Resolved event handlers that have handled the event. public static IEnumerable Broadcast(TEventArgument1 argument1, TEventArgument2 argument2) { - IEnumerable eventHandlers = ExtensionManager.GetInstances(); + IEnumerable eventHandlers = ExtensionManager.GetInstances().OrderBy(eh => eh.Priority); foreach (TEventHandler eventHandler in eventHandlers) eventHandler.HandleEvent(argument1, argument2); @@ -102,7 +103,7 @@ public static class EventResolved event handlers that have handled the event. public static IEnumerable Broadcast(TEventArgument1 argument1, TEventArgument2 argument2, TEventArgument3 argument3) { - IEnumerable eventHandlers = ExtensionManager.GetInstances(); + IEnumerable eventHandlers = ExtensionManager.GetInstances().OrderBy(eh => eh.Priority); foreach (TEventHandler eventHandler in eventHandlers) eventHandler.HandleEvent(argument1, argument2, argument3); diff --git a/src/ExtCore.Events/ExtCore.Events.csproj b/src/ExtCore.Events/ExtCore.Events.csproj index e041bb3..f20167c 100644 --- a/src/ExtCore.Events/ExtCore.Events.csproj +++ b/src/ExtCore.Events/ExtCore.Events.csproj @@ -3,7 +3,7 @@ Part of the ExtCore.Events ExtCore framework extension. Copyright © 2017 Dmitry Sikorsky - 1.2.0-beta1 + 1.2.0-beta2 Dmitry Sikorsky netstandard1.6 ExtCore.Events diff --git a/src/ExtCore.Events/IEventHandler.cs b/src/ExtCore.Events/IEventHandler.cs index 67bb865..30d8da6 100644 --- a/src/ExtCore.Events/IEventHandler.cs +++ b/src/ExtCore.Events/IEventHandler.cs @@ -9,6 +9,12 @@ namespace ExtCore.Events /// public interface IEventHandler { + /// + /// Priority of the event handler. The event handlers of the same event will be executed in the order + /// specified by the priority. + /// + int Priority { get; } + /// /// Handles the event. /// @@ -22,6 +28,12 @@ public interface IEventHandler /// Defines the type of the argument that will be passed to the event handler. public interface IEventHandler { + /// + /// Priority of the event handler. The event handlers of the same event will be executed in the order + /// specified by the priority. + /// + int Priority { get; } + /// /// Handles the event. /// @@ -37,6 +49,12 @@ public interface IEventHandler /// Defines the type of the second argument that will be passed to the event handler. public interface IEventHandler { + /// + /// Priority of the event handler. The event handlers of the same event will be executed in the order + /// specified by the priority. + /// + int Priority { get; } + /// /// Handles the event. /// @@ -54,6 +72,12 @@ public interface IEventHandler /// Defines the type of the first argument that will be passed to the event handler. public interface IEventHandler { + /// + /// Priority of the event handler. The event handlers of the same event will be executed in the order + /// specified by the priority. + /// + int Priority { get; } + /// /// Handles the event. /// diff --git a/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj b/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj index e6cb898..cdb5140 100644 --- a/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj +++ b/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj @@ -3,7 +3,7 @@ Free, open source and cross-platform framework for creating modular and extendable web applications based on ASP.NET Core 1.1.0. Copyright © 2015 Dmitry Sikorsky - 1.2.0-beta1 + 1.2.0-beta2 Dmitry Sikorsky netstandard1.6 ExtCore.Infrastructure diff --git a/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj b/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj index 6d5a4d5..172d312 100644 --- a/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj +++ b/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj @@ -3,7 +3,7 @@ Part of the ExtCore.Mvc ExtCore framework extension. Copyright © 2015 Dmitry Sikorsky - 1.2.0-beta1 + 1.2.0-beta2 Dmitry Sikorsky netstandard1.6 ExtCore.Mvc.Infrastructure diff --git a/src/ExtCore.Mvc/ExtCore.Mvc.csproj b/src/ExtCore.Mvc/ExtCore.Mvc.csproj index 84a1091..0c9e6f6 100644 --- a/src/ExtCore.Mvc/ExtCore.Mvc.csproj +++ b/src/ExtCore.Mvc/ExtCore.Mvc.csproj @@ -3,7 +3,7 @@ Part of the ExtCore.Mvc ExtCore framework extension. Copyright © 2015 Dmitry Sikorsky - 1.2.0-beta1 + 1.2.0-beta2 Dmitry Sikorsky netstandard1.6 ExtCore.Mvc diff --git a/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj b/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj index 90dcc99..af8c2cb 100644 --- a/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj +++ b/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj @@ -3,7 +3,7 @@ Free, open source and cross-platform framework for creating modular and extendable web applications based on ASP.NET Core 1.1.0. Copyright © 2015 Dmitry Sikorsky - 1.2.0-beta1 + 1.2.0-beta2 Dmitry Sikorsky netstandard1.6 ExtCore.WebApplication From 62a6fcf02efe43ccbcd418bf92fc6943d5cd7daf Mon Sep 17 00:00:00 2001 From: Dmitry Sikorsky Date: Wed, 12 Apr 2017 13:19:57 +0300 Subject: [PATCH 02/81] Updated README --- README.md | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index a784d13..ea46be3 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# ExtCore 1.2.0-beta1 +# ExtCore 1.2.0-beta2 [![Join the chat at https://gitter.im/ExtCore/ExtCore](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/ExtCore/ExtCore?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) @@ -7,7 +7,7 @@ ## Introduction ExtCore is free, open source and cross-platform framework for creating modular and extendable web applications -based on ASP.NET Core. It is built using the best and the most modern tools and languages (Visual Studio 2015, C# +based on ASP.NET Core. It is built using the best and the most modern tools and languages (Visual Studio 2017, C# etc). Join our team! ExtCore allows you to build your web applications from the different independent reusable modules or extensions. @@ -90,14 +90,16 @@ All you need to do to have modular and extendable web application is: Please take a look at our samples on GitHub: * [Full-featured ExtCore 1.1.3 framework sample web application](https://github.com/ExtCore/ExtCore-Sample); -* [ExtCore Framework 1.1.3 Sample Simplest Web Application](https://github.com/ExtCore/ExtCore-Sample-Simplest); -* [ExtCore Framework 1.1.3 Sample MVC Web Application](https://github.com/ExtCore/ExtCore-Sample-Mvc); -* [ExtCore Framework 1.1.3 Sample Web Application That Uses a Database](https://github.com/ExtCore/ExtCore-Sample-Data); -* [ExtCore Framework 1.1.3 Sample Web Application with Modular UI](https://github.com/ExtCore/ExtCore-Sample-Modular-Ui); -* [ExtCore Framework 1.1.3 Sample Web Application That Registers a Service Inside the Extension](https://github.com/ExtCore/ExtCore-Sample-Service). - -You can also download our [ready to use full-featured sample](http://extcore.net/files/ExtCore-Sample-1.1.1.zip). -It contains everything you need to run ExtCore-based web application from Visual Studio 2015, including SQLite +* [ExtCore framework 1.1.3 sample simplest web application](https://github.com/ExtCore/ExtCore-Sample-Simplest); +* [ExtCore framework 1.1.3 sample MVC web application](https://github.com/ExtCore/ExtCore-Sample-Mvc); +* [ExtCore framework 1.1.3 sample web application that uses a database](https://github.com/ExtCore/ExtCore-Sample-Data); +* [ExtCore framework 1.1.3 sample web application with modular UI](https://github.com/ExtCore/ExtCore-Sample-Modular-Ui); +* [ExtCore framework 1.1.3 sample web application that registers a service inside the extension](https://github.com/ExtCore/ExtCore-Sample-Service); +* [ExtCore framework 1.2.0 sample web application that uses the events](https://github.com/ExtCore/ExtCore-Sample-Service); +* [ExtCore framework 1.1.3 sample API web application](https://github.com/ExtCore/ExtCore-Sample-Api). + +You can also download our [ready to use full-featured sample](http://extcore.net/files/ExtCore-Sample-1.1.3.zip). +It contains everything you need to run ExtCore-based web application from Visual Studio 2017, including SQLite database with the test data. ### Tutorials From 6c0be2425417388ae62b735dd11dc42265b309ac Mon Sep 17 00:00:00 2001 From: Dmitry Sikorsky Date: Thu, 13 Apr 2017 17:28:24 +0300 Subject: [PATCH 03/81] Updated README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ea46be3..25308ca 100644 --- a/README.md +++ b/README.md @@ -95,7 +95,7 @@ Please take a look at our samples on GitHub: * [ExtCore framework 1.1.3 sample web application that uses a database](https://github.com/ExtCore/ExtCore-Sample-Data); * [ExtCore framework 1.1.3 sample web application with modular UI](https://github.com/ExtCore/ExtCore-Sample-Modular-Ui); * [ExtCore framework 1.1.3 sample web application that registers a service inside the extension](https://github.com/ExtCore/ExtCore-Sample-Service); -* [ExtCore framework 1.2.0 sample web application that uses the events](https://github.com/ExtCore/ExtCore-Sample-Service); +* [ExtCore framework 1.2.0 sample web application that uses the events](https://github.com/ExtCore/ExtCore-Sample-Events); * [ExtCore framework 1.1.3 sample API web application](https://github.com/ExtCore/ExtCore-Sample-Api). You can also download our [ready to use full-featured sample](http://extcore.net/files/ExtCore-Sample-1.1.3.zip). From c8bee626382301156409dbc8c194859faee9cc89 Mon Sep 17 00:00:00 2001 From: Dmitry Sikorsky Date: Mon, 8 May 2017 23:26:38 +0300 Subject: [PATCH 04/81] Changed version to 1.2.0 --- README.md | 19 ++++++++++--------- .../ExtCore.Data.Abstractions.csproj | 2 +- ...ore.Data.EntityFramework.PostgreSql.csproj | 2 +- ...Core.Data.EntityFramework.SqlServer.csproj | 2 +- ...ExtCore.Data.EntityFramework.Sqlite.csproj | 2 +- .../ExtCore.Data.Models.Abstractions.csproj | 2 +- src/ExtCore.Data/ExtCore.Data.csproj | 2 +- src/ExtCore.Events/ExtCore.Events.csproj | 2 +- .../ExtCore.Infrastructure.csproj | 2 +- .../ExtCore.Mvc.Infrastructure.csproj | 2 +- src/ExtCore.Mvc/ExtCore.Mvc.csproj | 2 +- .../ExtCore.WebApplication.csproj | 2 +- 12 files changed, 21 insertions(+), 20 deletions(-) diff --git a/README.md b/README.md index 25308ca..ddbf3f3 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# ExtCore 1.2.0-beta2 +# ExtCore 1.2.0 [![Join the chat at https://gitter.im/ExtCore/ExtCore](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/ExtCore/ExtCore?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) @@ -89,16 +89,17 @@ All you need to do to have modular and extendable web application is: Please take a look at our samples on GitHub: -* [Full-featured ExtCore 1.1.3 framework sample web application](https://github.com/ExtCore/ExtCore-Sample); -* [ExtCore framework 1.1.3 sample simplest web application](https://github.com/ExtCore/ExtCore-Sample-Simplest); -* [ExtCore framework 1.1.3 sample MVC web application](https://github.com/ExtCore/ExtCore-Sample-Mvc); -* [ExtCore framework 1.1.3 sample web application that uses a database](https://github.com/ExtCore/ExtCore-Sample-Data); -* [ExtCore framework 1.1.3 sample web application with modular UI](https://github.com/ExtCore/ExtCore-Sample-Modular-Ui); -* [ExtCore framework 1.1.3 sample web application that registers a service inside the extension](https://github.com/ExtCore/ExtCore-Sample-Service); +* [Full-featured ExtCore 1.2.0 framework sample web application](https://github.com/ExtCore/ExtCore-Sample); +* [ExtCore framework 1.2.0 sample simplest web application](https://github.com/ExtCore/ExtCore-Sample-Simplest); +* [ExtCore framework 1.2.0 sample MVC web application](https://github.com/ExtCore/ExtCore-Sample-Mvc); +* [ExtCore framework 1.2.0 sample web application that uses a database](https://github.com/ExtCore/ExtCore-Sample-Data); +* [ExtCore framework 1.2.0 sample web application with modular UI](https://github.com/ExtCore/ExtCore-Sample-Modular-Ui); +* [ExtCore framework 1.2.0 advanced sample web application with modular UI](https://github.com/ExtCore/ExtCore-Sample-Modular-Ui-Adv); +* [ExtCore framework 1.2.0 sample web application that registers a service inside the extension](https://github.com/ExtCore/ExtCore-Sample-Service); * [ExtCore framework 1.2.0 sample web application that uses the events](https://github.com/ExtCore/ExtCore-Sample-Events); -* [ExtCore framework 1.1.3 sample API web application](https://github.com/ExtCore/ExtCore-Sample-Api). +* [ExtCore framework 1.2.0 sample API web application](https://github.com/ExtCore/ExtCore-Sample-Api). -You can also download our [ready to use full-featured sample](http://extcore.net/files/ExtCore-Sample-1.1.3.zip). +You can also download our [ready to use full-featured sample](http://extcore.net/files/ExtCore-Sample-1.2.0.zip). It contains everything you need to run ExtCore-based web application from Visual Studio 2017, including SQLite database with the test data. diff --git a/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj b/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj index d3a35e9..39b4ca4 100644 --- a/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj +++ b/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj @@ -3,7 +3,7 @@ Part of the ExtCore.Data ExtCore framework extension. Copyright © 2015 Dmitry Sikorsky - 1.2.0-beta2 + 1.2.0 Dmitry Sikorsky netstandard1.6 ExtCore.Data.Abstractions diff --git a/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj b/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj index 2fa3f09..f2d8de0 100644 --- a/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj +++ b/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj @@ -3,7 +3,7 @@ Part of the ExtCore.Data ExtCore framework extension. Copyright © 2015 Dmitry Sikorsky - 1.2.0-beta2 + 1.2.0 Dmitry Sikorsky netstandard1.6 ExtCore.Data.EntityFramework.PostgreSql diff --git a/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj b/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj index a73da2f..dd70c45 100644 --- a/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj +++ b/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj @@ -3,7 +3,7 @@ Part of the ExtCore.Data ExtCore framework extension. Copyright © 2015 Dmitry Sikorsky - 1.2.0-beta2 + 1.2.0 Dmitry Sikorsky netstandard1.6 ExtCore.Data.EntityFramework.SqlServer diff --git a/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj b/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj index 975311b..fe49561 100644 --- a/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj +++ b/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj @@ -3,7 +3,7 @@ Part of the ExtCore.Data ExtCore framework extension. Copyright © 2015 Dmitry Sikorsky - 1.2.0-beta2 + 1.2.0 Dmitry Sikorsky netstandard1.6 ExtCore.Data.EntityFramework.Sqlite diff --git a/src/ExtCore.Data.Models.Abstractions/ExtCore.Data.Models.Abstractions.csproj b/src/ExtCore.Data.Models.Abstractions/ExtCore.Data.Models.Abstractions.csproj index af050a5..d7ccbc1 100644 --- a/src/ExtCore.Data.Models.Abstractions/ExtCore.Data.Models.Abstractions.csproj +++ b/src/ExtCore.Data.Models.Abstractions/ExtCore.Data.Models.Abstractions.csproj @@ -3,7 +3,7 @@ Part of the ExtCore.Data ExtCore framework extension. Copyright © 2015 Dmitry Sikorsky - 1.2.0-beta2 + 1.2.0 Dmitry Sikorsky netstandard1.6 ExtCore.Data.Models.Abstractions diff --git a/src/ExtCore.Data/ExtCore.Data.csproj b/src/ExtCore.Data/ExtCore.Data.csproj index d5c8f11..4707f77 100644 --- a/src/ExtCore.Data/ExtCore.Data.csproj +++ b/src/ExtCore.Data/ExtCore.Data.csproj @@ -3,7 +3,7 @@ Part of the ExtCore.Data ExtCore framework extension. Copyright © 2015 Dmitry Sikorsky - 1.2.0-beta2 + 1.2.0 Dmitry Sikorsky netstandard1.6 ExtCore.Data diff --git a/src/ExtCore.Events/ExtCore.Events.csproj b/src/ExtCore.Events/ExtCore.Events.csproj index f20167c..b7a39c0 100644 --- a/src/ExtCore.Events/ExtCore.Events.csproj +++ b/src/ExtCore.Events/ExtCore.Events.csproj @@ -3,7 +3,7 @@ Part of the ExtCore.Events ExtCore framework extension. Copyright © 2017 Dmitry Sikorsky - 1.2.0-beta2 + 1.2.0 Dmitry Sikorsky netstandard1.6 ExtCore.Events diff --git a/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj b/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj index cdb5140..f514c91 100644 --- a/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj +++ b/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj @@ -3,7 +3,7 @@ Free, open source and cross-platform framework for creating modular and extendable web applications based on ASP.NET Core 1.1.0. Copyright © 2015 Dmitry Sikorsky - 1.2.0-beta2 + 1.2.0 Dmitry Sikorsky netstandard1.6 ExtCore.Infrastructure diff --git a/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj b/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj index 172d312..0e81bac 100644 --- a/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj +++ b/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj @@ -3,7 +3,7 @@ Part of the ExtCore.Mvc ExtCore framework extension. Copyright © 2015 Dmitry Sikorsky - 1.2.0-beta2 + 1.2.0 Dmitry Sikorsky netstandard1.6 ExtCore.Mvc.Infrastructure diff --git a/src/ExtCore.Mvc/ExtCore.Mvc.csproj b/src/ExtCore.Mvc/ExtCore.Mvc.csproj index 0c9e6f6..fe01b5c 100644 --- a/src/ExtCore.Mvc/ExtCore.Mvc.csproj +++ b/src/ExtCore.Mvc/ExtCore.Mvc.csproj @@ -3,7 +3,7 @@ Part of the ExtCore.Mvc ExtCore framework extension. Copyright © 2015 Dmitry Sikorsky - 1.2.0-beta2 + 1.2.0 Dmitry Sikorsky netstandard1.6 ExtCore.Mvc diff --git a/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj b/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj index af8c2cb..bd2c148 100644 --- a/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj +++ b/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj @@ -3,7 +3,7 @@ Free, open source and cross-platform framework for creating modular and extendable web applications based on ASP.NET Core 1.1.0. Copyright © 2015 Dmitry Sikorsky - 1.2.0-beta2 + 1.2.0 Dmitry Sikorsky netstandard1.6 ExtCore.WebApplication From 3d9a746168b93afe806f06df7e1fc7b5277ddf50 Mon Sep 17 00:00:00 2001 From: Dmitry Sikorsky Date: Thu, 22 Jun 2017 15:46:29 +0300 Subject: [PATCH 05/81] Added one more sample to README --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index ddbf3f3..0698d0a 100644 --- a/README.md +++ b/README.md @@ -95,6 +95,7 @@ Please take a look at our samples on GitHub: * [ExtCore framework 1.2.0 sample web application that uses a database](https://github.com/ExtCore/ExtCore-Sample-Data); * [ExtCore framework 1.2.0 sample web application with modular UI](https://github.com/ExtCore/ExtCore-Sample-Modular-Ui); * [ExtCore framework 1.2.0 advanced sample web application with modular UI](https://github.com/ExtCore/ExtCore-Sample-Modular-Ui-Adv); +* [ExtCore framework 1.2.0 advanced sample accounting web application](https://github.com/ExtCore/ExtCore-Sample-Accounting); * [ExtCore framework 1.2.0 sample web application that registers a service inside the extension](https://github.com/ExtCore/ExtCore-Sample-Service); * [ExtCore framework 1.2.0 sample web application that uses the events](https://github.com/ExtCore/ExtCore-Sample-Events); * [ExtCore framework 1.2.0 sample API web application](https://github.com/ExtCore/ExtCore-Sample-Api). From 7c784db760f0fdd10747e81169254f0d65629200 Mon Sep 17 00:00:00 2001 From: Dmitry Sikorsky Date: Fri, 30 Jun 2017 12:46:50 +0300 Subject: [PATCH 06/81] Changed the whole approach to using ExtCore and updated version to 2.0.0-alpha1 --- ExtCore.sln | 32 ++-- README.md | 22 ++- .../ExtCore.Data.Abstractions.csproj | 2 +- src/ExtCore.Data.Abstractions/IStorage.cs | 5 + ...ExtCore.Data.Entities.Abstractions.csproj} | 6 +- .../IEntity.cs | 2 +- ...ore.Data.EntityFramework.PostgreSql.csproj | 6 +- .../IModelRegistrar.cs | 19 --- .../RepositoryBase.cs | 28 ---- .../Storage.cs | 55 ------- .../StorageContext.cs | 22 +-- ...Core.Data.EntityFramework.SqlServer.csproj | 6 +- .../IModelRegistrar.cs | 19 --- .../RepositoryBase.cs | 28 ---- .../Storage.cs | 55 ------- .../StorageContext.cs | 22 +-- ...ExtCore.Data.EntityFramework.Sqlite.csproj | 6 +- .../IModelRegistrar.cs | 19 --- .../StorageContext.cs | 22 +-- .../Actions/AddStorageContextAction.cs | 50 ++++++ .../ExtCore.Data.EntityFramework.csproj | 25 +++ src/ExtCore.Data.EntityFramework/Extension.cs | 34 ++++ .../Extensions/StorageContextExtensions.cs | 27 +++ .../IEntityRegistrar.cs | 19 +++ .../RepositoryBase.cs | 14 +- .../Storage.cs | 26 +-- .../StorageContextBase.cs | 36 ++++ .../StorageContextOptions.cs | 16 ++ src/ExtCore.Data/Actions/AddStorageAction.cs | 50 ++++++ src/ExtCore.Data/DataExtension.cs | 56 ------- src/ExtCore.Data/ExtCore.Data.csproj | 2 +- src/ExtCore.Data/Extension.cs | 33 ++++ src/ExtCore.Events/ExtCore.Events.csproj | 2 +- src/ExtCore.Events/Extension.cs | 33 ++++ .../Actions/IConfigureAction.cs | 31 ++++ .../Actions/IConfigureServicesAction.cs | 31 ++++ .../ExtCore.Infrastructure.csproj | 3 +- src/ExtCore.Infrastructure/ExtensionBase.cs | 70 ++------ .../ExtensionManager.cs | 21 +-- src/ExtCore.Infrastructure/IExtension.cs | 39 ++--- .../Actions/IAddMvcAction.cs | 31 ++++ .../Actions/IUseMvcAction.cs | 31 ++++ .../ExtCore.Mvc.Infrastructure.csproj | 2 +- .../ExtensionBase.cs | 45 ----- src/ExtCore.Mvc.Infrastructure/IExtension.cs | 34 ---- src/ExtCore.Mvc/Actions/AddMvcAction.cs | 60 +++++++ .../Actions/AddStaticFilesAction.cs | 52 ++++++ src/ExtCore.Mvc/Actions/UseMvcAction.cs | 51 ++++++ .../Actions/UseStaticFilesAction.cs | 36 ++++ src/ExtCore.Mvc/ExtCore.Mvc.csproj | 2 +- src/ExtCore.Mvc/Extension.cs | 33 ++++ src/ExtCore.Mvc/MvcExtension.cs | 155 ------------------ ...Provider.cs => DefaultAssemblyProvider.cs} | 18 +- .../ExtCore.WebApplication.csproj | 2 +- .../ApplicationBuilderExtensions.cs | 36 ++++ .../Extensions/ServiceCollectionExtensions.cs | 74 +++++++++ .../IAssemblyProvider.cs | 2 +- src/ExtCore.WebApplication/Startup.cs | 145 ---------------- 58 files changed, 907 insertions(+), 896 deletions(-) rename src/{ExtCore.Data.Models.Abstractions/ExtCore.Data.Models.Abstractions.csproj => ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj} (75%) rename src/{ExtCore.Data.Models.Abstractions => ExtCore.Data.Entities.Abstractions}/IEntity.cs (85%) delete mode 100644 src/ExtCore.Data.EntityFramework.PostgreSql/IModelRegistrar.cs delete mode 100644 src/ExtCore.Data.EntityFramework.PostgreSql/RepositoryBase.cs delete mode 100644 src/ExtCore.Data.EntityFramework.PostgreSql/Storage.cs delete mode 100644 src/ExtCore.Data.EntityFramework.SqlServer/IModelRegistrar.cs delete mode 100644 src/ExtCore.Data.EntityFramework.SqlServer/RepositoryBase.cs delete mode 100644 src/ExtCore.Data.EntityFramework.SqlServer/Storage.cs delete mode 100644 src/ExtCore.Data.EntityFramework.Sqlite/IModelRegistrar.cs create mode 100644 src/ExtCore.Data.EntityFramework/Actions/AddStorageContextAction.cs create mode 100644 src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj create mode 100644 src/ExtCore.Data.EntityFramework/Extension.cs create mode 100644 src/ExtCore.Data.EntityFramework/Extensions/StorageContextExtensions.cs create mode 100644 src/ExtCore.Data.EntityFramework/IEntityRegistrar.cs rename src/{ExtCore.Data.EntityFramework.Sqlite => ExtCore.Data.EntityFramework}/RepositoryBase.cs (58%) rename src/{ExtCore.Data.EntityFramework.Sqlite => ExtCore.Data.EntityFramework}/Storage.cs (56%) create mode 100644 src/ExtCore.Data.EntityFramework/StorageContextBase.cs create mode 100644 src/ExtCore.Data.EntityFramework/StorageContextOptions.cs create mode 100644 src/ExtCore.Data/Actions/AddStorageAction.cs delete mode 100644 src/ExtCore.Data/DataExtension.cs create mode 100644 src/ExtCore.Data/Extension.cs create mode 100644 src/ExtCore.Events/Extension.cs create mode 100644 src/ExtCore.Infrastructure/Actions/IConfigureAction.cs create mode 100644 src/ExtCore.Infrastructure/Actions/IConfigureServicesAction.cs create mode 100644 src/ExtCore.Mvc.Infrastructure/Actions/IAddMvcAction.cs create mode 100644 src/ExtCore.Mvc.Infrastructure/Actions/IUseMvcAction.cs delete mode 100644 src/ExtCore.Mvc.Infrastructure/ExtensionBase.cs delete mode 100644 src/ExtCore.Mvc.Infrastructure/IExtension.cs create mode 100644 src/ExtCore.Mvc/Actions/AddMvcAction.cs create mode 100644 src/ExtCore.Mvc/Actions/AddStaticFilesAction.cs create mode 100644 src/ExtCore.Mvc/Actions/UseMvcAction.cs create mode 100644 src/ExtCore.Mvc/Actions/UseStaticFilesAction.cs create mode 100644 src/ExtCore.Mvc/Extension.cs delete mode 100644 src/ExtCore.Mvc/MvcExtension.cs rename src/ExtCore.WebApplication/{AssemblyProvider.cs => DefaultAssemblyProvider.cs} (90%) create mode 100644 src/ExtCore.WebApplication/Extensions/ApplicationBuilderExtensions.cs create mode 100644 src/ExtCore.WebApplication/Extensions/ServiceCollectionExtensions.cs delete mode 100644 src/ExtCore.WebApplication/Startup.cs diff --git a/ExtCore.sln b/ExtCore.sln index 877b159..1ca862b 100644 --- a/ExtCore.sln +++ b/ExtCore.sln @@ -1,7 +1,7 @@  Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 15 -VisualStudioVersion = 15.0.26228.10 +VisualStudioVersion = 15.0.26430.14 MinimumVisualStudioVersion = 10.0.40219.1 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{0D7AEFA3-ABB0-4AF1-A4C1-F8E05C241753}" EndProject @@ -15,8 +15,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ExtCore.Mvc.Infrastructure" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ExtCore.Data", "src\ExtCore.Data\ExtCore.Data.csproj", "{BD3ADB01-9621-4A50-9D0E-8D4CC88A79D8}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ExtCore.Data.Models.Abstractions", "src\ExtCore.Data.Models.Abstractions\ExtCore.Data.Models.Abstractions.csproj", "{B713F760-F0A8-4A47-8FC0-2F08E85D5AF9}" -EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ExtCore.Data.Abstractions", "src\ExtCore.Data.Abstractions\ExtCore.Data.Abstractions.csproj", "{08204286-5843-46F5-B704-8F1183F7686E}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ExtCore.Data.EntityFramework.PostgreSql", "src\ExtCore.Data.EntityFramework.PostgreSql\ExtCore.Data.EntityFramework.PostgreSql.csproj", "{A5B17E64-9C8B-40EB-A4FD-637BB1E1BD05}" @@ -33,6 +31,12 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Events", "Events", "{B0915C EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ExtCore.Events", "src\ExtCore.Events\ExtCore.Events.csproj", "{3E5C83A3-2C66-4503-A3F8-542854D3D2EF}" EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ExtCore.Data.EntityFramework", "src\ExtCore.Data.EntityFramework\ExtCore.Data.EntityFramework.csproj", "{77F8B77C-440C-48D9-80FA-192FF49283C8}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ExtCore.Data.Entities.Abstractions", "src\ExtCore.Data.Entities.Abstractions\ExtCore.Data.Entities.Abstractions.csproj", "{A97967FC-B333-4C27-BAFE-4369C7695688}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Data.EntityFramework", "Data.EntityFramework", "{A770A286-2B75-4BF7-8300-24CEC8D072AD}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -59,10 +63,6 @@ Global {BD3ADB01-9621-4A50-9D0E-8D4CC88A79D8}.Debug|Any CPU.Build.0 = Debug|Any CPU {BD3ADB01-9621-4A50-9D0E-8D4CC88A79D8}.Release|Any CPU.ActiveCfg = Release|Any CPU {BD3ADB01-9621-4A50-9D0E-8D4CC88A79D8}.Release|Any CPU.Build.0 = Release|Any CPU - {B713F760-F0A8-4A47-8FC0-2F08E85D5AF9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B713F760-F0A8-4A47-8FC0-2F08E85D5AF9}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B713F760-F0A8-4A47-8FC0-2F08E85D5AF9}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B713F760-F0A8-4A47-8FC0-2F08E85D5AF9}.Release|Any CPU.Build.0 = Release|Any CPU {08204286-5843-46F5-B704-8F1183F7686E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {08204286-5843-46F5-B704-8F1183F7686E}.Debug|Any CPU.Build.0 = Debug|Any CPU {08204286-5843-46F5-B704-8F1183F7686E}.Release|Any CPU.ActiveCfg = Release|Any CPU @@ -83,6 +83,14 @@ Global {3E5C83A3-2C66-4503-A3F8-542854D3D2EF}.Debug|Any CPU.Build.0 = Debug|Any CPU {3E5C83A3-2C66-4503-A3F8-542854D3D2EF}.Release|Any CPU.ActiveCfg = Release|Any CPU {3E5C83A3-2C66-4503-A3F8-542854D3D2EF}.Release|Any CPU.Build.0 = Release|Any CPU + {77F8B77C-440C-48D9-80FA-192FF49283C8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {77F8B77C-440C-48D9-80FA-192FF49283C8}.Debug|Any CPU.Build.0 = Debug|Any CPU + {77F8B77C-440C-48D9-80FA-192FF49283C8}.Release|Any CPU.ActiveCfg = Release|Any CPU + {77F8B77C-440C-48D9-80FA-192FF49283C8}.Release|Any CPU.Build.0 = Release|Any CPU + {A97967FC-B333-4C27-BAFE-4369C7695688}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A97967FC-B333-4C27-BAFE-4369C7695688}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A97967FC-B333-4C27-BAFE-4369C7695688}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A97967FC-B333-4C27-BAFE-4369C7695688}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -93,14 +101,16 @@ Global {E68DD4A8-1B91-4444-BD2F-4FDDBC69DEF1} = {7EB40884-B578-412E-951F-356BC69088C2} {64AAD007-11ED-4C0C-93D1-FBE2BEA81493} = {7EB40884-B578-412E-951F-356BC69088C2} {BD3ADB01-9621-4A50-9D0E-8D4CC88A79D8} = {DD95EC14-4783-4E08-A5EC-6C110DC7FB01} - {B713F760-F0A8-4A47-8FC0-2F08E85D5AF9} = {DD95EC14-4783-4E08-A5EC-6C110DC7FB01} {08204286-5843-46F5-B704-8F1183F7686E} = {DD95EC14-4783-4E08-A5EC-6C110DC7FB01} - {A5B17E64-9C8B-40EB-A4FD-637BB1E1BD05} = {DD95EC14-4783-4E08-A5EC-6C110DC7FB01} - {0C0A69C5-1036-4925-8063-C8E7F6999287} = {DD95EC14-4783-4E08-A5EC-6C110DC7FB01} - {4B05A3AC-DCDF-454F-A105-C8DFDBFA5EE1} = {DD95EC14-4783-4E08-A5EC-6C110DC7FB01} + {A5B17E64-9C8B-40EB-A4FD-637BB1E1BD05} = {A770A286-2B75-4BF7-8300-24CEC8D072AD} + {0C0A69C5-1036-4925-8063-C8E7F6999287} = {A770A286-2B75-4BF7-8300-24CEC8D072AD} + {4B05A3AC-DCDF-454F-A105-C8DFDBFA5EE1} = {A770A286-2B75-4BF7-8300-24CEC8D072AD} {7EB40884-B578-412E-951F-356BC69088C2} = {0D7AEFA3-ABB0-4AF1-A4C1-F8E05C241753} {DD95EC14-4783-4E08-A5EC-6C110DC7FB01} = {0D7AEFA3-ABB0-4AF1-A4C1-F8E05C241753} {B0915CA5-EB7A-428E-8A6E-344CB8CE5368} = {0D7AEFA3-ABB0-4AF1-A4C1-F8E05C241753} {3E5C83A3-2C66-4503-A3F8-542854D3D2EF} = {B0915CA5-EB7A-428E-8A6E-344CB8CE5368} + {77F8B77C-440C-48D9-80FA-192FF49283C8} = {A770A286-2B75-4BF7-8300-24CEC8D072AD} + {A97967FC-B333-4C27-BAFE-4369C7695688} = {DD95EC14-4783-4E08-A5EC-6C110DC7FB01} + {A770A286-2B75-4BF7-8300-24CEC8D072AD} = {0D7AEFA3-ABB0-4AF1-A4C1-F8E05C241753} EndGlobalSection EndGlobal diff --git a/README.md b/README.md index 0698d0a..7a0e877 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# ExtCore 1.2.0 +# ExtCore 2.0.0-alpha1 [![Join the chat at https://gitter.im/ExtCore/ExtCore](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/ExtCore/ExtCore?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) @@ -27,7 +27,7 @@ Any module or extension can execute its own code during the web application init use priorities to specify the correct order of the calls. This feature might be used for configuration, to register services etc. -ExtCore consists of two general packages and two optional basic extensions. +ExtCore consists of two general packages and three optional basic extensions. ### General Packages @@ -55,14 +55,19 @@ AssemblyProvider class which is used to discover assemblies and might be replace ExtCore basic extensions are: * ExtCore.Data; +* ExtCore.Data.EntityFramework; * ExtCore.Mvc; * ExtCore.Events. #### ExtCore.Data By default, ExtCore doesn’t know anything about data and storage, but you can use ExtCore.Data extension to have -unified approach to working with data and single storage context among all the extensions. Currently it supports -Microsoft SQL Server, PostgreSql and SQLite, but it is very easy to add another storage support. +unified approach to working with data and single storage context among all the extensions. Storage might be represented +by a database, a web API, a file structure or anything else. + +#### ExtCore.Data.EntityFramework + +Currently it supports Microsoft SQL Server, PostgreSql, and SQLite, but it is very easy to add another storage support. #### ExtCore.Mvc @@ -81,9 +86,10 @@ You can find more information using the links at the bottom of this page. All you need to do to have modular and extendable web application is: * add ExtCore.WebApplication as dependency to your main web application project; -* inherit your main application’s Startup class from ExtCore.WebApplication.Startup; -* implement ExtCore.Infrastructure.IExtension interface in each of your extensions (optional); -* tell main web application about the extensions. +* call AddExtCore and UseExtCore inside your web application's Startup class; +* implement the ExtCore.Infrastructure.IConfigureServicesAction and IConfigureAction interfaces in your extensions +in order to execute some code inside the ConfigureServices and Configure methods of the web application's Startup class (optional); +* tell main web application about the extensions (with implicit dependencies or by copying them into the extensions folder). ### Samples @@ -112,7 +118,7 @@ to help you start developing your ExtCore-based web applications. ### Real Projects Please take a look at [Platformus](https://github.com/Platformus/Platformus) on GitHub. It is CMS -built on ExtCore framework with 10 extensions and 70 projects. +built on ExtCore framework with more than 10 extensions and 70 projects. ## Development and Debug diff --git a/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj b/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj index 39b4ca4..df274c7 100644 --- a/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj +++ b/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj @@ -3,7 +3,7 @@ Part of the ExtCore.Data ExtCore framework extension. Copyright © 2015 Dmitry Sikorsky - 1.2.0 + 2.0.0-alpha1 Dmitry Sikorsky netstandard1.6 ExtCore.Data.Abstractions diff --git a/src/ExtCore.Data.Abstractions/IStorage.cs b/src/ExtCore.Data.Abstractions/IStorage.cs index ff145b5..31fa638 100644 --- a/src/ExtCore.Data.Abstractions/IStorage.cs +++ b/src/ExtCore.Data.Abstractions/IStorage.cs @@ -10,6 +10,11 @@ namespace ExtCore.Data.Abstractions /// public interface IStorage { + /// + /// Gets the underlying storage context used by this storage. + /// + IStorageContext StorageContext { get; } + /// /// Gets a repository of the given type. /// diff --git a/src/ExtCore.Data.Models.Abstractions/ExtCore.Data.Models.Abstractions.csproj b/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj similarity index 75% rename from src/ExtCore.Data.Models.Abstractions/ExtCore.Data.Models.Abstractions.csproj rename to src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj index d7ccbc1..c0d516b 100644 --- a/src/ExtCore.Data.Models.Abstractions/ExtCore.Data.Models.Abstractions.csproj +++ b/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj @@ -3,11 +3,11 @@ Part of the ExtCore.Data ExtCore framework extension. Copyright © 2015 Dmitry Sikorsky - 1.2.0 + 2.0.0-alpha1 Dmitry Sikorsky netstandard1.6 - ExtCore.Data.Models.Abstractions - ExtCore.Data.Models.Abstractions + ExtCore.Data.Entities.Abstractions + ExtCore.Data.Entities.Abstractions http://extcore.net/extcore_nuget_icon.png http://extcore.net/ 1.6.1 diff --git a/src/ExtCore.Data.Models.Abstractions/IEntity.cs b/src/ExtCore.Data.Entities.Abstractions/IEntity.cs similarity index 85% rename from src/ExtCore.Data.Models.Abstractions/IEntity.cs rename to src/ExtCore.Data.Entities.Abstractions/IEntity.cs index f306cf8..b6c8236 100644 --- a/src/ExtCore.Data.Models.Abstractions/IEntity.cs +++ b/src/ExtCore.Data.Entities.Abstractions/IEntity.cs @@ -1,7 +1,7 @@ // Copyright © 2015 Dmitry Sikorsky. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. -namespace ExtCore.Data.Models.Abstractions +namespace ExtCore.Data.Entities.Abstractions { /// /// Describes an entity. diff --git a/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj b/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj index f2d8de0..11d96af 100644 --- a/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj +++ b/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj @@ -3,7 +3,7 @@ Part of the ExtCore.Data ExtCore framework extension. Copyright © 2015 Dmitry Sikorsky - 1.2.0 + 2.0.0-alpha1 Dmitry Sikorsky netstandard1.6 ExtCore.Data.EntityFramework.PostgreSql @@ -13,9 +13,7 @@ - - - + diff --git a/src/ExtCore.Data.EntityFramework.PostgreSql/IModelRegistrar.cs b/src/ExtCore.Data.EntityFramework.PostgreSql/IModelRegistrar.cs deleted file mode 100644 index 18f56f9..0000000 --- a/src/ExtCore.Data.EntityFramework.PostgreSql/IModelRegistrar.cs +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright © 2015 Dmitry Sikorsky. All rights reserved. -// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. - -using Microsoft.EntityFrameworkCore; - -namespace ExtCore.Data.EntityFramework.PostgreSql -{ - /// - /// Describes a mechanism of registering entities inside the PostgreSQL storage context. - /// - public interface IModelRegistrar - { - /// - /// Registers entities inside the PostgreSQL storage context. - /// - /// The Entity Framework model builder. - void RegisterModels(ModelBuilder modelbuilder); - } -} \ No newline at end of file diff --git a/src/ExtCore.Data.EntityFramework.PostgreSql/RepositoryBase.cs b/src/ExtCore.Data.EntityFramework.PostgreSql/RepositoryBase.cs deleted file mode 100644 index 341236a..0000000 --- a/src/ExtCore.Data.EntityFramework.PostgreSql/RepositoryBase.cs +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright © 2015 Dmitry Sikorsky. All rights reserved. -// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. - -using ExtCore.Data.Abstractions; -using ExtCore.Data.Models.Abstractions; -using Microsoft.EntityFrameworkCore; - -namespace ExtCore.Data.EntityFramework.PostgreSql -{ - /// - /// Implements the IRepository interface and represents default repository behavior. - /// - public abstract class RepositoryBase : IRepository where TEntity : class, IEntity - { - protected StorageContext storageContext; - protected DbSet dbSet; - - /// - /// Sets the storage context that represents the PostgreSQL database to work with. - /// - /// The storage context to set. - public void SetStorageContext(IStorageContext storageContext) - { - this.storageContext = storageContext as StorageContext; - this.dbSet = this.storageContext.Set(); - } - } -} \ No newline at end of file diff --git a/src/ExtCore.Data.EntityFramework.PostgreSql/Storage.cs b/src/ExtCore.Data.EntityFramework.PostgreSql/Storage.cs deleted file mode 100644 index 96aef79..0000000 --- a/src/ExtCore.Data.EntityFramework.PostgreSql/Storage.cs +++ /dev/null @@ -1,55 +0,0 @@ -// Copyright © 2015 Dmitry Sikorsky. All rights reserved. -// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. - -using ExtCore.Data.Abstractions; -using ExtCore.Infrastructure; - -namespace ExtCore.Data.EntityFramework.PostgreSql -{ - /// - /// Implements the IStorage interface and represents implementation of the - /// Unit of Work design pattern with the mechanism of getting the repositories to work with the underlying - /// PostgreSQL database storage context and committing the changes made by all the repositories. - /// - public class Storage : IStorage - { - /// - /// Gets or sets the connection string that is used to connect to the PostgreSQL database. - /// - public static string ConnectionString { get; set; } - - /// - /// Gets or sets the storage context that represents the PostgreSQL database. - /// - public StorageContext StorageContext { get; private set; } - - /// - /// Initializes a new instance of the Storage class. - /// - public Storage() - { - this.StorageContext = new StorageContext(Storage.ConnectionString); - } - - /// - /// Gets a repository of the given type. - /// - /// The type parameter to find implementation of. - /// - public TRepository GetRepository() where TRepository : IRepository - { - TRepository repository = ExtensionManager.GetInstance(a => a.FullName.ToLower().Contains("entityframework.postgresql")); - - repository.SetStorageContext(this.StorageContext); - return repository; - } - - /// - /// Commits the changes made by all the repositories. - /// - public void Save() - { - this.StorageContext.SaveChanges(); - } - } -} \ No newline at end of file diff --git a/src/ExtCore.Data.EntityFramework.PostgreSql/StorageContext.cs b/src/ExtCore.Data.EntityFramework.PostgreSql/StorageContext.cs index 883700a..0bb1e75 100644 --- a/src/ExtCore.Data.EntityFramework.PostgreSql/StorageContext.cs +++ b/src/ExtCore.Data.EntityFramework.PostgreSql/StorageContext.cs @@ -1,9 +1,8 @@ // Copyright © 2015 Dmitry Sikorsky. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. -using ExtCore.Data.Abstractions; -using ExtCore.Infrastructure; using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.Options; namespace ExtCore.Data.EntityFramework.PostgreSql { @@ -11,31 +10,18 @@ namespace ExtCore.Data.EntityFramework.PostgreSql /// Implements the IStorageContext interface and represents PostgreSQL database /// with the Entity Framework Core as the ORM. /// - public class StorageContext : DbContext, IStorageContext + public class StorageContext : StorageContextBase { - private string connectionString { get; set; } - /// /// Initializes a new instance of the StorageContext class. /// /// The connection string that is used to connect to the PostgreSQL database. - public StorageContext(string connectionString) - { - this.connectionString = connectionString; - } + public StorageContext(IOptions options) : base(options) { } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { base.OnConfiguring(optionsBuilder); - optionsBuilder.UseNpgsql(this.connectionString); - } - - protected override void OnModelCreating(ModelBuilder modelBuilder) - { - base.OnModelCreating(modelBuilder); - - foreach (IModelRegistrar modelRegistrar in ExtensionManager.GetInstances(a => a.FullName.ToLower().Contains("entityframework.postgresql"))) - modelRegistrar.RegisterModels(modelBuilder); + optionsBuilder.UseNpgsql(this.ConnectionString); } } } \ No newline at end of file diff --git a/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj b/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj index dd70c45..09bf307 100644 --- a/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj +++ b/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj @@ -3,7 +3,7 @@ Part of the ExtCore.Data ExtCore framework extension. Copyright © 2015 Dmitry Sikorsky - 1.2.0 + 2.0.0-alpha1 Dmitry Sikorsky netstandard1.6 ExtCore.Data.EntityFramework.SqlServer @@ -13,9 +13,7 @@ - - - + diff --git a/src/ExtCore.Data.EntityFramework.SqlServer/IModelRegistrar.cs b/src/ExtCore.Data.EntityFramework.SqlServer/IModelRegistrar.cs deleted file mode 100644 index 92f0f25..0000000 --- a/src/ExtCore.Data.EntityFramework.SqlServer/IModelRegistrar.cs +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright © 2015 Dmitry Sikorsky. All rights reserved. -// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. - -using Microsoft.EntityFrameworkCore; - -namespace ExtCore.Data.EntityFramework.SqlServer -{ - /// - /// Describes a mechanism of registering entities inside the SQL Server storage context. - /// - public interface IModelRegistrar - { - /// - /// Registers entities inside the SQL Server storage context. - /// - /// The Entity Framework model builder. - void RegisterModels(ModelBuilder modelbuilder); - } -} \ No newline at end of file diff --git a/src/ExtCore.Data.EntityFramework.SqlServer/RepositoryBase.cs b/src/ExtCore.Data.EntityFramework.SqlServer/RepositoryBase.cs deleted file mode 100644 index 391dba3..0000000 --- a/src/ExtCore.Data.EntityFramework.SqlServer/RepositoryBase.cs +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright © 2015 Dmitry Sikorsky. All rights reserved. -// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. - -using ExtCore.Data.Abstractions; -using ExtCore.Data.Models.Abstractions; -using Microsoft.EntityFrameworkCore; - -namespace ExtCore.Data.EntityFramework.SqlServer -{ - /// - /// Implements the IRepository interface and represents default repository behavior. - /// - public abstract class RepositoryBase : IRepository where TEntity : class, IEntity - { - protected StorageContext storageContext; - protected DbSet dbSet; - - /// - /// Sets the storage context that represents the SQL Server database to work with. - /// - /// The storage context to set. - public void SetStorageContext(IStorageContext storageContext) - { - this.storageContext = storageContext as StorageContext; - this.dbSet = this.storageContext.Set(); - } - } -} \ No newline at end of file diff --git a/src/ExtCore.Data.EntityFramework.SqlServer/Storage.cs b/src/ExtCore.Data.EntityFramework.SqlServer/Storage.cs deleted file mode 100644 index 316e21c..0000000 --- a/src/ExtCore.Data.EntityFramework.SqlServer/Storage.cs +++ /dev/null @@ -1,55 +0,0 @@ -// Copyright © 2015 Dmitry Sikorsky. All rights reserved. -// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. - -using ExtCore.Data.Abstractions; -using ExtCore.Infrastructure; - -namespace ExtCore.Data.EntityFramework.SqlServer -{ - /// - /// Implements the IStorage interface and represents implementation of the - /// Unit of Work design pattern with the mechanism of getting the repositories to work with the underlying - /// SQL Server database storage context and committing the changes made by all the repositories. - /// - public class Storage : IStorage - { - /// - /// Gets or sets the connection string that is used to connect to the SQL Server database. - /// - public static string ConnectionString { get; set; } - - /// - /// Gets or sets the storage context that represents the SQL Server database. - /// - public StorageContext StorageContext { get; private set; } - - /// - /// Initializes a new instance of the Storage class. - /// - public Storage() - { - this.StorageContext = new StorageContext(Storage.ConnectionString); - } - - /// - /// Gets a repository of the given type. - /// - /// The type parameter to find implementation of. - /// - public TRepository GetRepository() where TRepository : IRepository - { - TRepository repository = ExtensionManager.GetInstance(a => a.FullName.ToLower().Contains("entityframework.sqlserver")); - - repository.SetStorageContext(this.StorageContext); - return repository; - } - - /// - /// Commits the changes made by all the repositories. - /// - public void Save() - { - this.StorageContext.SaveChanges(); - } - } -} \ No newline at end of file diff --git a/src/ExtCore.Data.EntityFramework.SqlServer/StorageContext.cs b/src/ExtCore.Data.EntityFramework.SqlServer/StorageContext.cs index 7aa30b1..2f69c59 100644 --- a/src/ExtCore.Data.EntityFramework.SqlServer/StorageContext.cs +++ b/src/ExtCore.Data.EntityFramework.SqlServer/StorageContext.cs @@ -1,9 +1,8 @@ // Copyright © 2015 Dmitry Sikorsky. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. -using ExtCore.Data.Abstractions; -using ExtCore.Infrastructure; using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.Options; namespace ExtCore.Data.EntityFramework.SqlServer { @@ -11,31 +10,18 @@ namespace ExtCore.Data.EntityFramework.SqlServer /// Implements the IStorageContext interface and represents SQL Server database /// with the Entity Framework Core as the ORM. /// - public class StorageContext : DbContext, IStorageContext + public class StorageContext : StorageContextBase { - private string connectionString { get; set; } - /// /// Initializes a new instance of the StorageContext class. /// /// The connection string that is used to connect to the SQL Server database. - public StorageContext(string connectionString) - { - this.connectionString = connectionString; - } + public StorageContext(IOptions options) : base(options) { } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { base.OnConfiguring(optionsBuilder); - optionsBuilder.UseSqlServer(this.connectionString); - } - - protected override void OnModelCreating(ModelBuilder modelBuilder) - { - base.OnModelCreating(modelBuilder); - - foreach (IModelRegistrar modelRegistrar in ExtensionManager.GetInstances(a => a.FullName.ToLower().Contains("entityframework.sqlserver"))) - modelRegistrar.RegisterModels(modelBuilder); + optionsBuilder.UseSqlServer(this.ConnectionString); } } } \ No newline at end of file diff --git a/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj b/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj index fe49561..3a0ba81 100644 --- a/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj +++ b/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj @@ -3,7 +3,7 @@ Part of the ExtCore.Data ExtCore framework extension. Copyright © 2015 Dmitry Sikorsky - 1.2.0 + 2.0.0-alpha1 Dmitry Sikorsky netstandard1.6 ExtCore.Data.EntityFramework.Sqlite @@ -13,9 +13,7 @@ - - - + diff --git a/src/ExtCore.Data.EntityFramework.Sqlite/IModelRegistrar.cs b/src/ExtCore.Data.EntityFramework.Sqlite/IModelRegistrar.cs deleted file mode 100644 index fe9f3db..0000000 --- a/src/ExtCore.Data.EntityFramework.Sqlite/IModelRegistrar.cs +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright © 2015 Dmitry Sikorsky. All rights reserved. -// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. - -using Microsoft.EntityFrameworkCore; - -namespace ExtCore.Data.EntityFramework.Sqlite -{ - /// - /// Describes a mechanism of registering entities inside the SQLite storage context. - /// - public interface IModelRegistrar - { - /// - /// Registers entities inside the SQLite storage context. - /// - /// The Entity Framework model builder. - void RegisterModels(ModelBuilder modelbuilder); - } -} \ No newline at end of file diff --git a/src/ExtCore.Data.EntityFramework.Sqlite/StorageContext.cs b/src/ExtCore.Data.EntityFramework.Sqlite/StorageContext.cs index 940a33a..10c560b 100644 --- a/src/ExtCore.Data.EntityFramework.Sqlite/StorageContext.cs +++ b/src/ExtCore.Data.EntityFramework.Sqlite/StorageContext.cs @@ -1,9 +1,8 @@ // Copyright © 2015 Dmitry Sikorsky. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. -using ExtCore.Data.Abstractions; -using ExtCore.Infrastructure; using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.Options; namespace ExtCore.Data.EntityFramework.Sqlite { @@ -11,31 +10,18 @@ namespace ExtCore.Data.EntityFramework.Sqlite /// Implements the IStorageContext interface and represents SQLite database /// with the Entity Framework Core as the ORM. /// - public class StorageContext : DbContext, IStorageContext + public class StorageContext : StorageContextBase { - private string connectionString { get; set; } - /// /// Initializes a new instance of the StorageContext class. /// /// The connection string that is used to connect to the SQLite database. - public StorageContext(string connectionString) - { - this.connectionString = connectionString; - } + public StorageContext(IOptions options) : base(options) { } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { base.OnConfiguring(optionsBuilder); - optionsBuilder.UseSqlite(this.connectionString); - } - - protected override void OnModelCreating(ModelBuilder modelBuilder) - { - base.OnModelCreating(modelBuilder); - - foreach (IModelRegistrar modelRegistrar in ExtensionManager.GetInstances(a => a.FullName.ToLower().Contains("entityframework.sqlite"))) - modelRegistrar.RegisterModels(modelBuilder); + optionsBuilder.UseSqlite(this.ConnectionString); } } } \ No newline at end of file diff --git a/src/ExtCore.Data.EntityFramework/Actions/AddStorageContextAction.cs b/src/ExtCore.Data.EntityFramework/Actions/AddStorageContextAction.cs new file mode 100644 index 0000000..26480cf --- /dev/null +++ b/src/ExtCore.Data.EntityFramework/Actions/AddStorageContextAction.cs @@ -0,0 +1,50 @@ +// Copyright © 2017 Dmitry Sikorsky. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Linq; +using System.Reflection; +using ExtCore.Data.Abstractions; +using ExtCore.Infrastructure; +using ExtCore.Infrastructure.Actions; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Logging; + +namespace ExtCore.Data.EntityFramework.Actions +{ + /// + /// Implements the IConfigureServicesAction interface and + /// registers found implementation of the IStorageContext interface inside the DI. + /// + public class AddStaticFilesAction : IConfigureServicesAction + { + /// + /// Priority of the action. The actions will be executed in the order specified by the priority (from smallest to largest). + /// + public int Priority => 1000; + + /// + /// Registers found implementation of the IStorageContext interface inside the DI. + /// + /// + /// Will be provided by the ExtCore and might be used to register any service inside the DI. + /// + /// + /// Will be provided by the ExtCore and might be used to get any service that is registered inside the DI at this moment. + /// + public void Execute(IServiceCollection services, IServiceProvider serviceProvider) + { + Type type = ExtensionManager.GetImplementations()?.FirstOrDefault(t => !t.GetTypeInfo().IsAbstract); + + if (type == null) + { + ILogger logger = serviceProvider.GetService().CreateLogger("ExtCore.Data.EntityFramework"); + + logger.LogError("Implementation of ExtCore.Data.Abstractions.IStorageContext not found"); + return; + } + + services.AddScoped(typeof(IStorageContext), type); + } + } +} \ No newline at end of file diff --git a/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj b/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj new file mode 100644 index 0000000..f74df04 --- /dev/null +++ b/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj @@ -0,0 +1,25 @@ + + + + Part of the ExtCore.Data ExtCore framework extension. + Copyright © 2017 Dmitry Sikorsky + 2.0.0-alpha1 + Dmitry Sikorsky + netstandard1.6 + ExtCore.Data.EntityFramework + ExtCore.Data.EntityFramework + http://extcore.net/extcore_nuget_icon.png + http://extcore.net/ + + + + + + + + + + + + + diff --git a/src/ExtCore.Data.EntityFramework/Extension.cs b/src/ExtCore.Data.EntityFramework/Extension.cs new file mode 100644 index 0000000..35a6644 --- /dev/null +++ b/src/ExtCore.Data.EntityFramework/Extension.cs @@ -0,0 +1,34 @@ +// Copyright © 2017 Dmitry Sikorsky. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using ExtCore.Infrastructure; + +namespace ExtCore.Data.EntityFramework +{ + /// + /// Overrides the ExtensionBase class and provides the + /// ExtCore.Data.EntityFramework extension information. + /// + public class Extension : ExtensionBase + { + /// + /// Gets the name of the extension. + /// + public override string Name => "ExtCore.Data.EntityFramework"; + + /// + /// Gets the URL of the extension. + /// + public override string Url => "http://extcore.net/"; + + /// + /// Gets the version of the extension. + /// + public override string Version => "2.0.0-alpha1"; + + /// + /// Gets the authors of the extension (separated by commas). + /// + public override string Authors => "Dmitry Sikorsky"; + } +} \ No newline at end of file diff --git a/src/ExtCore.Data.EntityFramework/Extensions/StorageContextExtensions.cs b/src/ExtCore.Data.EntityFramework/Extensions/StorageContextExtensions.cs new file mode 100644 index 0000000..f8d15f5 --- /dev/null +++ b/src/ExtCore.Data.EntityFramework/Extensions/StorageContextExtensions.cs @@ -0,0 +1,27 @@ +// Copyright © 2017 Dmitry Sikorsky. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using ExtCore.Data.Abstractions; +using ExtCore.Infrastructure; +using Microsoft.EntityFrameworkCore; + +namespace ExtCore.Data.EntityFramework +{ + /// + /// Contains the extension methods of the IStorageContext interface. + /// + public static class StorageContextExtensions + { + /// + /// Registers the entities from all the extensions inside the single Entity Framework storage context + /// by finding all the implementations of the IEntityRegistrar interface. + /// + /// The Entity Framework storage context. + /// The Entity Framework model builder. + public static void RegisterEntities(this IStorageContext storageContext, ModelBuilder modelBuilder) + { + foreach (IEntityRegistrar entityRegistrar in ExtensionManager.GetInstances()) + entityRegistrar.RegisterEntities(modelBuilder); + } + } +} \ No newline at end of file diff --git a/src/ExtCore.Data.EntityFramework/IEntityRegistrar.cs b/src/ExtCore.Data.EntityFramework/IEntityRegistrar.cs new file mode 100644 index 0000000..abf13dd --- /dev/null +++ b/src/ExtCore.Data.EntityFramework/IEntityRegistrar.cs @@ -0,0 +1,19 @@ +// Copyright © 2017 Dmitry Sikorsky. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using Microsoft.EntityFrameworkCore; + +namespace ExtCore.Data.EntityFramework +{ + /// + /// Describes a mechanism of registering entities inside the Entity Framework storage context. + /// + public interface IEntityRegistrar + { + /// + /// Registers entities inside the Entity Framework storage context. + /// + /// The Entity Framework model builder. + void RegisterEntities(ModelBuilder modelbuilder); + } +} \ No newline at end of file diff --git a/src/ExtCore.Data.EntityFramework.Sqlite/RepositoryBase.cs b/src/ExtCore.Data.EntityFramework/RepositoryBase.cs similarity index 58% rename from src/ExtCore.Data.EntityFramework.Sqlite/RepositoryBase.cs rename to src/ExtCore.Data.EntityFramework/RepositoryBase.cs index a1a7620..07a795f 100644 --- a/src/ExtCore.Data.EntityFramework.Sqlite/RepositoryBase.cs +++ b/src/ExtCore.Data.EntityFramework/RepositoryBase.cs @@ -1,27 +1,27 @@ -// Copyright © 2015 Dmitry Sikorsky. All rights reserved. +// Copyright © 2017 Dmitry Sikorsky. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using ExtCore.Data.Abstractions; -using ExtCore.Data.Models.Abstractions; +using ExtCore.Data.Entities.Abstractions; using Microsoft.EntityFrameworkCore; -namespace ExtCore.Data.EntityFramework.Sqlite +namespace ExtCore.Data.EntityFramework { /// /// Implements the IRepository interface and represents default repository behavior. /// public abstract class RepositoryBase : IRepository where TEntity : class, IEntity { - protected StorageContext storageContext; + protected StorageContextBase storageContext; protected DbSet dbSet; /// - /// Sets the storage context that represents the SQLite database to work with. + /// Sets the Entity Framework storage context that represents the physical storage to work with. /// - /// The storage context to set. + /// The Entity Framework storage context to set. public void SetStorageContext(IStorageContext storageContext) { - this.storageContext = storageContext as StorageContext; + this.storageContext = storageContext as StorageContextBase; this.dbSet = this.storageContext.Set(); } } diff --git a/src/ExtCore.Data.EntityFramework.Sqlite/Storage.cs b/src/ExtCore.Data.EntityFramework/Storage.cs similarity index 56% rename from src/ExtCore.Data.EntityFramework.Sqlite/Storage.cs rename to src/ExtCore.Data.EntityFramework/Storage.cs index e6610cb..ceef52e 100644 --- a/src/ExtCore.Data.EntityFramework.Sqlite/Storage.cs +++ b/src/ExtCore.Data.EntityFramework/Storage.cs @@ -1,34 +1,26 @@ -// Copyright © 2015 Dmitry Sikorsky. All rights reserved. +// Copyright © 2017 Dmitry Sikorsky. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using ExtCore.Data.Abstractions; using ExtCore.Infrastructure; -namespace ExtCore.Data.EntityFramework.Sqlite +namespace ExtCore.Data.EntityFramework { /// /// Implements the IStorage interface and represents implementation of the /// Unit of Work design pattern with the mechanism of getting the repositories to work with the underlying - /// SQLite database storage context and committing the changes made by all the repositories. + /// Entity Framework storage context and committing the changes made by all the repositories. /// public class Storage : IStorage { /// - /// Gets or sets the connection string that is used to connect to the SQLite database. + /// Gets the Entity Framework storage context. /// - public static string ConnectionString { get; set; } + public IStorageContext StorageContext { get; private set; } - /// - /// Gets or sets the storage context that represents the SQLite database. - /// - public StorageContext StorageContext { get; private set; } - - /// - /// Initializes a new instance of the Storage class. - /// - public Storage() + public Storage(IStorageContext storageContext) { - this.StorageContext = new StorageContext(Storage.ConnectionString); + this.StorageContext = storageContext; } /// @@ -38,7 +30,7 @@ public Storage() /// public TRepository GetRepository() where TRepository : IRepository { - TRepository repository = ExtensionManager.GetInstance(a => a.FullName.ToLower().Contains("entityframework.sqlite")); + TRepository repository = ExtensionManager.GetInstance(); repository.SetStorageContext(this.StorageContext); return repository; @@ -49,7 +41,7 @@ public TRepository GetRepository() where TRepository : IRepository /// public void Save() { - this.StorageContext.SaveChanges(); + (this.StorageContext as StorageContextBase).SaveChanges(); } } } \ No newline at end of file diff --git a/src/ExtCore.Data.EntityFramework/StorageContextBase.cs b/src/ExtCore.Data.EntityFramework/StorageContextBase.cs new file mode 100644 index 0000000..c4679ac --- /dev/null +++ b/src/ExtCore.Data.EntityFramework/StorageContextBase.cs @@ -0,0 +1,36 @@ +// Copyright © 2015 Dmitry Sikorsky. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using ExtCore.Data.Abstractions; +using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.Options; + +namespace ExtCore.Data.EntityFramework +{ + /// + /// Implements the IStorageContext interface and represents the physical storage + /// with the Entity Framework Core as the ORM. + /// + public abstract class StorageContextBase : DbContext, IStorageContext + { + /// + /// The connection string that is used to connect to the physical storage. + /// + public string ConnectionString { get; private set; } + + /// + /// Initializes a new instance of the StorageContext class. + /// + /// The connection string that is used to connect to the physical storage. + public StorageContextBase(IOptions options) + { + this.ConnectionString = options.Value.ConnectionString; + } + + protected override void OnModelCreating(ModelBuilder modelBuilder) + { + base.OnModelCreating(modelBuilder); + this.RegisterEntities(modelBuilder); + } + } +} \ No newline at end of file diff --git a/src/ExtCore.Data.EntityFramework/StorageContextOptions.cs b/src/ExtCore.Data.EntityFramework/StorageContextOptions.cs new file mode 100644 index 0000000..c4476bd --- /dev/null +++ b/src/ExtCore.Data.EntityFramework/StorageContextOptions.cs @@ -0,0 +1,16 @@ +// Copyright © 2017 Dmitry Sikorsky. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +namespace ExtCore.Data.EntityFramework +{ + /// + /// Represents Entity Framework storage context options. + /// + public class StorageContextOptions + { + /// + /// The connection string that is used to connect to the physical storage. + /// + public string ConnectionString { get; set; } + } +} \ No newline at end of file diff --git a/src/ExtCore.Data/Actions/AddStorageAction.cs b/src/ExtCore.Data/Actions/AddStorageAction.cs new file mode 100644 index 0000000..e687bc9 --- /dev/null +++ b/src/ExtCore.Data/Actions/AddStorageAction.cs @@ -0,0 +1,50 @@ +// Copyright © 2017 Dmitry Sikorsky. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Linq; +using System.Reflection; +using ExtCore.Data.Abstractions; +using ExtCore.Infrastructure; +using ExtCore.Infrastructure.Actions; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Logging; + +namespace ExtCore.Data.Actions +{ + /// + /// Implements the IConfigureServicesAction interface and + /// registers found implementation of the IStorage interface inside the DI. + /// + public class AddStaticFilesAction : IConfigureServicesAction + { + /// + /// Priority of the action. The actions will be executed in the order specified by the priority (from smallest to largest). + /// + public int Priority => 1000; + + /// + /// Registers found implementation of the IStorage interface inside the DI. + /// + /// + /// Will be provided by the ExtCore and might be used to register any service inside the DI. + /// + /// + /// Will be provided by the ExtCore and might be used to get any service that is registered inside the DI at this moment. + /// + public void Execute(IServiceCollection services, IServiceProvider serviceProvider) + { + Type type = ExtensionManager.GetImplementations()?.FirstOrDefault(t => !t.GetTypeInfo().IsAbstract); + + if (type == null) + { + ILogger logger = serviceProvider.GetService().CreateLogger("ExtCore.Data"); + + logger.LogError("Implementation of ExtCore.Data.Abstractions.IStorage not found"); + return; + } + + services.AddScoped(typeof(IStorage), type); + } + } +} \ No newline at end of file diff --git a/src/ExtCore.Data/DataExtension.cs b/src/ExtCore.Data/DataExtension.cs deleted file mode 100644 index 8030335..0000000 --- a/src/ExtCore.Data/DataExtension.cs +++ /dev/null @@ -1,56 +0,0 @@ -// Copyright © 2015 Dmitry Sikorsky. All rights reserved. -// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. - -using System; -using System.Collections.Generic; -using System.Reflection; -using ExtCore.Data.Abstractions; -using ExtCore.Infrastructure; -using Microsoft.Extensions.DependencyInjection; -using Microsoft.Extensions.Logging; - -namespace ExtCore.Data -{ - /// - /// Overrides the ExtensionBase class and defines the ConfigureServices method - /// prioritized action for registering existing implementation of the IStorage interface - /// inside the DI. - /// - public class DataExtension : ExtensionBase - { - /// - /// Defines one prioritized action with priority = 1000 that looks for the implementation of the - /// IStorage interface and registers it inside the DI if found. - /// - public override IEnumerable>> ConfigureServicesActionsByPriorities - { - get - { - return new Dictionary>() - { - [1000] = services => - { - Type type = ExtensionManager.GetImplementation(a => a.FullName.ToLower().Contains("data")); - - if (type == null) - { - this.logger.LogError("Implementation of ExtCore.Data.Abstractions.IStorage not found"); - return; - } - - string connectionString = this.configurationRoot?["Data:DefaultConnection:ConnectionString"]; - - if (string.IsNullOrEmpty(connectionString)) - { - this.logger.LogError("Connection string is not provided"); - return; - } - - type.GetProperty("ConnectionString").SetValue(null, connectionString); - services.AddScoped(typeof(IStorage), type); - } - }; - } - } - } -} \ No newline at end of file diff --git a/src/ExtCore.Data/ExtCore.Data.csproj b/src/ExtCore.Data/ExtCore.Data.csproj index 4707f77..cbd5001 100644 --- a/src/ExtCore.Data/ExtCore.Data.csproj +++ b/src/ExtCore.Data/ExtCore.Data.csproj @@ -3,7 +3,7 @@ Part of the ExtCore.Data ExtCore framework extension. Copyright © 2015 Dmitry Sikorsky - 1.2.0 + 2.0.0-alpha1 Dmitry Sikorsky netstandard1.6 ExtCore.Data diff --git a/src/ExtCore.Data/Extension.cs b/src/ExtCore.Data/Extension.cs new file mode 100644 index 0000000..cfbeff1 --- /dev/null +++ b/src/ExtCore.Data/Extension.cs @@ -0,0 +1,33 @@ +// Copyright © 2017 Dmitry Sikorsky. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using ExtCore.Infrastructure; + +namespace ExtCore.Data +{ + /// + /// Overrides the ExtensionBase class and provides the ExtCore.Data extension information. + /// + public class Extension : ExtensionBase + { + /// + /// Gets the name of the extension. + /// + public override string Name => "ExtCore.Data"; + + /// + /// Gets the URL of the extension. + /// + public override string Url => "http://extcore.net/"; + + /// + /// Gets the version of the extension. + /// + public override string Version => "2.0.0-alpha1"; + + /// + /// Gets the authors of the extension (separated by commas). + /// + public override string Authors => "Dmitry Sikorsky"; + } +} \ No newline at end of file diff --git a/src/ExtCore.Events/ExtCore.Events.csproj b/src/ExtCore.Events/ExtCore.Events.csproj index b7a39c0..6cb8023 100644 --- a/src/ExtCore.Events/ExtCore.Events.csproj +++ b/src/ExtCore.Events/ExtCore.Events.csproj @@ -3,7 +3,7 @@ Part of the ExtCore.Events ExtCore framework extension. Copyright © 2017 Dmitry Sikorsky - 1.2.0 + 2.0.0-alpha1 Dmitry Sikorsky netstandard1.6 ExtCore.Events diff --git a/src/ExtCore.Events/Extension.cs b/src/ExtCore.Events/Extension.cs new file mode 100644 index 0000000..dfe2287 --- /dev/null +++ b/src/ExtCore.Events/Extension.cs @@ -0,0 +1,33 @@ +// Copyright © 2017 Dmitry Sikorsky. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using ExtCore.Infrastructure; + +namespace ExtCore.Events +{ + /// + /// Overrides the ExtensionBase class and provides the ExtCore.Events extension information. + /// + public class Extension : ExtensionBase + { + /// + /// Gets the name of the extension. + /// + public override string Name => "ExtCore.Events"; + + /// + /// Gets the URL of the extension. + /// + public override string Url => "http://extcore.net/"; + + /// + /// Gets the version of the extension. + /// + public override string Version => "2.0.0-alpha1"; + + /// + /// Gets the authors of the extension (separated by commas). + /// + public override string Authors => "Dmitry Sikorsky"; + } +} \ No newline at end of file diff --git a/src/ExtCore.Infrastructure/Actions/IConfigureAction.cs b/src/ExtCore.Infrastructure/Actions/IConfigureAction.cs new file mode 100644 index 0000000..bf85e9d --- /dev/null +++ b/src/ExtCore.Infrastructure/Actions/IConfigureAction.cs @@ -0,0 +1,31 @@ +// Copyright © 2017 Dmitry Sikorsky. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using Microsoft.AspNetCore.Builder; + +namespace ExtCore.Infrastructure.Actions +{ + /// + /// Describes an action that must be executed inside the Configure method of a web application's Startup class + /// and might be used by the extensions to configure a web application's request pipeline. + /// + public interface IConfigureAction + { + /// + /// Priority of the action. The actions will be executed in the order specified by the priority (from smallest to largest). + /// + int Priority { get; } + + /// + /// Contains any code that must be executed inside the Configure method of the web application's Startup class. + /// + /// + /// Will be provided by the ExtCore and might be used to configure a web application's request pipeline. + /// + /// + /// Will be provided by the ExtCore and might be used to get any service that is registered inside the DI at this moment. + /// + void Execute(IApplicationBuilder applicationBuilder, IServiceProvider serviceProvider); + } +} \ No newline at end of file diff --git a/src/ExtCore.Infrastructure/Actions/IConfigureServicesAction.cs b/src/ExtCore.Infrastructure/Actions/IConfigureServicesAction.cs new file mode 100644 index 0000000..6c9ff8f --- /dev/null +++ b/src/ExtCore.Infrastructure/Actions/IConfigureServicesAction.cs @@ -0,0 +1,31 @@ +// Copyright © 2017 Dmitry Sikorsky. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using Microsoft.Extensions.DependencyInjection; + +namespace ExtCore.Infrastructure.Actions +{ + /// + /// Describes an action that must be executed inside the ConfigureServices method of a web application's Startup class + /// and might be used by the extensions to register any service inside the DI. + /// + public interface IConfigureServicesAction + { + /// + /// Priority of the action. The actions will be executed in the order specified by the priority (from smallest to largest). + /// + int Priority { get; } + + /// + /// Contains any code that must be executed inside the ConfigureServices method of the web application's Startup class. + /// + /// + /// Will be provided by the ExtCore and might be used to register any service inside the DI. + /// + /// + /// Will be provided by the ExtCore and might be used to get any service that is registered inside the DI at this moment. + /// + void Execute(IServiceCollection serviceCollection, IServiceProvider serviceProvider); + } +} \ No newline at end of file diff --git a/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj b/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj index f514c91..47ed662 100644 --- a/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj +++ b/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj @@ -3,7 +3,7 @@ Free, open source and cross-platform framework for creating modular and extendable web applications based on ASP.NET Core 1.1.0. Copyright © 2015 Dmitry Sikorsky - 1.2.0 + 2.0.0-alpha1 Dmitry Sikorsky netstandard1.6 ExtCore.Infrastructure @@ -15,7 +15,6 @@ - diff --git a/src/ExtCore.Infrastructure/ExtensionBase.cs b/src/ExtCore.Infrastructure/ExtensionBase.cs index 8a7c1cd..4b92b94 100644 --- a/src/ExtCore.Infrastructure/ExtensionBase.cs +++ b/src/ExtCore.Infrastructure/ExtensionBase.cs @@ -1,84 +1,36 @@ -// Copyright © 2015 Dmitry Sikorsky. All rights reserved. +// Copyright © 2017 Dmitry Sikorsky. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. -using System; -using System.Collections.Generic; -using Microsoft.AspNetCore.Builder; -using Microsoft.Extensions.Configuration; -using Microsoft.Extensions.DependencyInjection; -using Microsoft.Extensions.Logging; - namespace ExtCore.Infrastructure { /// - /// Implements the IExtension interface and represents default extension behavior - /// that might be overridden by the derived classes. + /// Implements the IExtension interface and represents default extension behavior. /// public abstract class ExtensionBase : IExtension { - protected IServiceProvider serviceProvider; - protected IConfigurationRoot configurationRoot; - protected ILogger logger; - /// /// Gets the name of the extension. /// - public virtual string Name - { - get - { - return this.GetType().Name; - } - } + public virtual string Name => this.GetType().FullName; /// - /// Gets the prioritized (defined in a specific order) actions (code fragments) that must be executed - /// within the ConfigureServices method of a web application Startup class. - /// Priority is set by the key, while the action is set by the value of the KeyValuePair. Before these actions are - /// executed they will be merged with the actions of all other extensions according to the priorities. + /// Gets the description of the extension. /// - public virtual IEnumerable>> ConfigureServicesActionsByPriorities - { - get - { - return null; - } - } + public virtual string Description => null; /// - /// Gets the prioritized (defined in a specific order) actions (code fragments) that must be executed - /// within the Configure method of a web application Startup class. - /// Priority is set by the key, while the action is set by the value of the KeyValuePair. Before these actions are - /// executed they will be merged with the actions of all other extensions according to the priorities. + /// Gets the URL of the extension. /// - public virtual IEnumerable>> ConfigureActionsByPriorities - { - get - { - return null; - } - } + public virtual string Url => null; /// - /// Sets the service provider that contains services currently registered inside the DI. - /// Only these services will be available for the extension. + /// Gets the version of the extension. /// - /// The service provider to set. - public virtual void SetServiceProvider(IServiceProvider serviceProvider) - { - this.serviceProvider = serviceProvider; - this.logger = this.serviceProvider.GetService().CreateLogger(); - } + public virtual string Version => null; /// - /// Sets the configuration root that is built in a web application Startup class constructor. - /// This configuration root is only used to configure the extensions and will not be used to - /// provide configuration properties to the controllers etc. + /// Gets the authors of the extension (separated by commas). /// - /// The configuration root to set. - public virtual void SetConfigurationRoot(IConfigurationRoot configurationRoot) - { - this.configurationRoot = configurationRoot; - } + public virtual string Authors => null; } } \ No newline at end of file diff --git a/src/ExtCore.Infrastructure/ExtensionManager.cs b/src/ExtCore.Infrastructure/ExtensionManager.cs index 67cfdef..d8caa44 100644 --- a/src/ExtCore.Infrastructure/ExtensionManager.cs +++ b/src/ExtCore.Infrastructure/ExtensionManager.cs @@ -10,16 +10,14 @@ namespace ExtCore.Infrastructure { /// /// Represents assembly cache with the mechanism of getting implementations or instances of a given type. - /// Also it allows to get all the instances of the IExtension interface - /// with the additional cache. This is the global access point to the types discovered by the ExtCore. + /// This is the global access point to the types discovered by the ExtCore. /// public static class ExtensionManager { private static IEnumerable assemblies; - private static IEnumerable extensions; /// - /// Gets the cached assemblies that has been set by the SetAssemblies method. + /// Gets the cached assemblies that has been set by the SetAssemblies method. /// public static IEnumerable Assemblies { @@ -29,20 +27,6 @@ public static IEnumerable Assemblies } } - /// - /// Gets the cached instances of the IExtension interface. - /// - public static IEnumerable Extensions - { - get - { - if (ExtensionManager.extensions == null) - ExtensionManager.extensions = ExtensionManager.GetInstances(); - - return ExtensionManager.extensions; - } - } - /// /// Sets the discovered assemblies and invalidates the IExtension interface /// instances cache. @@ -51,7 +35,6 @@ public static IEnumerable Extensions public static void SetAssemblies(IEnumerable assemblies) { ExtensionManager.assemblies = assemblies; - ExtensionManager.extensions = null; } /// diff --git a/src/ExtCore.Infrastructure/IExtension.cs b/src/ExtCore.Infrastructure/IExtension.cs index ca24c2a..96d6bc8 100644 --- a/src/ExtCore.Infrastructure/IExtension.cs +++ b/src/ExtCore.Infrastructure/IExtension.cs @@ -1,18 +1,10 @@ -// Copyright © 2015 Dmitry Sikorsky. All rights reserved. +// Copyright © 2017 Dmitry Sikorsky. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. -using System; -using System.Collections.Generic; -using Microsoft.AspNetCore.Builder; -using Microsoft.Extensions.Configuration; -using Microsoft.Extensions.DependencyInjection; - namespace ExtCore.Infrastructure { /// - /// Describes an extension with the mechanism of executing prioritized (defined in a specific order) - /// actions (code fragments) within the ConfigureServices and Configure methods of a web application - /// Startup class. + /// Describes an extension. /// public interface IExtension { @@ -22,34 +14,23 @@ public interface IExtension string Name { get; } /// - /// Gets the prioritized (defined in a specific order) actions (code fragments) that must be executed - /// within the ConfigureServices method of a web application Startup class. - /// Priority is set by the key, while the action is set by the value of the KeyValuePair. Before these actions are - /// executed they will be merged with the actions of all other extensions according to the priorities. + /// Gets the description of the extension. /// - IEnumerable>> ConfigureServicesActionsByPriorities { get; } + string Description { get; } /// - /// Gets the prioritized (defined in a specific order) actions (code fragments) that must be executed - /// within the Configure method of a web application Startup class. - /// Priority is set by the key, while the action is set by the value of the KeyValuePair. Before these actions are - /// executed they will be merged with the actions of all other extensions according to the priorities. + /// Gets the URL of the extension. /// - IEnumerable>> ConfigureActionsByPriorities { get; } + string Url { get; } /// - /// Sets the service provider that contains services currently registered inside the DI. - /// Only these services will be available for the extension. + /// Gets the version of the extension. /// - /// The service provider to set. - void SetServiceProvider(IServiceProvider serviceProvider); + string Version { get; } /// - /// Sets the configuration root that is built in a web application Startup class constructor. - /// This configuration root is only used to configure the extensions and will not be used to - /// provide configuration properties to the controllers etc. + /// Gets the authors of the extension (separated by commas). /// - /// The configuration root to set. - void SetConfigurationRoot(IConfigurationRoot configurationRoot); + string Authors { get; } } } \ No newline at end of file diff --git a/src/ExtCore.Mvc.Infrastructure/Actions/IAddMvcAction.cs b/src/ExtCore.Mvc.Infrastructure/Actions/IAddMvcAction.cs new file mode 100644 index 0000000..e38a3ea --- /dev/null +++ b/src/ExtCore.Mvc.Infrastructure/Actions/IAddMvcAction.cs @@ -0,0 +1,31 @@ +// Copyright © 2017 Dmitry Sikorsky. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using Microsoft.Extensions.DependencyInjection; + +namespace ExtCore.Mvc.Infrastructure.Actions +{ + /// + /// Describes an action that must be executed inside the AddMvc method and might be used by the extensions + /// to configure the MVC. + /// + public interface IAddMvcAction + { + /// + /// Priority of the action. The actions will be executed in the order specified by the priority (from smallest to largest). + /// + int Priority { get; } + + /// + /// Contains any code that must be executed inside the AddMvc method. + /// + /// + /// Will be provided by the ExtCore.Mvc and might be used to configure the MVC. + /// + /// + /// Will be provided by the ExtCore.Mvc and might be used to get any service that is registered inside the DI at this moment. + /// + void Execute(IMvcBuilder mvcBuilder, IServiceProvider serviceProvider); + } +} \ No newline at end of file diff --git a/src/ExtCore.Mvc.Infrastructure/Actions/IUseMvcAction.cs b/src/ExtCore.Mvc.Infrastructure/Actions/IUseMvcAction.cs new file mode 100644 index 0000000..931323d --- /dev/null +++ b/src/ExtCore.Mvc.Infrastructure/Actions/IUseMvcAction.cs @@ -0,0 +1,31 @@ +// Copyright © 2017 Dmitry Sikorsky. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using Microsoft.AspNetCore.Routing; + +namespace ExtCore.Mvc.Infrastructure.Actions +{ + /// + /// Describes an action that must be executed inside the UseMvc method and might be used by the extensions + /// to configure the routes. + /// + public interface IUseMvcAction + { + /// + /// Priority of the action. The actions will be executed in the order specified by the priority (from smallest to largest). + /// + int Priority { get; } + + /// + /// Contains any code that must be executed inside the UseMvc method. + /// + /// + /// Will be provided by the ExtCore.Mvc and might be used to configure the routes. + /// + /// + /// Will be provided by the ExtCore.Mvc and might be used to get any service that is registered inside the DI at this moment. + /// + void Execute(IRouteBuilder routeBuilder, IServiceProvider serviceProvider); + } +} \ No newline at end of file diff --git a/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj b/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj index 0e81bac..bf40981 100644 --- a/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj +++ b/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj @@ -3,7 +3,7 @@ Part of the ExtCore.Mvc ExtCore framework extension. Copyright © 2015 Dmitry Sikorsky - 1.2.0 + 2.0.0-alpha1 Dmitry Sikorsky netstandard1.6 ExtCore.Mvc.Infrastructure diff --git a/src/ExtCore.Mvc.Infrastructure/ExtensionBase.cs b/src/ExtCore.Mvc.Infrastructure/ExtensionBase.cs deleted file mode 100644 index 9d4a871..0000000 --- a/src/ExtCore.Mvc.Infrastructure/ExtensionBase.cs +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright © 2015 Dmitry Sikorsky. All rights reserved. -// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. - -using System; -using System.Collections.Generic; -using Microsoft.AspNetCore.Routing; -using Microsoft.Extensions.DependencyInjection; - -namespace ExtCore.Mvc.Infrastructure -{ - /// - /// Implements the IExtension interface and represents default MVC extension behavior - /// that might be overridden by the derived classes. - /// - public abstract class ExtensionBase : ExtCore.Infrastructure.ExtensionBase, IExtension - { - /// - /// Gets the prioritized (defined in a specific order) actions (code fragments) that must be executed - /// within the AddMvc extension method while it is executed by the ExtCore.Mvc extension to configure the MVC. - /// Priority is set by the key, while the action is set by the value of the KeyValuePair. Before these actions are - /// executed they will be merged with the actions of all other extensions according to the priorities. - /// - public virtual IEnumerable>> AddMvcActionsByPriorities - { - get - { - return null; - } - } - - /// - /// Gets the prioritized (defined in a specific order) actions (code fragments) that must be executed - /// within the UseMvc extension method while it is executed by the ExtCore.Mvc extension to configure the MVC. - /// Priority is set by the key, while the action is set by the value of the KeyValuePair. Before these actions are - /// executed they will be merged with the actions of all other extensions according to the priorities. - /// - public virtual IEnumerable>> UseMvcActionsByPriorities - { - get - { - return null; - } - } - } -} \ No newline at end of file diff --git a/src/ExtCore.Mvc.Infrastructure/IExtension.cs b/src/ExtCore.Mvc.Infrastructure/IExtension.cs deleted file mode 100644 index 6b596e1..0000000 --- a/src/ExtCore.Mvc.Infrastructure/IExtension.cs +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright © 2015 Dmitry Sikorsky. All rights reserved. -// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. - -using System; -using System.Collections.Generic; -using Microsoft.AspNetCore.Routing; -using Microsoft.Extensions.DependencyInjection; - -namespace ExtCore.Mvc.Infrastructure -{ - /// - /// Describes an MVC extension with the mechanism of executing prioritized (defined in a specific order) - /// actions (code fragments) within the AddMvc and UseMvc extension methods while they are executed - /// by the ExtCore.Mvc extension to configure the MVC. - /// - public interface IExtension : ExtCore.Infrastructure.IExtension - { - /// - /// Gets the prioritized (defined in a specific order) actions (code fragments) that must be executed - /// within the AddMvc extension method while it is executed by the ExtCore.Mvc extension to configure the MVC. - /// Priority is set by the key, while the action is set by the value of the KeyValuePair. Before these actions are - /// executed they will be merged with the actions of all other extensions according to the priorities. - /// - IEnumerable>> AddMvcActionsByPriorities { get; } - - /// - /// Gets the prioritized (defined in a specific order) actions (code fragments) that must be executed - /// within the UseMvc extension method while it is executed by the ExtCore.Mvc extension to configure the MVC. - /// Priority is set by the key, while the action is set by the value of the KeyValuePair. Before these actions are - /// executed they will be merged with the actions of all other extensions according to the priorities. - /// - IEnumerable>> UseMvcActionsByPriorities { get; } - } -} \ No newline at end of file diff --git a/src/ExtCore.Mvc/Actions/AddMvcAction.cs b/src/ExtCore.Mvc/Actions/AddMvcAction.cs new file mode 100644 index 0000000..9fa3e42 --- /dev/null +++ b/src/ExtCore.Mvc/Actions/AddMvcAction.cs @@ -0,0 +1,60 @@ +// Copyright © 2017 Dmitry Sikorsky. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Linq; +using System.Reflection; +using ExtCore.Infrastructure; +using ExtCore.Infrastructure.Actions; +using ExtCore.Mvc.Infrastructure.Actions; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.FileProviders; +using Microsoft.Extensions.Logging; + +namespace ExtCore.Mvc.Actions +{ + /// + /// Implements the IConfigureServicesAction interface and + /// registers the MVC services inside the DI. + /// + public class AddMvcAction : IConfigureServicesAction + { + /// + /// Priority of the action. The actions will be executed in the order specified by the priority (from smallest to largest). + /// + public int Priority => 10000; + + /// + /// Registers the MVC services inside the DI. + /// + /// + /// Will be provided by the ExtCore and might be used to register any service inside the DI. + /// + /// + /// Will be provided by the ExtCore and might be used to get any service that is registered inside the DI at this moment. + /// + public void Execute(IServiceCollection services, IServiceProvider serviceProvider) + { + IMvcBuilder mvcBuilder = services.AddMvc(); + + foreach (Assembly assembly in ExtensionManager.Assemblies) + mvcBuilder.AddApplicationPart(assembly); + + mvcBuilder.AddRazorOptions( + o => + { + foreach (Assembly assembly in ExtensionManager.Assemblies) + o.FileProviders.Add(new EmbeddedFileProvider(assembly, assembly.GetName().Name)); + } + ); + + foreach (IAddMvcAction action in ExtensionManager.GetInstances().OrderBy(a => a.Priority)) + { + ILogger logger = serviceProvider.GetService().CreateLogger("ExtCore.Mvc"); + + logger.LogInformation("Executing AddMvc action '{0}'", action.GetType().FullName); + action.Execute(mvcBuilder, serviceProvider); + } + } + } +} \ No newline at end of file diff --git a/src/ExtCore.Mvc/Actions/AddStaticFilesAction.cs b/src/ExtCore.Mvc/Actions/AddStaticFilesAction.cs new file mode 100644 index 0000000..392583d --- /dev/null +++ b/src/ExtCore.Mvc/Actions/AddStaticFilesAction.cs @@ -0,0 +1,52 @@ +// Copyright © 2017 Dmitry Sikorsky. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Linq; +using ExtCore.Infrastructure; +using ExtCore.Infrastructure.Actions; +using Microsoft.AspNetCore.Hosting; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.FileProviders; + +namespace ExtCore.Mvc.Actions +{ + /// + /// Implements the IConfigureServicesAction interface and + /// creates and registers the composite file provider that contains resources from all the extensions. + /// + public class AddStaticFilesAction : IConfigureServicesAction + { + /// + /// Priority of the action. The actions will be executed in the order specified by the priority (from smallest to largest). + /// + public int Priority => 1000; + + /// + /// Creates and registers the composite file provider that contains resources from all the extensions. + /// + /// + /// Will be provided by the ExtCore and might be used to register any service inside the DI. + /// + /// + /// Will be provided by the ExtCore and might be used to get any service that is registered inside the DI at this moment. + /// + public void Execute(IServiceCollection services, IServiceProvider serviceProvider) + { + serviceProvider.GetService().WebRootFileProvider = this.CreateCompositeFileProvider(serviceProvider); + } + + private IFileProvider CreateCompositeFileProvider(IServiceProvider serviceProvider) + { + IFileProvider[] fileProviders = new IFileProvider[] { + serviceProvider.GetService().WebRootFileProvider + }; + + return new CompositeFileProvider( + fileProviders.Concat( + ExtensionManager.Assemblies.Select(a => new EmbeddedFileProvider(a, a.GetName().Name)) + ) + ); + } + } +} \ No newline at end of file diff --git a/src/ExtCore.Mvc/Actions/UseMvcAction.cs b/src/ExtCore.Mvc/Actions/UseMvcAction.cs new file mode 100644 index 0000000..5b0edcd --- /dev/null +++ b/src/ExtCore.Mvc/Actions/UseMvcAction.cs @@ -0,0 +1,51 @@ +// Copyright © 2017 Dmitry Sikorsky. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Linq; +using ExtCore.Infrastructure; +using ExtCore.Infrastructure.Actions; +using ExtCore.Mvc.Infrastructure.Actions; +using Microsoft.AspNetCore.Builder; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Logging; + +namespace ExtCore.Mvc.Actions +{ + /// + /// Implements the IConfigureAction interface and registers the + /// MVC middleware inside a web application's request pipeline. + /// + public class UseMvcAction : IConfigureAction + { + /// + /// Priority of the action. The actions will be executed in the order specified by the priority (from smallest to largest). + /// + public int Priority => 10000; + + /// + /// Registers the MVC middleware inside a web application's request pipeline. + /// + /// + /// Will be provided by the ExtCore and might be used to configure a web application's request pipeline. + /// + /// + /// Will be provided by the ExtCore and might be used to get any service that is registered inside the DI at this moment. + /// + public void Execute(IApplicationBuilder applicationBuilder, IServiceProvider serviceProvider) + { + applicationBuilder.UseMvc( + routeBuilder => + { + foreach (IUseMvcAction action in ExtensionManager.GetInstances().OrderBy(a => a.Priority)) + { + ILogger logger = serviceProvider.GetService().CreateLogger("ExtCore.Mvc"); + + logger.LogInformation("Executing UseMvc action '{0}'", action.GetType().FullName); + action.Execute(routeBuilder, serviceProvider); + } + } + ); + } + } +} \ No newline at end of file diff --git a/src/ExtCore.Mvc/Actions/UseStaticFilesAction.cs b/src/ExtCore.Mvc/Actions/UseStaticFilesAction.cs new file mode 100644 index 0000000..e2b56b8 --- /dev/null +++ b/src/ExtCore.Mvc/Actions/UseStaticFilesAction.cs @@ -0,0 +1,36 @@ +// Copyright © 2017 Dmitry Sikorsky. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using ExtCore.Infrastructure.Actions; +using Microsoft.AspNetCore.Builder; + +namespace ExtCore.Mvc.Actions +{ + /// + /// Implements the IConfigureAction interface and registers the + /// static files middleware inside a web application's request pipeline. + /// + public class UseStaticFilesAction : IConfigureAction + { + /// + /// Priority of the action. The actions will be executed in the order specified by the priority (from smallest to largest). + /// + public int Priority => 1000; + + /// + /// Registers the static files middleware inside a web application's request pipeline. + /// + /// + /// + /// Will be provided by the ExtCore and might be used to configure a web application's request pipeline. + /// + /// + /// Will be provided by the ExtCore and might be used to get any service that is registered inside the DI at this moment. + /// + public void Execute(IApplicationBuilder applicationBuilder, IServiceProvider serviceProvider) + { + applicationBuilder.UseStaticFiles(); + } + } +} \ No newline at end of file diff --git a/src/ExtCore.Mvc/ExtCore.Mvc.csproj b/src/ExtCore.Mvc/ExtCore.Mvc.csproj index fe01b5c..18bd015 100644 --- a/src/ExtCore.Mvc/ExtCore.Mvc.csproj +++ b/src/ExtCore.Mvc/ExtCore.Mvc.csproj @@ -3,7 +3,7 @@ Part of the ExtCore.Mvc ExtCore framework extension. Copyright © 2015 Dmitry Sikorsky - 1.2.0 + 2.0.0-alpha1 Dmitry Sikorsky netstandard1.6 ExtCore.Mvc diff --git a/src/ExtCore.Mvc/Extension.cs b/src/ExtCore.Mvc/Extension.cs new file mode 100644 index 0000000..e9de95c --- /dev/null +++ b/src/ExtCore.Mvc/Extension.cs @@ -0,0 +1,33 @@ +// Copyright © 2017 Dmitry Sikorsky. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using ExtCore.Infrastructure; + +namespace ExtCore.Mvc +{ + /// + /// Overrides the ExtensionBase class and provides the ExtCore.Mvc extension information. + /// + public class Extension : ExtensionBase + { + /// + /// Gets the name of the extension. + /// + public override string Name => "ExtCore.Mvc"; + + /// + /// Gets the URL of the extension. + /// + public override string Url => "http://extcore.net/"; + + /// + /// Gets the version of the extension. + /// + public override string Version => "2.0.0-alpha1"; + + /// + /// Gets the authors of the extension (separated by commas). + /// + public override string Authors => "Dmitry Sikorsky"; + } +} \ No newline at end of file diff --git a/src/ExtCore.Mvc/MvcExtension.cs b/src/ExtCore.Mvc/MvcExtension.cs deleted file mode 100644 index 64ddfba..0000000 --- a/src/ExtCore.Mvc/MvcExtension.cs +++ /dev/null @@ -1,155 +0,0 @@ -// Copyright © 2015 Dmitry Sikorsky. All rights reserved. -// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. - -using System; -using System.Collections.Generic; -using System.Linq; -using System.Reflection; -using ExtCore.Infrastructure; -using Microsoft.AspNetCore.Builder; -using Microsoft.AspNetCore.Hosting; -using Microsoft.AspNetCore.Routing; -using Microsoft.Extensions.DependencyInjection; -using Microsoft.Extensions.FileProviders; -using Microsoft.Extensions.Logging; - -namespace ExtCore.Mvc -{ - /// - /// Overrides the ExtensionBase class and defines the ConfigureServices and - /// Configure methods prioritized actions for configuring MVC. - /// - public class MvcExtension : ExtCore.Mvc.Infrastructure.ExtensionBase - { - /// - /// Defines prioritized action with priority = 0 that creates composite file provider (to support static fieles - /// located inside the extension assemblies) and another one prioritized action with priority = 10000 that registers - /// MVC services inside the DI. - /// - public override IEnumerable>> ConfigureServicesActionsByPriorities - { - get - { - return new Dictionary>() - { - [0] = this.AddStaticFiles, - [10000] = this.AddMvc - }; - } - } - - /// - /// Defines prioritized action with priority = 0 that adds static files support middleware and another one - /// prioritized action with priority = 10000 that adds MVC support middleware. - /// - public override IEnumerable>> ConfigureActionsByPriorities - { - get - { - return new Dictionary>() - { - [0] = this.UseStaticFiles, - [10000] = this.UseMvc - }; - } - } - - private void AddStaticFiles(IServiceCollection services) - { - this.serviceProvider.GetService().WebRootFileProvider = this.CreateCompositeFileProvider(); - } - - private void AddMvc(IServiceCollection services) - { - IMvcBuilder mvcBuilder = services.AddMvc(); - - foreach (Assembly assembly in ExtensionManager.Assemblies) - mvcBuilder.AddApplicationPart(assembly); - - mvcBuilder.AddRazorOptions( - o => - { - foreach (Assembly assembly in ExtensionManager.Assemblies) - o.FileProviders.Add(new EmbeddedFileProvider(assembly, assembly.GetName().Name)); - } - ); - - foreach (Action prioritizedAddMvcAction in this.GetPrioritizedAddMvcActions()) - { - this.logger.LogInformation("Executing prioritized AddMvc action '{0}' of {1}", this.GetActionMethodInfo(prioritizedAddMvcAction)); - prioritizedAddMvcAction(mvcBuilder); - } - } - - private Action[] GetPrioritizedAddMvcActions() - { - List>> addMvcActionsByPriorities = new List>>(); - - foreach (IExtension extension in ExtensionManager.Extensions) - if (extension is ExtCore.Mvc.Infrastructure.IExtension) - if ((extension as ExtCore.Mvc.Infrastructure.IExtension).AddMvcActionsByPriorities != null) - addMvcActionsByPriorities.AddRange((extension as ExtCore.Mvc.Infrastructure.IExtension).AddMvcActionsByPriorities); - - return this.GetPrioritizedActions(addMvcActionsByPriorities); - } - - private void UseStaticFiles(IApplicationBuilder applicationBuilder) - { - applicationBuilder.UseStaticFiles(); - } - - private void UseMvc(IApplicationBuilder applicationBuilder) - { - applicationBuilder.UseMvc( - routeBuilder => - { - foreach (Action prioritizedUseMvcAction in this.GetPrioritizedUseMvcActions()) - { - this.logger.LogInformation("Executing prioritized UseMvc action '{0}' of {1}", this.GetActionMethodInfo(prioritizedUseMvcAction)); - prioritizedUseMvcAction(routeBuilder); - } - } - ); - } - - private Action[] GetPrioritizedUseMvcActions() - { - List>> useMvcActionsByPriorities = new List>>(); - - foreach (IExtension extension in ExtensionManager.Extensions) - if (extension is ExtCore.Mvc.Infrastructure.IExtension) - if ((extension as ExtCore.Mvc.Infrastructure.IExtension).UseMvcActionsByPriorities != null) - useMvcActionsByPriorities.AddRange((extension as ExtCore.Mvc.Infrastructure.IExtension).UseMvcActionsByPriorities); - - return this.GetPrioritizedActions(useMvcActionsByPriorities); - } - - private IFileProvider CreateCompositeFileProvider() - { - IFileProvider[] fileProviders = new IFileProvider[] { - this.serviceProvider.GetService().WebRootFileProvider - }; - - return new CompositeFileProvider( - fileProviders.Concat( - ExtensionManager.Assemblies.Select(a => new EmbeddedFileProvider(a, a.GetName().Name)) - ) - ); - } - - private Action[] GetPrioritizedActions(IEnumerable>> actionsByPriorities) - { - return actionsByPriorities - .OrderBy(actionByPriority => actionByPriority.Key) - .Select(actionByPriority => actionByPriority.Value) - .ToArray(); - } - - private string[] GetActionMethodInfo(Action action) - { - MethodInfo methodInfo = action.GetMethodInfo(); - - return new string[] { methodInfo.Name, methodInfo.DeclaringType.FullName }; - } - } -} \ No newline at end of file diff --git a/src/ExtCore.WebApplication/AssemblyProvider.cs b/src/ExtCore.WebApplication/DefaultAssemblyProvider.cs similarity index 90% rename from src/ExtCore.WebApplication/AssemblyProvider.cs rename to src/ExtCore.WebApplication/DefaultAssemblyProvider.cs index 7bea061..a384e72 100644 --- a/src/ExtCore.WebApplication/AssemblyProvider.cs +++ b/src/ExtCore.WebApplication/DefaultAssemblyProvider.cs @@ -1,4 +1,4 @@ -// Copyright © 2015 Dmitry Sikorsky. All rights reserved. +// Copyright © 2017 Dmitry Sikorsky. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System; @@ -14,13 +14,13 @@ namespace ExtCore.WebApplication { /// /// Implements the IAssemblyProvider interface and represents - /// default assembly provider that gets assemblies from a specific folder and web application dependencies - /// with the ability to filter the discovered assemblies with the IsCandidateAssembly and - /// IsCandidateCompilationLibrary predicates. + /// default assembly provider that gets assemblies from a specific path and web application dependencies + /// with the ability to filter the discovered assemblies with the IsCandidateAssembly and + /// IsCandidateCompilationLibrary predicates. /// - public class AssemblyProvider : IAssemblyProvider + public class DefaultAssemblyProvider : IAssemblyProvider { - protected ILogger logger; + protected ILogger logger; /// /// Gets or sets the predicate that is used to filter discovered assemblies from a specific folder @@ -35,12 +35,12 @@ public class AssemblyProvider : IAssemblyProvider public Func IsCandidateCompilationLibrary { get; set; } /// - /// Initializes a new instance of the AssemblyProvider class. + /// Initializes a new instance of the AssemblyProvider class. /// /// The service provider that is used to create a logger. - public AssemblyProvider(IServiceProvider serviceProvider) + public DefaultAssemblyProvider(IServiceProvider serviceProvider) { - this.logger = serviceProvider.GetService().CreateLogger(); + this.logger = serviceProvider.GetService().CreateLogger("ExtCore.WebApplication"); this.IsCandidateAssembly = assembly => !assembly.FullName.StartsWith("Microsoft.", StringComparison.OrdinalIgnoreCase) && !assembly.FullName.StartsWith("System.", StringComparison.OrdinalIgnoreCase); diff --git a/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj b/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj index bd2c148..c7b7e0c 100644 --- a/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj +++ b/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj @@ -3,7 +3,7 @@ Free, open source and cross-platform framework for creating modular and extendable web applications based on ASP.NET Core 1.1.0. Copyright © 2015 Dmitry Sikorsky - 1.2.0 + 2.0.0-alpha1 Dmitry Sikorsky netstandard1.6 ExtCore.WebApplication diff --git a/src/ExtCore.WebApplication/Extensions/ApplicationBuilderExtensions.cs b/src/ExtCore.WebApplication/Extensions/ApplicationBuilderExtensions.cs new file mode 100644 index 0000000..59d9ba9 --- /dev/null +++ b/src/ExtCore.WebApplication/Extensions/ApplicationBuilderExtensions.cs @@ -0,0 +1,36 @@ +// Copyright © 2017 Dmitry Sikorsky. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System.Linq; +using ExtCore.Infrastructure; +using ExtCore.Infrastructure.Actions; +using Microsoft.AspNetCore.Builder; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Logging; + +namespace ExtCore.WebApplication.Extensions +{ + /// + /// Contains the extension methods of the IApplicationBuilder interface. + /// + public static class ApplicationBuilderExtensions + { + /// + /// Executes the Configure actions from all the extensions. It must be called inside the Configure method + /// of the web application's Startup class in order ExtCore to work properly. + /// + /// + /// The application builder passed to the Configure method of the web application's Startup class. + /// + public static void UseExtCore(this IApplicationBuilder applicationBuilder) + { + ILogger logger = applicationBuilder.ApplicationServices.GetService().CreateLogger("ExtCore.WebApplication"); + + foreach (IConfigureAction action in ExtensionManager.GetInstances().OrderBy(a => a.Priority)) + { + logger.LogInformation("Executing Configure action '{0}'", action.GetType().FullName); + action.Execute(applicationBuilder, applicationBuilder.ApplicationServices); + } + } + } +} \ No newline at end of file diff --git a/src/ExtCore.WebApplication/Extensions/ServiceCollectionExtensions.cs b/src/ExtCore.WebApplication/Extensions/ServiceCollectionExtensions.cs new file mode 100644 index 0000000..3581550 --- /dev/null +++ b/src/ExtCore.WebApplication/Extensions/ServiceCollectionExtensions.cs @@ -0,0 +1,74 @@ +// Copyright © 2017 Dmitry Sikorsky. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Linq; +using ExtCore.Infrastructure; +using ExtCore.Infrastructure.Actions; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Logging; + +namespace ExtCore.WebApplication.Extensions +{ + /// + /// Contains the extension methods of the IServiceCollection interface. + /// + public static class ServiceCollectionExtensions + { + /// + /// Discovers the assemblies and executes the ConfigureServices actions from all the extensions. + /// It must be called inside the ConfigureServices method of the web application's Startup class + /// in order ExtCore to work properly. + /// + /// + /// The services collection passed to the ConfigureServices method of the web application's Startup class. + /// + public static void AddExtCore(this IServiceCollection services) + { + services.AddExtCore(null); + } + + /// + /// Discovers the assemblies and executes the ConfigureServices actions from all the extensions. + /// It must be called inside the ConfigureServices method of the web application's Startup class + /// in order ExtCore to work properly. + /// + /// + /// The services collection passed to the ConfigureServices method of the web application's Startup class. + /// + /// The absolute extensions path. + public static void AddExtCore(this IServiceCollection services, string extensionsPath) + { + services.AddExtCore(extensionsPath, new DefaultAssemblyProvider(services.BuildServiceProvider())); + } + + /// + /// Discovers the assemblies and executes the ConfigureServices actions from all the extensions. + /// It must be called inside the ConfigureServices method of the web application's Startup class + /// in order ExtCore to work properly. + /// + /// + /// The services collection passed to the ConfigureServices method of the web application's Startup class. + /// + /// The absolute extensions path. + /// The assembly provider that is used to discover and load the assemblies. + public static void AddExtCore(this IServiceCollection services, string extensionsPath, IAssemblyProvider assemblyProvider) + { + ServiceCollectionExtensions.DiscoverAssemblies(assemblyProvider, extensionsPath); + IServiceProvider serviceProvider = services.BuildServiceProvider(); + ILogger logger = serviceProvider.GetService().CreateLogger("ExtCore.WebApplication"); + + foreach (IConfigureServicesAction action in ExtensionManager.GetInstances().OrderBy(a => a.Priority)) + { + logger.LogInformation("Executing ConfigureServices action '{0}'", action.GetType().FullName); + action.Execute(services, serviceProvider); + serviceProvider = services.BuildServiceProvider(); + } + } + + private static void DiscoverAssemblies(IAssemblyProvider assemblyProvider, string extensionsPath) + { + ExtensionManager.SetAssemblies(assemblyProvider.GetAssemblies(extensionsPath)); + } + } +} \ No newline at end of file diff --git a/src/ExtCore.WebApplication/IAssemblyProvider.cs b/src/ExtCore.WebApplication/IAssemblyProvider.cs index c795c0d..039c117 100644 --- a/src/ExtCore.WebApplication/IAssemblyProvider.cs +++ b/src/ExtCore.WebApplication/IAssemblyProvider.cs @@ -8,7 +8,7 @@ namespace ExtCore.WebApplication { /// /// Describes an assembly provider with the mechanism of getting assemblies that should be involved - /// in the ExtCore types discovery process. + /// in the ExtCore types discovering process. /// public interface IAssemblyProvider { diff --git a/src/ExtCore.WebApplication/Startup.cs b/src/ExtCore.WebApplication/Startup.cs deleted file mode 100644 index 4e3c29f..0000000 --- a/src/ExtCore.WebApplication/Startup.cs +++ /dev/null @@ -1,145 +0,0 @@ -// Copyright © 2015 Dmitry Sikorsky. All rights reserved. -// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. - -using System; -using System.Collections.Generic; -using System.Linq; -using System.Reflection; -using ExtCore.Infrastructure; -using Microsoft.AspNetCore.Builder; -using Microsoft.AspNetCore.Hosting; -using Microsoft.Extensions.Configuration; -using Microsoft.Extensions.DependencyInjection; -using Microsoft.Extensions.Logging; - -namespace ExtCore.WebApplication -{ - /// - /// Represents default web application Startup class. Must be inherited in the derived web applications - /// in order ExtCore basic functionality to work. - /// - public abstract class Startup - { - protected IServiceProvider serviceProvider; - protected IAssemblyProvider assemblyProvider; - protected IConfigurationRoot configurationRoot; - protected ILogger logger; - - /// - /// Initializes a new instance of the Startup class. - /// - /// The service provider that is used to get different services from the DI. - public Startup(IServiceProvider serviceProvider) - : this(serviceProvider, new AssemblyProvider(serviceProvider)) - { - } - - /// - /// Initializes a new instance of the Startup class. - /// - /// The service provider that is used to get different services from the DI. - /// The assembly provider that is used to get the assemblies that should be involved in the ExtCore types discovery process. - public Startup(IServiceProvider serviceProvider, IAssemblyProvider assemblyProvider) - { - this.serviceProvider = serviceProvider; - this.assemblyProvider = assemblyProvider; - this.logger = serviceProvider.GetService().CreateLogger(); - } - - /// - /// Discovers the assemblies, initializes extensions and services that are used by a web application. - /// Also this method executes prioritized (defined in a specific order) actions (code fragments) - /// from all the extensions, so each extension may execute some code within this method using the - /// ConfigureServicesActionsByPriorities property of the IExtension interface. - /// - /// The current set of the services configured in the DI. - public virtual void ConfigureServices(IServiceCollection services) - { - this.DiscoverAssemblies(); - - foreach (IExtension extension in ExtensionManager.Extensions) - { - extension.SetServiceProvider(this.serviceProvider); - extension.SetConfigurationRoot(this.configurationRoot); - } - - foreach (Action prioritizedConfigureServicesAction in this.GetPrioritizedConfigureServicesActions()) - { - this.logger.LogInformation("Executing prioritized ConfigureServices action '{0}' of {1}", this.GetActionMethodInfo(prioritizedConfigureServicesAction)); - prioritizedConfigureServicesAction(services); - this.RebuildServiceProvider(services); - } - } - - /// - /// Executes prioritized (defined in a specific order) actions (code fragments) - /// from all the extensions, so each extension may execute some code within this method using the - /// ConfigureActionsByPriorities property of the IExtension interface. - /// - /// - public virtual void Configure(IApplicationBuilder applicationBuilder) - { - foreach (Action prioritizedConfigureAction in this.GetPrioritizedConfigureActions()) - { - this.logger.LogInformation("Executing prioritized Configure action '{0}' of {1}", this.GetActionMethodInfo(prioritizedConfigureAction)); - prioritizedConfigureAction(applicationBuilder); - } - } - - private void DiscoverAssemblies() - { - string extensionsPath = this.configurationRoot?["Extensions:Path"]; - IEnumerable assemblies = this.assemblyProvider.GetAssemblies( - string.IsNullOrEmpty(extensionsPath) ? - null : this.serviceProvider.GetService().ContentRootPath + extensionsPath - ); - - ExtensionManager.SetAssemblies(assemblies); - } - - private Action[] GetPrioritizedConfigureServicesActions() - { - List>> configureServicesActionsByPriorities = new List>>(); - - foreach (IExtension extension in ExtensionManager.Extensions) - if (extension.ConfigureServicesActionsByPriorities != null) - configureServicesActionsByPriorities.AddRange(extension.ConfigureServicesActionsByPriorities); - - return this.GetPrioritizedActions(configureServicesActionsByPriorities); - } - - private void RebuildServiceProvider(IServiceCollection services) - { - this.serviceProvider = services.BuildServiceProvider(); - - foreach (IExtension extension in ExtensionManager.Extensions) - extension.SetServiceProvider(this.serviceProvider); - } - - private Action[] GetPrioritizedConfigureActions() - { - List>> configureActionsByPriorities = new List>>(); - - foreach (IExtension extension in ExtensionManager.Extensions) - if (extension.ConfigureActionsByPriorities != null) - configureActionsByPriorities.AddRange(extension.ConfigureActionsByPriorities); - - return this.GetPrioritizedActions(configureActionsByPriorities); - } - - private Action[] GetPrioritizedActions(IEnumerable>> actionsByPriorities) - { - return actionsByPriorities - .OrderBy(actionByPriority => actionByPriority.Key) - .Select(actionByPriority => actionByPriority.Value) - .ToArray(); - } - - private string[] GetActionMethodInfo(Action action) - { - MethodInfo methodInfo = action.GetMethodInfo(); - - return new string[] { methodInfo.Name, methodInfo.DeclaringType.FullName }; - } - } -} \ No newline at end of file From 91eac711a89bbc69661b0a57799f29bc0bb777d3 Mon Sep 17 00:00:00 2001 From: Dmitry Sikorsky Date: Fri, 30 Jun 2017 14:01:56 +0300 Subject: [PATCH 07/81] Updated README --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 7a0e877..e80cefc 100644 --- a/README.md +++ b/README.md @@ -95,7 +95,7 @@ in order to execute some code inside the ConfigureServices and Configure methods Please take a look at our samples on GitHub: -* [Full-featured ExtCore 1.2.0 framework sample web application](https://github.com/ExtCore/ExtCore-Sample); +* [Full-featured ExtCore 2.0.0-alpha1 framework sample web application](https://github.com/ExtCore/ExtCore-Sample); * [ExtCore framework 1.2.0 sample simplest web application](https://github.com/ExtCore/ExtCore-Sample-Simplest); * [ExtCore framework 1.2.0 sample MVC web application](https://github.com/ExtCore/ExtCore-Sample-Mvc); * [ExtCore framework 1.2.0 sample web application that uses a database](https://github.com/ExtCore/ExtCore-Sample-Data); @@ -106,7 +106,7 @@ Please take a look at our samples on GitHub: * [ExtCore framework 1.2.0 sample web application that uses the events](https://github.com/ExtCore/ExtCore-Sample-Events); * [ExtCore framework 1.2.0 sample API web application](https://github.com/ExtCore/ExtCore-Sample-Api). -You can also download our [ready to use full-featured sample](http://extcore.net/files/ExtCore-Sample-1.2.0.zip). +You can also download our [ready to use full-featured sample](http://extcore.net/files/ExtCore-Sample-2.0.0-alpha1.zip). It contains everything you need to run ExtCore-based web application from Visual Studio 2017, including SQLite database with the test data. From 1192b98da7c594941bf7ea8f32bfedc6714f0401 Mon Sep 17 00:00:00 2001 From: Dmitry Sikorsky Date: Fri, 30 Jun 2017 14:49:33 +0300 Subject: [PATCH 08/81] Updated README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e80cefc..388f1bb 100644 --- a/README.md +++ b/README.md @@ -101,7 +101,7 @@ Please take a look at our samples on GitHub: * [ExtCore framework 1.2.0 sample web application that uses a database](https://github.com/ExtCore/ExtCore-Sample-Data); * [ExtCore framework 1.2.0 sample web application with modular UI](https://github.com/ExtCore/ExtCore-Sample-Modular-Ui); * [ExtCore framework 1.2.0 advanced sample web application with modular UI](https://github.com/ExtCore/ExtCore-Sample-Modular-Ui-Adv); -* [ExtCore framework 1.2.0 advanced sample accounting web application](https://github.com/ExtCore/ExtCore-Sample-Accounting); +* [ExtCore framework 2.0.0-alpha1 advanced sample accounting web application](https://github.com/ExtCore/ExtCore-Sample-Accounting); * [ExtCore framework 1.2.0 sample web application that registers a service inside the extension](https://github.com/ExtCore/ExtCore-Sample-Service); * [ExtCore framework 1.2.0 sample web application that uses the events](https://github.com/ExtCore/ExtCore-Sample-Events); * [ExtCore framework 1.2.0 sample API web application](https://github.com/ExtCore/ExtCore-Sample-Api). From 770c16399642591fec1dd73be14491c1a24222b2 Mon Sep 17 00:00:00 2001 From: Dmitry Sikorsky Date: Wed, 5 Jul 2017 12:16:54 +0300 Subject: [PATCH 09/81] Updated README --- README.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 388f1bb..39ec651 100644 --- a/README.md +++ b/README.md @@ -96,15 +96,15 @@ in order to execute some code inside the ConfigureServices and Configure methods Please take a look at our samples on GitHub: * [Full-featured ExtCore 2.0.0-alpha1 framework sample web application](https://github.com/ExtCore/ExtCore-Sample); -* [ExtCore framework 1.2.0 sample simplest web application](https://github.com/ExtCore/ExtCore-Sample-Simplest); -* [ExtCore framework 1.2.0 sample MVC web application](https://github.com/ExtCore/ExtCore-Sample-Mvc); -* [ExtCore framework 1.2.0 sample web application that uses a database](https://github.com/ExtCore/ExtCore-Sample-Data); -* [ExtCore framework 1.2.0 sample web application with modular UI](https://github.com/ExtCore/ExtCore-Sample-Modular-Ui); -* [ExtCore framework 1.2.0 advanced sample web application with modular UI](https://github.com/ExtCore/ExtCore-Sample-Modular-Ui-Adv); +* [ExtCore framework 2.0.0-alpha1 sample simplest web application](https://github.com/ExtCore/ExtCore-Sample-Simplest); +* [ExtCore framework 2.0.0-alpha1 sample MVC web application](https://github.com/ExtCore/ExtCore-Sample-Mvc); +* [ExtCore framework 2.0.0-alpha1 sample web application that uses a database](https://github.com/ExtCore/ExtCore-Sample-Data); +* [ExtCore framework 2.0.0-alpha1 sample web application with modular UI](https://github.com/ExtCore/ExtCore-Sample-Modular-Ui); +* [ExtCore framework 2.0.0-alpha1 advanced sample web application with modular UI](https://github.com/ExtCore/ExtCore-Sample-Modular-Ui-Adv); * [ExtCore framework 2.0.0-alpha1 advanced sample accounting web application](https://github.com/ExtCore/ExtCore-Sample-Accounting); -* [ExtCore framework 1.2.0 sample web application that registers a service inside the extension](https://github.com/ExtCore/ExtCore-Sample-Service); -* [ExtCore framework 1.2.0 sample web application that uses the events](https://github.com/ExtCore/ExtCore-Sample-Events); -* [ExtCore framework 1.2.0 sample API web application](https://github.com/ExtCore/ExtCore-Sample-Api). +* [ExtCore framework 2.0.0-alpha1 sample web application that registers a service inside the extension](https://github.com/ExtCore/ExtCore-Sample-Service); +* [ExtCore framework 2.0.0-alpha1 sample web application that uses the events](https://github.com/ExtCore/ExtCore-Sample-Events); +* [ExtCore framework 2.0.0-alpha1 sample API web application](https://github.com/ExtCore/ExtCore-Sample-Api). You can also download our [ready to use full-featured sample](http://extcore.net/files/ExtCore-Sample-2.0.0-alpha1.zip). It contains everything you need to run ExtCore-based web application from Visual Studio 2017, including SQLite From 1abb19a46c888997cd4d7c8127775d2d9d48f761 Mon Sep 17 00:00:00 2001 From: Dmitry Sikorsky Date: Mon, 17 Jul 2017 16:05:36 +0300 Subject: [PATCH 10/81] Changed version to 2.0.0-beta1 --- README.md | 2 +- src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj | 2 +- .../ExtCore.Data.Entities.Abstractions.csproj | 2 +- .../ExtCore.Data.EntityFramework.PostgreSql.csproj | 2 +- .../ExtCore.Data.EntityFramework.SqlServer.csproj | 2 +- .../ExtCore.Data.EntityFramework.Sqlite.csproj | 2 +- .../ExtCore.Data.EntityFramework.csproj | 2 +- src/ExtCore.Data/ExtCore.Data.csproj | 2 +- src/ExtCore.Events/ExtCore.Events.csproj | 2 +- src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj | 2 +- .../ExtCore.Mvc.Infrastructure.csproj | 2 +- src/ExtCore.Mvc/ExtCore.Mvc.csproj | 2 +- src/ExtCore.WebApplication/ExtCore.WebApplication.csproj | 2 +- 13 files changed, 13 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index 39ec651..d88542e 100644 --- a/README.md +++ b/README.md @@ -27,7 +27,7 @@ Any module or extension can execute its own code during the web application init use priorities to specify the correct order of the calls. This feature might be used for configuration, to register services etc. -ExtCore consists of two general packages and three optional basic extensions. +ExtCore consists of two general packages and four optional basic extensions. ### General Packages diff --git a/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj b/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj index df274c7..79b739c 100644 --- a/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj +++ b/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj @@ -3,7 +3,7 @@ Part of the ExtCore.Data ExtCore framework extension. Copyright © 2015 Dmitry Sikorsky - 2.0.0-alpha1 + 2.0.0-beta1 Dmitry Sikorsky netstandard1.6 ExtCore.Data.Abstractions diff --git a/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj b/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj index c0d516b..68e0bd4 100644 --- a/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj +++ b/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj @@ -3,7 +3,7 @@ Part of the ExtCore.Data ExtCore framework extension. Copyright © 2015 Dmitry Sikorsky - 2.0.0-alpha1 + 2.0.0-beta1 Dmitry Sikorsky netstandard1.6 ExtCore.Data.Entities.Abstractions diff --git a/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj b/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj index 11d96af..a45caa9 100644 --- a/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj +++ b/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj @@ -3,7 +3,7 @@ Part of the ExtCore.Data ExtCore framework extension. Copyright © 2015 Dmitry Sikorsky - 2.0.0-alpha1 + 2.0.0-beta1 Dmitry Sikorsky netstandard1.6 ExtCore.Data.EntityFramework.PostgreSql diff --git a/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj b/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj index 09bf307..aa490da 100644 --- a/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj +++ b/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj @@ -3,7 +3,7 @@ Part of the ExtCore.Data ExtCore framework extension. Copyright © 2015 Dmitry Sikorsky - 2.0.0-alpha1 + 2.0.0-beta1 Dmitry Sikorsky netstandard1.6 ExtCore.Data.EntityFramework.SqlServer diff --git a/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj b/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj index 3a0ba81..3c5a6c0 100644 --- a/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj +++ b/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj @@ -3,7 +3,7 @@ Part of the ExtCore.Data ExtCore framework extension. Copyright © 2015 Dmitry Sikorsky - 2.0.0-alpha1 + 2.0.0-beta1 Dmitry Sikorsky netstandard1.6 ExtCore.Data.EntityFramework.Sqlite diff --git a/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj b/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj index f74df04..e2bfe11 100644 --- a/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj +++ b/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj @@ -3,7 +3,7 @@ Part of the ExtCore.Data ExtCore framework extension. Copyright © 2017 Dmitry Sikorsky - 2.0.0-alpha1 + 2.0.0-beta1 Dmitry Sikorsky netstandard1.6 ExtCore.Data.EntityFramework diff --git a/src/ExtCore.Data/ExtCore.Data.csproj b/src/ExtCore.Data/ExtCore.Data.csproj index cbd5001..3444bdc 100644 --- a/src/ExtCore.Data/ExtCore.Data.csproj +++ b/src/ExtCore.Data/ExtCore.Data.csproj @@ -3,7 +3,7 @@ Part of the ExtCore.Data ExtCore framework extension. Copyright © 2015 Dmitry Sikorsky - 2.0.0-alpha1 + 2.0.0-beta1 Dmitry Sikorsky netstandard1.6 ExtCore.Data diff --git a/src/ExtCore.Events/ExtCore.Events.csproj b/src/ExtCore.Events/ExtCore.Events.csproj index 6cb8023..73ce32e 100644 --- a/src/ExtCore.Events/ExtCore.Events.csproj +++ b/src/ExtCore.Events/ExtCore.Events.csproj @@ -3,7 +3,7 @@ Part of the ExtCore.Events ExtCore framework extension. Copyright © 2017 Dmitry Sikorsky - 2.0.0-alpha1 + 2.0.0-beta1 Dmitry Sikorsky netstandard1.6 ExtCore.Events diff --git a/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj b/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj index 47ed662..bc4f56b 100644 --- a/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj +++ b/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj @@ -3,7 +3,7 @@ Free, open source and cross-platform framework for creating modular and extendable web applications based on ASP.NET Core 1.1.0. Copyright © 2015 Dmitry Sikorsky - 2.0.0-alpha1 + 2.0.0-beta1 Dmitry Sikorsky netstandard1.6 ExtCore.Infrastructure diff --git a/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj b/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj index bf40981..35b9983 100644 --- a/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj +++ b/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj @@ -3,7 +3,7 @@ Part of the ExtCore.Mvc ExtCore framework extension. Copyright © 2015 Dmitry Sikorsky - 2.0.0-alpha1 + 2.0.0-beta1 Dmitry Sikorsky netstandard1.6 ExtCore.Mvc.Infrastructure diff --git a/src/ExtCore.Mvc/ExtCore.Mvc.csproj b/src/ExtCore.Mvc/ExtCore.Mvc.csproj index 18bd015..b220f5e 100644 --- a/src/ExtCore.Mvc/ExtCore.Mvc.csproj +++ b/src/ExtCore.Mvc/ExtCore.Mvc.csproj @@ -3,7 +3,7 @@ Part of the ExtCore.Mvc ExtCore framework extension. Copyright © 2015 Dmitry Sikorsky - 2.0.0-alpha1 + 2.0.0-beta1 Dmitry Sikorsky netstandard1.6 ExtCore.Mvc diff --git a/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj b/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj index c7b7e0c..bd62f17 100644 --- a/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj +++ b/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj @@ -3,7 +3,7 @@ Free, open source and cross-platform framework for creating modular and extendable web applications based on ASP.NET Core 1.1.0. Copyright © 2015 Dmitry Sikorsky - 2.0.0-alpha1 + 2.0.0-beta1 Dmitry Sikorsky netstandard1.6 ExtCore.WebApplication From 556929d72af3d974a1201f152a374aec5c864013 Mon Sep 17 00:00:00 2001 From: Dmitry Sikorsky Date: Mon, 17 Jul 2017 18:06:56 +0300 Subject: [PATCH 11/81] Changed version to 2.0.0 --- README.md | 26 +++++++++---------- .../ExtCore.Data.Abstractions.csproj | 2 +- .../ExtCore.Data.Entities.Abstractions.csproj | 2 +- ...ore.Data.EntityFramework.PostgreSql.csproj | 2 +- ...Core.Data.EntityFramework.SqlServer.csproj | 2 +- ...ExtCore.Data.EntityFramework.Sqlite.csproj | 2 +- .../ExtCore.Data.EntityFramework.csproj | 2 +- src/ExtCore.Data/ExtCore.Data.csproj | 2 +- src/ExtCore.Events/ExtCore.Events.csproj | 2 +- .../ExtCore.Infrastructure.csproj | 2 +- .../ExtCore.Mvc.Infrastructure.csproj | 2 +- src/ExtCore.Mvc/ExtCore.Mvc.csproj | 2 +- .../ExtCore.WebApplication.csproj | 2 +- 13 files changed, 25 insertions(+), 25 deletions(-) diff --git a/README.md b/README.md index d88542e..d93632b 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# ExtCore 2.0.0-alpha1 +# ExtCore 2.0.0 [![Join the chat at https://gitter.im/ExtCore/ExtCore](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/ExtCore/ExtCore?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) @@ -95,18 +95,18 @@ in order to execute some code inside the ConfigureServices and Configure methods Please take a look at our samples on GitHub: -* [Full-featured ExtCore 2.0.0-alpha1 framework sample web application](https://github.com/ExtCore/ExtCore-Sample); -* [ExtCore framework 2.0.0-alpha1 sample simplest web application](https://github.com/ExtCore/ExtCore-Sample-Simplest); -* [ExtCore framework 2.0.0-alpha1 sample MVC web application](https://github.com/ExtCore/ExtCore-Sample-Mvc); -* [ExtCore framework 2.0.0-alpha1 sample web application that uses a database](https://github.com/ExtCore/ExtCore-Sample-Data); -* [ExtCore framework 2.0.0-alpha1 sample web application with modular UI](https://github.com/ExtCore/ExtCore-Sample-Modular-Ui); -* [ExtCore framework 2.0.0-alpha1 advanced sample web application with modular UI](https://github.com/ExtCore/ExtCore-Sample-Modular-Ui-Adv); -* [ExtCore framework 2.0.0-alpha1 advanced sample accounting web application](https://github.com/ExtCore/ExtCore-Sample-Accounting); -* [ExtCore framework 2.0.0-alpha1 sample web application that registers a service inside the extension](https://github.com/ExtCore/ExtCore-Sample-Service); -* [ExtCore framework 2.0.0-alpha1 sample web application that uses the events](https://github.com/ExtCore/ExtCore-Sample-Events); -* [ExtCore framework 2.0.0-alpha1 sample API web application](https://github.com/ExtCore/ExtCore-Sample-Api). - -You can also download our [ready to use full-featured sample](http://extcore.net/files/ExtCore-Sample-2.0.0-alpha1.zip). +* [Full-featured ExtCore 2.0.0 framework sample web application](https://github.com/ExtCore/ExtCore-Sample); +* [ExtCore framework 2.0.0 sample simplest web application](https://github.com/ExtCore/ExtCore-Sample-Simplest); +* [ExtCore framework 2.0.0 sample MVC web application](https://github.com/ExtCore/ExtCore-Sample-Mvc); +* [ExtCore framework 2.0.0 sample web application that uses a database](https://github.com/ExtCore/ExtCore-Sample-Data); +* [ExtCore framework 2.0.0 sample web application with modular UI](https://github.com/ExtCore/ExtCore-Sample-Modular-Ui); +* [ExtCore framework 2.0.0 advanced sample web application with modular UI](https://github.com/ExtCore/ExtCore-Sample-Modular-Ui-Adv); +* [ExtCore framework 2.0.0 advanced sample accounting web application](https://github.com/ExtCore/ExtCore-Sample-Accounting); +* [ExtCore framework 2.0.0 sample web application that registers a service inside the extension](https://github.com/ExtCore/ExtCore-Sample-Service); +* [ExtCore framework 2.0.0 sample web application that uses the events](https://github.com/ExtCore/ExtCore-Sample-Events); +* [ExtCore framework 2.0.0 sample API web application](https://github.com/ExtCore/ExtCore-Sample-Api). + +You can also download our [ready to use full-featured sample](http://extcore.net/files/ExtCore-Sample-2.0.0.zip). It contains everything you need to run ExtCore-based web application from Visual Studio 2017, including SQLite database with the test data. diff --git a/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj b/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj index 79b739c..d33fbcc 100644 --- a/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj +++ b/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj @@ -3,7 +3,7 @@ Part of the ExtCore.Data ExtCore framework extension. Copyright © 2015 Dmitry Sikorsky - 2.0.0-beta1 + 2.0.0 Dmitry Sikorsky netstandard1.6 ExtCore.Data.Abstractions diff --git a/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj b/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj index 68e0bd4..8fd7ba9 100644 --- a/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj +++ b/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj @@ -3,7 +3,7 @@ Part of the ExtCore.Data ExtCore framework extension. Copyright © 2015 Dmitry Sikorsky - 2.0.0-beta1 + 2.0.0 Dmitry Sikorsky netstandard1.6 ExtCore.Data.Entities.Abstractions diff --git a/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj b/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj index a45caa9..8725491 100644 --- a/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj +++ b/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj @@ -3,7 +3,7 @@ Part of the ExtCore.Data ExtCore framework extension. Copyright © 2015 Dmitry Sikorsky - 2.0.0-beta1 + 2.0.0 Dmitry Sikorsky netstandard1.6 ExtCore.Data.EntityFramework.PostgreSql diff --git a/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj b/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj index aa490da..c0faf29 100644 --- a/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj +++ b/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj @@ -3,7 +3,7 @@ Part of the ExtCore.Data ExtCore framework extension. Copyright © 2015 Dmitry Sikorsky - 2.0.0-beta1 + 2.0.0 Dmitry Sikorsky netstandard1.6 ExtCore.Data.EntityFramework.SqlServer diff --git a/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj b/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj index 3c5a6c0..a724475 100644 --- a/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj +++ b/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj @@ -3,7 +3,7 @@ Part of the ExtCore.Data ExtCore framework extension. Copyright © 2015 Dmitry Sikorsky - 2.0.0-beta1 + 2.0.0 Dmitry Sikorsky netstandard1.6 ExtCore.Data.EntityFramework.Sqlite diff --git a/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj b/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj index e2bfe11..85a06f9 100644 --- a/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj +++ b/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj @@ -3,7 +3,7 @@ Part of the ExtCore.Data ExtCore framework extension. Copyright © 2017 Dmitry Sikorsky - 2.0.0-beta1 + 2.0.0 Dmitry Sikorsky netstandard1.6 ExtCore.Data.EntityFramework diff --git a/src/ExtCore.Data/ExtCore.Data.csproj b/src/ExtCore.Data/ExtCore.Data.csproj index 3444bdc..8b4f87e 100644 --- a/src/ExtCore.Data/ExtCore.Data.csproj +++ b/src/ExtCore.Data/ExtCore.Data.csproj @@ -3,7 +3,7 @@ Part of the ExtCore.Data ExtCore framework extension. Copyright © 2015 Dmitry Sikorsky - 2.0.0-beta1 + 2.0.0 Dmitry Sikorsky netstandard1.6 ExtCore.Data diff --git a/src/ExtCore.Events/ExtCore.Events.csproj b/src/ExtCore.Events/ExtCore.Events.csproj index 73ce32e..ff2c543 100644 --- a/src/ExtCore.Events/ExtCore.Events.csproj +++ b/src/ExtCore.Events/ExtCore.Events.csproj @@ -3,7 +3,7 @@ Part of the ExtCore.Events ExtCore framework extension. Copyright © 2017 Dmitry Sikorsky - 2.0.0-beta1 + 2.0.0 Dmitry Sikorsky netstandard1.6 ExtCore.Events diff --git a/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj b/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj index bc4f56b..22e5324 100644 --- a/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj +++ b/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj @@ -3,7 +3,7 @@ Free, open source and cross-platform framework for creating modular and extendable web applications based on ASP.NET Core 1.1.0. Copyright © 2015 Dmitry Sikorsky - 2.0.0-beta1 + 2.0.0 Dmitry Sikorsky netstandard1.6 ExtCore.Infrastructure diff --git a/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj b/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj index 35b9983..d19e6f3 100644 --- a/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj +++ b/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj @@ -3,7 +3,7 @@ Part of the ExtCore.Mvc ExtCore framework extension. Copyright © 2015 Dmitry Sikorsky - 2.0.0-beta1 + 2.0.0 Dmitry Sikorsky netstandard1.6 ExtCore.Mvc.Infrastructure diff --git a/src/ExtCore.Mvc/ExtCore.Mvc.csproj b/src/ExtCore.Mvc/ExtCore.Mvc.csproj index b220f5e..c98cbba 100644 --- a/src/ExtCore.Mvc/ExtCore.Mvc.csproj +++ b/src/ExtCore.Mvc/ExtCore.Mvc.csproj @@ -3,7 +3,7 @@ Part of the ExtCore.Mvc ExtCore framework extension. Copyright © 2015 Dmitry Sikorsky - 2.0.0-beta1 + 2.0.0 Dmitry Sikorsky netstandard1.6 ExtCore.Mvc diff --git a/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj b/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj index bd62f17..5779e0a 100644 --- a/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj +++ b/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj @@ -3,7 +3,7 @@ Free, open source and cross-platform framework for creating modular and extendable web applications based on ASP.NET Core 1.1.0. Copyright © 2015 Dmitry Sikorsky - 2.0.0-beta1 + 2.0.0 Dmitry Sikorsky netstandard1.6 ExtCore.WebApplication From 1f450cfa5c1f857b596e3a78a56b3b7bfc6a3c5f Mon Sep 17 00:00:00 2001 From: Dmitry Sikorsky Date: Tue, 8 Aug 2017 16:39:42 +0300 Subject: [PATCH 12/81] Fixed #68, updated ASP.NET Core packages --- .gitignore | 4 +- .../ExtCore.Data.Abstractions.csproj | 2 +- .../ExtCore.Data.Entities.Abstractions.csproj | 2 +- ...ore.Data.EntityFramework.PostgreSql.csproj | 4 +- ...Core.Data.EntityFramework.SqlServer.csproj | 4 +- ...ExtCore.Data.EntityFramework.Sqlite.csproj | 4 +- .../ExtCore.Data.EntityFramework.csproj | 4 +- src/ExtCore.Data/ExtCore.Data.csproj | 2 +- src/ExtCore.Events/ExtCore.Events.csproj | 2 +- .../ExtCore.Infrastructure.csproj | 8 ++-- .../ExtCore.Mvc.Infrastructure.csproj | 4 +- src/ExtCore.Mvc/ExtCore.Mvc.csproj | 10 ++--- .../DefaultAssemblyProvider.cs | 24 ++++++++-- .../ExtCore.WebApplication.csproj | 8 ++-- .../Extensions/ServiceCollectionExtensions.cs | 44 +++++++++++++++++-- 15 files changed, 91 insertions(+), 35 deletions(-) diff --git a/.gitignore b/.gitignore index a9b29e0..2cc1a2a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ .vs/ bin/ -obj/ \ No newline at end of file +obj/ +pack.bat +push.bat \ No newline at end of file diff --git a/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj b/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj index d33fbcc..877df28 100644 --- a/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj +++ b/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj @@ -3,7 +3,7 @@ Part of the ExtCore.Data ExtCore framework extension. Copyright © 2015 Dmitry Sikorsky - 2.0.0 + 2.1.0-beta1 Dmitry Sikorsky netstandard1.6 ExtCore.Data.Abstractions diff --git a/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj b/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj index 8fd7ba9..e667cbb 100644 --- a/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj +++ b/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj @@ -3,7 +3,7 @@ Part of the ExtCore.Data ExtCore framework extension. Copyright © 2015 Dmitry Sikorsky - 2.0.0 + 2.1.0-beta1 Dmitry Sikorsky netstandard1.6 ExtCore.Data.Entities.Abstractions diff --git a/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj b/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj index 8725491..bb14c5c 100644 --- a/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj +++ b/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj @@ -3,7 +3,7 @@ Part of the ExtCore.Data ExtCore framework extension. Copyright © 2015 Dmitry Sikorsky - 2.0.0 + 2.1.0-beta1 Dmitry Sikorsky netstandard1.6 ExtCore.Data.EntityFramework.PostgreSql @@ -17,7 +17,7 @@ - + diff --git a/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj b/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj index c0faf29..8500594 100644 --- a/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj +++ b/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj @@ -3,7 +3,7 @@ Part of the ExtCore.Data ExtCore framework extension. Copyright © 2015 Dmitry Sikorsky - 2.0.0 + 2.1.0-beta1 Dmitry Sikorsky netstandard1.6 ExtCore.Data.EntityFramework.SqlServer @@ -17,7 +17,7 @@ - + diff --git a/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj b/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj index a724475..9b4b7e9 100644 --- a/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj +++ b/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj @@ -3,7 +3,7 @@ Part of the ExtCore.Data ExtCore framework extension. Copyright © 2015 Dmitry Sikorsky - 2.0.0 + 2.1.0-beta1 Dmitry Sikorsky netstandard1.6 ExtCore.Data.EntityFramework.Sqlite @@ -17,7 +17,7 @@ - + diff --git a/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj b/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj index 85a06f9..afe3630 100644 --- a/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj +++ b/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj @@ -3,7 +3,7 @@ Part of the ExtCore.Data ExtCore framework extension. Copyright © 2017 Dmitry Sikorsky - 2.0.0 + 2.1.0-beta1 Dmitry Sikorsky netstandard1.6 ExtCore.Data.EntityFramework @@ -19,7 +19,7 @@ - + diff --git a/src/ExtCore.Data/ExtCore.Data.csproj b/src/ExtCore.Data/ExtCore.Data.csproj index 8b4f87e..ea6f671 100644 --- a/src/ExtCore.Data/ExtCore.Data.csproj +++ b/src/ExtCore.Data/ExtCore.Data.csproj @@ -3,7 +3,7 @@ Part of the ExtCore.Data ExtCore framework extension. Copyright © 2015 Dmitry Sikorsky - 2.0.0 + 2.1.0-beta1 Dmitry Sikorsky netstandard1.6 ExtCore.Data diff --git a/src/ExtCore.Events/ExtCore.Events.csproj b/src/ExtCore.Events/ExtCore.Events.csproj index ff2c543..c8ecaf4 100644 --- a/src/ExtCore.Events/ExtCore.Events.csproj +++ b/src/ExtCore.Events/ExtCore.Events.csproj @@ -3,7 +3,7 @@ Part of the ExtCore.Events ExtCore framework extension. Copyright © 2017 Dmitry Sikorsky - 2.0.0 + 2.1.0-beta1 Dmitry Sikorsky netstandard1.6 ExtCore.Events diff --git a/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj b/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj index 22e5324..087d77e 100644 --- a/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj +++ b/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj @@ -3,7 +3,7 @@ Free, open source and cross-platform framework for creating modular and extendable web applications based on ASP.NET Core 1.1.0. Copyright © 2015 Dmitry Sikorsky - 2.0.0 + 2.1.0-beta1 Dmitry Sikorsky netstandard1.6 ExtCore.Infrastructure @@ -14,9 +14,9 @@ - - - + + + diff --git a/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj b/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj index d19e6f3..a6c4640 100644 --- a/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj +++ b/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj @@ -3,7 +3,7 @@ Part of the ExtCore.Mvc ExtCore framework extension. Copyright © 2015 Dmitry Sikorsky - 2.0.0 + 2.1.0-beta1 Dmitry Sikorsky netstandard1.6 ExtCore.Mvc.Infrastructure @@ -17,7 +17,7 @@ - + diff --git a/src/ExtCore.Mvc/ExtCore.Mvc.csproj b/src/ExtCore.Mvc/ExtCore.Mvc.csproj index c98cbba..6bf92ff 100644 --- a/src/ExtCore.Mvc/ExtCore.Mvc.csproj +++ b/src/ExtCore.Mvc/ExtCore.Mvc.csproj @@ -3,7 +3,7 @@ Part of the ExtCore.Mvc ExtCore framework extension. Copyright © 2015 Dmitry Sikorsky - 2.0.0 + 2.1.0-beta1 Dmitry Sikorsky netstandard1.6 ExtCore.Mvc @@ -17,10 +17,10 @@ - - - - + + + + diff --git a/src/ExtCore.WebApplication/DefaultAssemblyProvider.cs b/src/ExtCore.WebApplication/DefaultAssemblyProvider.cs index a384e72..c49f351 100644 --- a/src/ExtCore.WebApplication/DefaultAssemblyProvider.cs +++ b/src/ExtCore.WebApplication/DefaultAssemblyProvider.cs @@ -55,17 +55,31 @@ public DefaultAssemblyProvider(IServiceProvider serviceProvider) /// Discovers and then gets the discovered assemblies from a specific folder and web application dependencies. /// /// The extensions path of a web application. - /// + /// The discovered and loaded assemblies. public IEnumerable GetAssemblies(string path) + { + return this.GetAssemblies(path, false); + } + + /// + /// Discovers and then gets the discovered assemblies from a specific folder and web application dependencies. + /// + /// The extensions path of a web application. + /// + /// Determines whether a web application will discover and then get the discovered assemblies from the subfolders + /// of a specific folder recursively. + /// + /// The discovered and loaded assemblies. + public IEnumerable GetAssemblies(string path, bool includingSubpaths) { List assemblies = new List(); - assemblies.AddRange(this.GetAssembliesFromPath(path)); + assemblies.AddRange(this.GetAssembliesFromPath(path, true)); assemblies.AddRange(this.GetAssembliesFromDependencyContext()); return assemblies; } - private IEnumerable GetAssembliesFromPath(string path) + private IEnumerable GetAssembliesFromPath(string path, bool includingSubpaths) { List assemblies = new List(); @@ -104,6 +118,10 @@ private IEnumerable GetAssembliesFromPath(string path) else this.logger.LogWarning("Discovering and loading assemblies from path '{0}' skipped: path not found", path); } + if (includingSubpaths) + foreach (string subpath in Directory.GetDirectories(path)) + assemblies.AddRange(this.GetAssembliesFromPath(subpath, includingSubpaths)); + return assemblies; } diff --git a/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj b/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj index 5779e0a..db88ed3 100644 --- a/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj +++ b/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj @@ -3,7 +3,7 @@ Free, open source and cross-platform framework for creating modular and extendable web applications based on ASP.NET Core 1.1.0. Copyright © 2015 Dmitry Sikorsky - 2.0.0 + 2.1.0-beta1 Dmitry Sikorsky netstandard1.6 ExtCore.WebApplication @@ -17,9 +17,9 @@ - - - + + + diff --git a/src/ExtCore.WebApplication/Extensions/ServiceCollectionExtensions.cs b/src/ExtCore.WebApplication/Extensions/ServiceCollectionExtensions.cs index 3581550..d0ede22 100644 --- a/src/ExtCore.WebApplication/Extensions/ServiceCollectionExtensions.cs +++ b/src/ExtCore.WebApplication/Extensions/ServiceCollectionExtensions.cs @@ -39,7 +39,22 @@ public static void AddExtCore(this IServiceCollection services) /// The absolute extensions path. public static void AddExtCore(this IServiceCollection services, string extensionsPath) { - services.AddExtCore(extensionsPath, new DefaultAssemblyProvider(services.BuildServiceProvider())); + services.AddExtCore(extensionsPath, false, new DefaultAssemblyProvider(services.BuildServiceProvider())); + } + + /// + /// Discovers the assemblies and executes the ConfigureServices actions from all the extensions. + /// It must be called inside the ConfigureServices method of the web application's Startup class + /// in order ExtCore to work properly. + /// + /// + /// The services collection passed to the ConfigureServices method of the web application's Startup class. + /// + /// The absolute extensions path. + /// Determines whether the assemblies must be loaded from the subfolders recursively. + public static void AddExtCore(this IServiceCollection services, string extensionsPath, bool includingSubpaths) + { + services.AddExtCore(extensionsPath, includingSubpaths, new DefaultAssemblyProvider(services.BuildServiceProvider())); } /// @@ -54,7 +69,23 @@ public static void AddExtCore(this IServiceCollection services, string extension /// The assembly provider that is used to discover and load the assemblies. public static void AddExtCore(this IServiceCollection services, string extensionsPath, IAssemblyProvider assemblyProvider) { - ServiceCollectionExtensions.DiscoverAssemblies(assemblyProvider, extensionsPath); + services.AddExtCore(extensionsPath, false, assemblyProvider); + } + + /// + /// Discovers the assemblies and executes the ConfigureServices actions from all the extensions. + /// It must be called inside the ConfigureServices method of the web application's Startup class + /// in order ExtCore to work properly. + /// + /// + /// The services collection passed to the ConfigureServices method of the web application's Startup class. + /// + /// The absolute extensions path. + /// Determines whether the assemblies must be loaded from the subfolders recursively. + /// The assembly provider that is used to discover and load the assemblies. + public static void AddExtCore(this IServiceCollection services, string extensionsPath, bool includingSubpaths, IAssemblyProvider assemblyProvider) + { + ServiceCollectionExtensions.DiscoverAssemblies(assemblyProvider, extensionsPath, includingSubpaths); IServiceProvider serviceProvider = services.BuildServiceProvider(); ILogger logger = serviceProvider.GetService().CreateLogger("ExtCore.WebApplication"); @@ -66,9 +97,14 @@ public static void AddExtCore(this IServiceCollection services, string extension } } - private static void DiscoverAssemblies(IAssemblyProvider assemblyProvider, string extensionsPath) + private static void DiscoverAssemblies(IAssemblyProvider assemblyProvider, string extensionsPath, bool includingSubpaths) { - ExtensionManager.SetAssemblies(assemblyProvider.GetAssemblies(extensionsPath)); + // TODO: remove this workaround in the next major release + // (it is done this way now only to avoid changing the IAssemblyProvider public interface in the minor release). + if (assemblyProvider is DefaultAssemblyProvider) + ExtensionManager.SetAssemblies((assemblyProvider as DefaultAssemblyProvider).GetAssemblies(extensionsPath, includingSubpaths)); + + else ExtensionManager.SetAssemblies(assemblyProvider.GetAssemblies(extensionsPath)); } } } \ No newline at end of file From c404c0360fd0aeaa962290b3fa9aa2fbb28812c7 Mon Sep 17 00:00:00 2001 From: Dmitry Sikorsky Date: Tue, 8 Aug 2017 16:41:17 +0300 Subject: [PATCH 13/81] Removed global.json --- global.json | 1 - 1 file changed, 1 deletion(-) delete mode 100644 global.json diff --git a/global.json b/global.json deleted file mode 100644 index bd52dc5..0000000 --- a/global.json +++ /dev/null @@ -1 +0,0 @@ -{"projects":["src"]} \ No newline at end of file From aa509b63483aa6b0d8606680aacdc596055ad03f Mon Sep 17 00:00:00 2001 From: Dmitry Sikorsky Date: Wed, 9 Aug 2017 14:27:14 +0300 Subject: [PATCH 14/81] Fixed #63 --- .../ExtCore.Data.EntityFramework.MySql.csproj | 23 +++++++++++++++ .../StorageContext.cs | 28 +++++++++++++++++++ 2 files changed, 51 insertions(+) create mode 100644 src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj create mode 100644 src/ExtCore.Data.EntityFramework.MySql/StorageContext.cs diff --git a/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj b/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj new file mode 100644 index 0000000..95a8463 --- /dev/null +++ b/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj @@ -0,0 +1,23 @@ + + + + Part of the ExtCore.Data ExtCore framework extension. + Copyright © 2017 Dmitry Sikorsky + 2.1.0-beta1 + Dmitry Sikorsky + netstandard1.6 + ExtCore.Data.EntityFramework.MySql + ExtCore.Data.EntityFramework.MySql + http://extcore.net/extcore_nuget_icon.png + http://extcore.net/ + + + + + + + + + + + diff --git a/src/ExtCore.Data.EntityFramework.MySql/StorageContext.cs b/src/ExtCore.Data.EntityFramework.MySql/StorageContext.cs new file mode 100644 index 0000000..b87795c --- /dev/null +++ b/src/ExtCore.Data.EntityFramework.MySql/StorageContext.cs @@ -0,0 +1,28 @@ +// Copyright © 2017 Dmitry Sikorsky. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.Options; +using MySQL.Data.EntityFrameworkCore.Extensions; + +namespace ExtCore.Data.EntityFramework.MySql +{ + /// + /// Implements the IStorageContext interface and represents MySQL database + /// with the Entity Framework Core as the ORM. + /// + public class StorageContext : StorageContextBase + { + /// + /// Initializes a new instance of the StorageContext class. + /// + /// The connection string that is used to connect to the MySQL database. + public StorageContext(IOptions options) : base(options) { } + + protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) + { + base.OnConfiguring(optionsBuilder); + optionsBuilder.UseMySQL(this.ConnectionString); + } + } +} \ No newline at end of file From 8aadc221d5ee521e1a463d27694c94b1a1c233bf Mon Sep 17 00:00:00 2001 From: Dmitry Sikorsky Date: Wed, 16 Aug 2017 11:18:47 +0300 Subject: [PATCH 15/81] Fixed #69 --- src/ExtCore.Mvc/Actions/UseStaticFilesAction.cs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/ExtCore.Mvc/Actions/UseStaticFilesAction.cs b/src/ExtCore.Mvc/Actions/UseStaticFilesAction.cs index e2b56b8..035d751 100644 --- a/src/ExtCore.Mvc/Actions/UseStaticFilesAction.cs +++ b/src/ExtCore.Mvc/Actions/UseStaticFilesAction.cs @@ -4,6 +4,8 @@ using System; using ExtCore.Infrastructure.Actions; using Microsoft.AspNetCore.Builder; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Options; namespace ExtCore.Mvc.Actions { @@ -30,7 +32,9 @@ public class UseStaticFilesAction : IConfigureAction /// public void Execute(IApplicationBuilder applicationBuilder, IServiceProvider serviceProvider) { - applicationBuilder.UseStaticFiles(); + IOptions options = serviceProvider.GetService>(); + + applicationBuilder.UseStaticFiles(options?.Value); } } } \ No newline at end of file From 087d9659f029f30513cb9650fca7550606017a96 Mon Sep 17 00:00:00 2001 From: Dmitry Sikorsky Date: Wed, 16 Aug 2017 13:20:14 +0300 Subject: [PATCH 16/81] Changed version to 2.1.0-beta1 --- ExtCore.sln | 12 +++++++++++- README.md | 6 +++--- src/ExtCore.Data.EntityFramework/Extension.cs | 2 +- src/ExtCore.Data/Extension.cs | 2 +- src/ExtCore.Events/Extension.cs | 2 +- src/ExtCore.Mvc/Extension.cs | 2 +- 6 files changed, 18 insertions(+), 8 deletions(-) diff --git a/ExtCore.sln b/ExtCore.sln index 1ca862b..0b06c20 100644 --- a/ExtCore.sln +++ b/ExtCore.sln @@ -1,7 +1,7 @@  Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 15 -VisualStudioVersion = 15.0.26430.14 +VisualStudioVersion = 15.0.26730.3 MinimumVisualStudioVersion = 10.0.40219.1 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{0D7AEFA3-ABB0-4AF1-A4C1-F8E05C241753}" EndProject @@ -37,6 +37,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ExtCore.Data.Entities.Abstr EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Data.EntityFramework", "Data.EntityFramework", "{A770A286-2B75-4BF7-8300-24CEC8D072AD}" EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ExtCore.Data.EntityFramework.MySql", "src\ExtCore.Data.EntityFramework.MySql\ExtCore.Data.EntityFramework.MySql.csproj", "{79A8C5FE-94FA-4D60-86C7-016EBF0386B4}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -91,6 +93,10 @@ Global {A97967FC-B333-4C27-BAFE-4369C7695688}.Debug|Any CPU.Build.0 = Debug|Any CPU {A97967FC-B333-4C27-BAFE-4369C7695688}.Release|Any CPU.ActiveCfg = Release|Any CPU {A97967FC-B333-4C27-BAFE-4369C7695688}.Release|Any CPU.Build.0 = Release|Any CPU + {79A8C5FE-94FA-4D60-86C7-016EBF0386B4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {79A8C5FE-94FA-4D60-86C7-016EBF0386B4}.Debug|Any CPU.Build.0 = Debug|Any CPU + {79A8C5FE-94FA-4D60-86C7-016EBF0386B4}.Release|Any CPU.ActiveCfg = Release|Any CPU + {79A8C5FE-94FA-4D60-86C7-016EBF0386B4}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -112,5 +118,9 @@ Global {77F8B77C-440C-48D9-80FA-192FF49283C8} = {A770A286-2B75-4BF7-8300-24CEC8D072AD} {A97967FC-B333-4C27-BAFE-4369C7695688} = {DD95EC14-4783-4E08-A5EC-6C110DC7FB01} {A770A286-2B75-4BF7-8300-24CEC8D072AD} = {0D7AEFA3-ABB0-4AF1-A4C1-F8E05C241753} + {79A8C5FE-94FA-4D60-86C7-016EBF0386B4} = {A770A286-2B75-4BF7-8300-24CEC8D072AD} + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {DF807CB9-3F57-4CF4-B501-26F9D4BB417C} EndGlobalSection EndGlobal diff --git a/README.md b/README.md index d93632b..561932c 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# ExtCore 2.0.0 +# ExtCore 2.1.0-beta1 [![Join the chat at https://gitter.im/ExtCore/ExtCore](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/ExtCore/ExtCore?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) @@ -95,7 +95,7 @@ in order to execute some code inside the ConfigureServices and Configure methods Please take a look at our samples on GitHub: -* [Full-featured ExtCore 2.0.0 framework sample web application](https://github.com/ExtCore/ExtCore-Sample); +* [Full-featured ExtCore 2.1.0-beta1 framework sample web application](https://github.com/ExtCore/ExtCore-Sample); * [ExtCore framework 2.0.0 sample simplest web application](https://github.com/ExtCore/ExtCore-Sample-Simplest); * [ExtCore framework 2.0.0 sample MVC web application](https://github.com/ExtCore/ExtCore-Sample-Mvc); * [ExtCore framework 2.0.0 sample web application that uses a database](https://github.com/ExtCore/ExtCore-Sample-Data); @@ -106,7 +106,7 @@ Please take a look at our samples on GitHub: * [ExtCore framework 2.0.0 sample web application that uses the events](https://github.com/ExtCore/ExtCore-Sample-Events); * [ExtCore framework 2.0.0 sample API web application](https://github.com/ExtCore/ExtCore-Sample-Api). -You can also download our [ready to use full-featured sample](http://extcore.net/files/ExtCore-Sample-2.0.0.zip). +You can also download our [ready to use full-featured sample](http://extcore.net/files/ExtCore-Sample-2.1.0-beta1.zip). It contains everything you need to run ExtCore-based web application from Visual Studio 2017, including SQLite database with the test data. diff --git a/src/ExtCore.Data.EntityFramework/Extension.cs b/src/ExtCore.Data.EntityFramework/Extension.cs index 35a6644..629efde 100644 --- a/src/ExtCore.Data.EntityFramework/Extension.cs +++ b/src/ExtCore.Data.EntityFramework/Extension.cs @@ -24,7 +24,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "2.0.0-alpha1"; + public override string Version => "2.1.0-beta1"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Data/Extension.cs b/src/ExtCore.Data/Extension.cs index cfbeff1..d9eb1b1 100644 --- a/src/ExtCore.Data/Extension.cs +++ b/src/ExtCore.Data/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "2.0.0-alpha1"; + public override string Version => "2.1.0-beta1"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Events/Extension.cs b/src/ExtCore.Events/Extension.cs index dfe2287..c4355eb 100644 --- a/src/ExtCore.Events/Extension.cs +++ b/src/ExtCore.Events/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "2.0.0-alpha1"; + public override string Version => "2.1.0-beta1"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Mvc/Extension.cs b/src/ExtCore.Mvc/Extension.cs index e9de95c..7c7291d 100644 --- a/src/ExtCore.Mvc/Extension.cs +++ b/src/ExtCore.Mvc/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "2.0.0-alpha1"; + public override string Version => "2.1.0-beta1"; /// /// Gets the authors of the extension (separated by commas). From 7389b119feb3bc4f2940dc2b9892d845bbb9c031 Mon Sep 17 00:00:00 2001 From: Dmitry Sikorsky Date: Wed, 16 Aug 2017 13:56:43 +0300 Subject: [PATCH 17/81] Fixed configuration bug, changed version to 2.1.0-beta2 --- README.md | 6 +++--- .../ExtCore.Data.Abstractions.csproj | 2 +- .../ExtCore.Data.Entities.Abstractions.csproj | 2 +- .../ExtCore.Data.EntityFramework.MySql.csproj | 2 +- .../ExtCore.Data.EntityFramework.PostgreSql.csproj | 2 +- .../ExtCore.Data.EntityFramework.SqlServer.csproj | 2 +- .../ExtCore.Data.EntityFramework.Sqlite.csproj | 2 +- .../ExtCore.Data.EntityFramework.csproj | 2 +- src/ExtCore.Data.EntityFramework/Extension.cs | 2 +- src/ExtCore.Data/ExtCore.Data.csproj | 2 +- src/ExtCore.Data/Extension.cs | 2 +- src/ExtCore.Events/ExtCore.Events.csproj | 2 +- src/ExtCore.Events/Extension.cs | 2 +- src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj | 2 +- .../ExtCore.Mvc.Infrastructure.csproj | 2 +- src/ExtCore.Mvc/ExtCore.Mvc.csproj | 2 +- src/ExtCore.Mvc/Extension.cs | 2 +- src/ExtCore.WebApplication/DefaultAssemblyProvider.cs | 2 +- src/ExtCore.WebApplication/ExtCore.WebApplication.csproj | 2 +- 19 files changed, 21 insertions(+), 21 deletions(-) diff --git a/README.md b/README.md index 561932c..d7e9917 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# ExtCore 2.1.0-beta1 +# ExtCore 2.1.0-beta2 [![Join the chat at https://gitter.im/ExtCore/ExtCore](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/ExtCore/ExtCore?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) @@ -95,7 +95,7 @@ in order to execute some code inside the ConfigureServices and Configure methods Please take a look at our samples on GitHub: -* [Full-featured ExtCore 2.1.0-beta1 framework sample web application](https://github.com/ExtCore/ExtCore-Sample); +* [Full-featured ExtCore 2.1.0-beta2 framework sample web application](https://github.com/ExtCore/ExtCore-Sample); * [ExtCore framework 2.0.0 sample simplest web application](https://github.com/ExtCore/ExtCore-Sample-Simplest); * [ExtCore framework 2.0.0 sample MVC web application](https://github.com/ExtCore/ExtCore-Sample-Mvc); * [ExtCore framework 2.0.0 sample web application that uses a database](https://github.com/ExtCore/ExtCore-Sample-Data); @@ -106,7 +106,7 @@ Please take a look at our samples on GitHub: * [ExtCore framework 2.0.0 sample web application that uses the events](https://github.com/ExtCore/ExtCore-Sample-Events); * [ExtCore framework 2.0.0 sample API web application](https://github.com/ExtCore/ExtCore-Sample-Api). -You can also download our [ready to use full-featured sample](http://extcore.net/files/ExtCore-Sample-2.1.0-beta1.zip). +You can also download our [ready to use full-featured sample](http://extcore.net/files/ExtCore-Sample-2.1.0-beta2.zip). It contains everything you need to run ExtCore-based web application from Visual Studio 2017, including SQLite database with the test data. diff --git a/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj b/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj index 877df28..8a9c261 100644 --- a/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj +++ b/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj @@ -3,7 +3,7 @@ Part of the ExtCore.Data ExtCore framework extension. Copyright © 2015 Dmitry Sikorsky - 2.1.0-beta1 + 2.1.0-beta2 Dmitry Sikorsky netstandard1.6 ExtCore.Data.Abstractions diff --git a/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj b/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj index e667cbb..4d4da44 100644 --- a/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj +++ b/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj @@ -3,7 +3,7 @@ Part of the ExtCore.Data ExtCore framework extension. Copyright © 2015 Dmitry Sikorsky - 2.1.0-beta1 + 2.1.0-beta2 Dmitry Sikorsky netstandard1.6 ExtCore.Data.Entities.Abstractions diff --git a/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj b/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj index 95a8463..7042e6f 100644 --- a/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj +++ b/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj @@ -3,7 +3,7 @@ Part of the ExtCore.Data ExtCore framework extension. Copyright © 2017 Dmitry Sikorsky - 2.1.0-beta1 + 2.1.0-beta2 Dmitry Sikorsky netstandard1.6 ExtCore.Data.EntityFramework.MySql diff --git a/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj b/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj index bb14c5c..6adb3c8 100644 --- a/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj +++ b/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj @@ -3,7 +3,7 @@ Part of the ExtCore.Data ExtCore framework extension. Copyright © 2015 Dmitry Sikorsky - 2.1.0-beta1 + 2.1.0-beta2 Dmitry Sikorsky netstandard1.6 ExtCore.Data.EntityFramework.PostgreSql diff --git a/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj b/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj index 8500594..b814a4a 100644 --- a/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj +++ b/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj @@ -3,7 +3,7 @@ Part of the ExtCore.Data ExtCore framework extension. Copyright © 2015 Dmitry Sikorsky - 2.1.0-beta1 + 2.1.0-beta2 Dmitry Sikorsky netstandard1.6 ExtCore.Data.EntityFramework.SqlServer diff --git a/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj b/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj index 9b4b7e9..c812061 100644 --- a/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj +++ b/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj @@ -3,7 +3,7 @@ Part of the ExtCore.Data ExtCore framework extension. Copyright © 2015 Dmitry Sikorsky - 2.1.0-beta1 + 2.1.0-beta2 Dmitry Sikorsky netstandard1.6 ExtCore.Data.EntityFramework.Sqlite diff --git a/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj b/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj index afe3630..b50dda5 100644 --- a/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj +++ b/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj @@ -3,7 +3,7 @@ Part of the ExtCore.Data ExtCore framework extension. Copyright © 2017 Dmitry Sikorsky - 2.1.0-beta1 + 2.1.0-beta2 Dmitry Sikorsky netstandard1.6 ExtCore.Data.EntityFramework diff --git a/src/ExtCore.Data.EntityFramework/Extension.cs b/src/ExtCore.Data.EntityFramework/Extension.cs index 629efde..3bcdd97 100644 --- a/src/ExtCore.Data.EntityFramework/Extension.cs +++ b/src/ExtCore.Data.EntityFramework/Extension.cs @@ -24,7 +24,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "2.1.0-beta1"; + public override string Version => "2.1.0-beta2"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Data/ExtCore.Data.csproj b/src/ExtCore.Data/ExtCore.Data.csproj index ea6f671..8566a56 100644 --- a/src/ExtCore.Data/ExtCore.Data.csproj +++ b/src/ExtCore.Data/ExtCore.Data.csproj @@ -3,7 +3,7 @@ Part of the ExtCore.Data ExtCore framework extension. Copyright © 2015 Dmitry Sikorsky - 2.1.0-beta1 + 2.1.0-beta2 Dmitry Sikorsky netstandard1.6 ExtCore.Data diff --git a/src/ExtCore.Data/Extension.cs b/src/ExtCore.Data/Extension.cs index d9eb1b1..d9ef4a6 100644 --- a/src/ExtCore.Data/Extension.cs +++ b/src/ExtCore.Data/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "2.1.0-beta1"; + public override string Version => "2.1.0-beta2"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Events/ExtCore.Events.csproj b/src/ExtCore.Events/ExtCore.Events.csproj index c8ecaf4..1305027 100644 --- a/src/ExtCore.Events/ExtCore.Events.csproj +++ b/src/ExtCore.Events/ExtCore.Events.csproj @@ -3,7 +3,7 @@ Part of the ExtCore.Events ExtCore framework extension. Copyright © 2017 Dmitry Sikorsky - 2.1.0-beta1 + 2.1.0-beta2 Dmitry Sikorsky netstandard1.6 ExtCore.Events diff --git a/src/ExtCore.Events/Extension.cs b/src/ExtCore.Events/Extension.cs index c4355eb..ce3718e 100644 --- a/src/ExtCore.Events/Extension.cs +++ b/src/ExtCore.Events/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "2.1.0-beta1"; + public override string Version => "2.1.0-beta2"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj b/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj index 087d77e..ee59879 100644 --- a/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj +++ b/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj @@ -3,7 +3,7 @@ Free, open source and cross-platform framework for creating modular and extendable web applications based on ASP.NET Core 1.1.0. Copyright © 2015 Dmitry Sikorsky - 2.1.0-beta1 + 2.1.0-beta2 Dmitry Sikorsky netstandard1.6 ExtCore.Infrastructure diff --git a/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj b/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj index a6c4640..743eb69 100644 --- a/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj +++ b/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj @@ -3,7 +3,7 @@ Part of the ExtCore.Mvc ExtCore framework extension. Copyright © 2015 Dmitry Sikorsky - 2.1.0-beta1 + 2.1.0-beta2 Dmitry Sikorsky netstandard1.6 ExtCore.Mvc.Infrastructure diff --git a/src/ExtCore.Mvc/ExtCore.Mvc.csproj b/src/ExtCore.Mvc/ExtCore.Mvc.csproj index 6bf92ff..55faeb5 100644 --- a/src/ExtCore.Mvc/ExtCore.Mvc.csproj +++ b/src/ExtCore.Mvc/ExtCore.Mvc.csproj @@ -3,7 +3,7 @@ Part of the ExtCore.Mvc ExtCore framework extension. Copyright © 2015 Dmitry Sikorsky - 2.1.0-beta1 + 2.1.0-beta2 Dmitry Sikorsky netstandard1.6 ExtCore.Mvc diff --git a/src/ExtCore.Mvc/Extension.cs b/src/ExtCore.Mvc/Extension.cs index 7c7291d..68c8ed9 100644 --- a/src/ExtCore.Mvc/Extension.cs +++ b/src/ExtCore.Mvc/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "2.1.0-beta1"; + public override string Version => "2.1.0-beta2"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.WebApplication/DefaultAssemblyProvider.cs b/src/ExtCore.WebApplication/DefaultAssemblyProvider.cs index c49f351..f7bff2a 100644 --- a/src/ExtCore.WebApplication/DefaultAssemblyProvider.cs +++ b/src/ExtCore.WebApplication/DefaultAssemblyProvider.cs @@ -74,7 +74,7 @@ public IEnumerable GetAssemblies(string path, bool includingSubpaths) { List assemblies = new List(); - assemblies.AddRange(this.GetAssembliesFromPath(path, true)); + assemblies.AddRange(this.GetAssembliesFromPath(path, includingSubpaths)); assemblies.AddRange(this.GetAssembliesFromDependencyContext()); return assemblies; } diff --git a/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj b/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj index db88ed3..838d500 100644 --- a/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj +++ b/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj @@ -3,7 +3,7 @@ Free, open source and cross-platform framework for creating modular and extendable web applications based on ASP.NET Core 1.1.0. Copyright © 2015 Dmitry Sikorsky - 2.1.0-beta1 + 2.1.0-beta2 Dmitry Sikorsky netstandard1.6 ExtCore.WebApplication From 78c139e3bd45c9c4536ee102e2655bfd9d903106 Mon Sep 17 00:00:00 2001 From: Dmitry Sikorsky Date: Sat, 19 Aug 2017 21:06:40 +0300 Subject: [PATCH 18/81] Changed version to 2.1.0 --- README.md | 6 +++--- .../ExtCore.Data.Abstractions.csproj | 2 +- .../ExtCore.Data.Entities.Abstractions.csproj | 2 +- .../ExtCore.Data.EntityFramework.MySql.csproj | 2 +- .../ExtCore.Data.EntityFramework.PostgreSql.csproj | 2 +- .../ExtCore.Data.EntityFramework.SqlServer.csproj | 2 +- .../ExtCore.Data.EntityFramework.Sqlite.csproj | 2 +- .../ExtCore.Data.EntityFramework.csproj | 2 +- src/ExtCore.Data.EntityFramework/Extension.cs | 2 +- src/ExtCore.Data/ExtCore.Data.csproj | 2 +- src/ExtCore.Data/Extension.cs | 2 +- src/ExtCore.Events/ExtCore.Events.csproj | 2 +- src/ExtCore.Events/Extension.cs | 2 +- src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj | 2 +- .../ExtCore.Mvc.Infrastructure.csproj | 2 +- src/ExtCore.Mvc/ExtCore.Mvc.csproj | 2 +- src/ExtCore.Mvc/Extension.cs | 2 +- src/ExtCore.WebApplication/ExtCore.WebApplication.csproj | 2 +- 18 files changed, 20 insertions(+), 20 deletions(-) diff --git a/README.md b/README.md index d7e9917..1277226 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# ExtCore 2.1.0-beta2 +# ExtCore 2.1.0 [![Join the chat at https://gitter.im/ExtCore/ExtCore](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/ExtCore/ExtCore?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) @@ -95,7 +95,7 @@ in order to execute some code inside the ConfigureServices and Configure methods Please take a look at our samples on GitHub: -* [Full-featured ExtCore 2.1.0-beta2 framework sample web application](https://github.com/ExtCore/ExtCore-Sample); +* [Full-featured ExtCore 2.1.0 framework sample web application](https://github.com/ExtCore/ExtCore-Sample); * [ExtCore framework 2.0.0 sample simplest web application](https://github.com/ExtCore/ExtCore-Sample-Simplest); * [ExtCore framework 2.0.0 sample MVC web application](https://github.com/ExtCore/ExtCore-Sample-Mvc); * [ExtCore framework 2.0.0 sample web application that uses a database](https://github.com/ExtCore/ExtCore-Sample-Data); @@ -106,7 +106,7 @@ Please take a look at our samples on GitHub: * [ExtCore framework 2.0.0 sample web application that uses the events](https://github.com/ExtCore/ExtCore-Sample-Events); * [ExtCore framework 2.0.0 sample API web application](https://github.com/ExtCore/ExtCore-Sample-Api). -You can also download our [ready to use full-featured sample](http://extcore.net/files/ExtCore-Sample-2.1.0-beta2.zip). +You can also download our [ready to use full-featured sample](http://extcore.net/files/ExtCore-Sample-2.1.0.zip). It contains everything you need to run ExtCore-based web application from Visual Studio 2017, including SQLite database with the test data. diff --git a/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj b/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj index 8a9c261..dcaa034 100644 --- a/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj +++ b/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj @@ -3,7 +3,7 @@ Part of the ExtCore.Data ExtCore framework extension. Copyright © 2015 Dmitry Sikorsky - 2.1.0-beta2 + 2.1.0 Dmitry Sikorsky netstandard1.6 ExtCore.Data.Abstractions diff --git a/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj b/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj index 4d4da44..a1510eb 100644 --- a/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj +++ b/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj @@ -3,7 +3,7 @@ Part of the ExtCore.Data ExtCore framework extension. Copyright © 2015 Dmitry Sikorsky - 2.1.0-beta2 + 2.1.0 Dmitry Sikorsky netstandard1.6 ExtCore.Data.Entities.Abstractions diff --git a/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj b/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj index 7042e6f..ee6d4f2 100644 --- a/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj +++ b/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj @@ -3,7 +3,7 @@ Part of the ExtCore.Data ExtCore framework extension. Copyright © 2017 Dmitry Sikorsky - 2.1.0-beta2 + 2.1.0 Dmitry Sikorsky netstandard1.6 ExtCore.Data.EntityFramework.MySql diff --git a/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj b/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj index 6adb3c8..ba9d6e2 100644 --- a/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj +++ b/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj @@ -3,7 +3,7 @@ Part of the ExtCore.Data ExtCore framework extension. Copyright © 2015 Dmitry Sikorsky - 2.1.0-beta2 + 2.1.0 Dmitry Sikorsky netstandard1.6 ExtCore.Data.EntityFramework.PostgreSql diff --git a/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj b/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj index b814a4a..c29e963 100644 --- a/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj +++ b/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj @@ -3,7 +3,7 @@ Part of the ExtCore.Data ExtCore framework extension. Copyright © 2015 Dmitry Sikorsky - 2.1.0-beta2 + 2.1.0 Dmitry Sikorsky netstandard1.6 ExtCore.Data.EntityFramework.SqlServer diff --git a/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj b/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj index c812061..7e68129 100644 --- a/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj +++ b/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj @@ -3,7 +3,7 @@ Part of the ExtCore.Data ExtCore framework extension. Copyright © 2015 Dmitry Sikorsky - 2.1.0-beta2 + 2.1.0 Dmitry Sikorsky netstandard1.6 ExtCore.Data.EntityFramework.Sqlite diff --git a/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj b/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj index b50dda5..17e69a1 100644 --- a/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj +++ b/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj @@ -3,7 +3,7 @@ Part of the ExtCore.Data ExtCore framework extension. Copyright © 2017 Dmitry Sikorsky - 2.1.0-beta2 + 2.1.0 Dmitry Sikorsky netstandard1.6 ExtCore.Data.EntityFramework diff --git a/src/ExtCore.Data.EntityFramework/Extension.cs b/src/ExtCore.Data.EntityFramework/Extension.cs index 3bcdd97..dcf8cf0 100644 --- a/src/ExtCore.Data.EntityFramework/Extension.cs +++ b/src/ExtCore.Data.EntityFramework/Extension.cs @@ -24,7 +24,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "2.1.0-beta2"; + public override string Version => "2.1.0"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Data/ExtCore.Data.csproj b/src/ExtCore.Data/ExtCore.Data.csproj index 8566a56..4ca49c1 100644 --- a/src/ExtCore.Data/ExtCore.Data.csproj +++ b/src/ExtCore.Data/ExtCore.Data.csproj @@ -3,7 +3,7 @@ Part of the ExtCore.Data ExtCore framework extension. Copyright © 2015 Dmitry Sikorsky - 2.1.0-beta2 + 2.1.0 Dmitry Sikorsky netstandard1.6 ExtCore.Data diff --git a/src/ExtCore.Data/Extension.cs b/src/ExtCore.Data/Extension.cs index d9ef4a6..250fb64 100644 --- a/src/ExtCore.Data/Extension.cs +++ b/src/ExtCore.Data/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "2.1.0-beta2"; + public override string Version => "2.1.0"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Events/ExtCore.Events.csproj b/src/ExtCore.Events/ExtCore.Events.csproj index 1305027..a933e5c 100644 --- a/src/ExtCore.Events/ExtCore.Events.csproj +++ b/src/ExtCore.Events/ExtCore.Events.csproj @@ -3,7 +3,7 @@ Part of the ExtCore.Events ExtCore framework extension. Copyright © 2017 Dmitry Sikorsky - 2.1.0-beta2 + 2.1.0 Dmitry Sikorsky netstandard1.6 ExtCore.Events diff --git a/src/ExtCore.Events/Extension.cs b/src/ExtCore.Events/Extension.cs index ce3718e..0acfa59 100644 --- a/src/ExtCore.Events/Extension.cs +++ b/src/ExtCore.Events/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "2.1.0-beta2"; + public override string Version => "2.1.0"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj b/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj index ee59879..89df8f1 100644 --- a/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj +++ b/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj @@ -3,7 +3,7 @@ Free, open source and cross-platform framework for creating modular and extendable web applications based on ASP.NET Core 1.1.0. Copyright © 2015 Dmitry Sikorsky - 2.1.0-beta2 + 2.1.0 Dmitry Sikorsky netstandard1.6 ExtCore.Infrastructure diff --git a/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj b/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj index 743eb69..0bc52ce 100644 --- a/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj +++ b/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj @@ -3,7 +3,7 @@ Part of the ExtCore.Mvc ExtCore framework extension. Copyright © 2015 Dmitry Sikorsky - 2.1.0-beta2 + 2.1.0 Dmitry Sikorsky netstandard1.6 ExtCore.Mvc.Infrastructure diff --git a/src/ExtCore.Mvc/ExtCore.Mvc.csproj b/src/ExtCore.Mvc/ExtCore.Mvc.csproj index 55faeb5..d3da714 100644 --- a/src/ExtCore.Mvc/ExtCore.Mvc.csproj +++ b/src/ExtCore.Mvc/ExtCore.Mvc.csproj @@ -3,7 +3,7 @@ Part of the ExtCore.Mvc ExtCore framework extension. Copyright © 2015 Dmitry Sikorsky - 2.1.0-beta2 + 2.1.0 Dmitry Sikorsky netstandard1.6 ExtCore.Mvc diff --git a/src/ExtCore.Mvc/Extension.cs b/src/ExtCore.Mvc/Extension.cs index 68c8ed9..f731b54 100644 --- a/src/ExtCore.Mvc/Extension.cs +++ b/src/ExtCore.Mvc/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "2.1.0-beta2"; + public override string Version => "2.1.0"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj b/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj index 838d500..e628858 100644 --- a/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj +++ b/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj @@ -3,7 +3,7 @@ Free, open source and cross-platform framework for creating modular and extendable web applications based on ASP.NET Core 1.1.0. Copyright © 2015 Dmitry Sikorsky - 2.1.0-beta2 + 2.1.0 Dmitry Sikorsky netstandard1.6 ExtCore.WebApplication From dc2cbc826647d82d63bf86e44a30645e8b5f0837 Mon Sep 17 00:00:00 2001 From: Dmitry Sikorsky Date: Sun, 20 Aug 2017 15:58:06 +0300 Subject: [PATCH 19/81] Fixed #75, fixed #76 --- .../ExtCore.Data.Abstractions.csproj | 13 +++++---- .../ExtCore.Data.Entities.Abstractions.csproj | 13 +++++---- .../ExtCore.Data.EntityFramework.MySql.csproj | 12 ++++---- ...ore.Data.EntityFramework.PostgreSql.csproj | 12 ++++---- ...Core.Data.EntityFramework.SqlServer.csproj | 12 +++----- ...ExtCore.Data.EntityFramework.Sqlite.csproj | 12 +++----- .../Actions/AddStorageContextAction.cs | 2 +- .../ExtCore.Data.EntityFramework.csproj | 12 +++----- src/ExtCore.Data/ExtCore.Data.csproj | 8 +++--- src/ExtCore.Events/ExtCore.Events.csproj | 10 +++---- .../ExtCore.Infrastructure.csproj | 13 ++++----- .../ExtCore.Mvc.Infrastructure.csproj | 12 +++----- src/ExtCore.Mvc/ExtCore.Mvc.csproj | 15 +++------- .../DefaultAssemblyProvider.cs | 28 ++++++++----------- .../ExtCore.WebApplication.csproj | 17 ++++------- .../Extensions/ServiceCollectionExtensions.cs | 8 ++---- .../IAssemblyProvider.cs | 9 ++++-- 17 files changed, 88 insertions(+), 120 deletions(-) diff --git a/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj b/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj index dcaa034..f2ef109 100644 --- a/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj +++ b/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj @@ -1,16 +1,19 @@  - Part of the ExtCore.Data ExtCore framework extension. - Copyright © 2015 Dmitry Sikorsky - 2.1.0 Dmitry Sikorsky - netstandard1.6 + Copyright © 2015 Dmitry Sikorsky + The ExtCore.Data extension component. Based on the ExtCore framework. + 3.0.0-alpha1 + netcoreapp2.0 ExtCore.Data.Abstractions ExtCore.Data.Abstractions http://extcore.net/extcore_nuget_icon.png http://extcore.net/ - 1.6.1 + + + + diff --git a/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj b/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj index a1510eb..56c179e 100644 --- a/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj +++ b/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj @@ -1,16 +1,19 @@  - Part of the ExtCore.Data ExtCore framework extension. - Copyright © 2015 Dmitry Sikorsky - 2.1.0 Dmitry Sikorsky - netstandard1.6 + Copyright © 2015 Dmitry Sikorsky + The ExtCore.Data extension component. Based on the ExtCore framework. + 3.0.0-alpha1 + netcoreapp2.0 ExtCore.Data.Entities.Abstractions ExtCore.Data.Entities.Abstractions http://extcore.net/extcore_nuget_icon.png http://extcore.net/ - 1.6.1 + + + + diff --git a/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj b/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj index ee6d4f2..6cae597 100644 --- a/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj +++ b/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj @@ -1,11 +1,11 @@  - Part of the ExtCore.Data ExtCore framework extension. - Copyright © 2017 Dmitry Sikorsky - 2.1.0 Dmitry Sikorsky - netstandard1.6 + Copyright © 2017 Dmitry Sikorsky + The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. + 3.0.0-alpha1 + netcoreapp2.0 ExtCore.Data.EntityFramework.MySql ExtCore.Data.EntityFramework.MySql http://extcore.net/extcore_nuget_icon.png @@ -13,11 +13,11 @@ - + - + diff --git a/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj b/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj index ba9d6e2..434c7bb 100644 --- a/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj +++ b/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj @@ -1,11 +1,11 @@  - Part of the ExtCore.Data ExtCore framework extension. - Copyright © 2015 Dmitry Sikorsky - 2.1.0 Dmitry Sikorsky - netstandard1.6 + Copyright © 2015 Dmitry Sikorsky + The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. + 3.0.0-alpha1 + netcoreapp2.0 ExtCore.Data.EntityFramework.PostgreSql ExtCore.Data.EntityFramework.PostgreSql http://extcore.net/extcore_nuget_icon.png @@ -13,11 +13,11 @@ - + - + diff --git a/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj b/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj index c29e963..42686e5 100644 --- a/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj +++ b/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj @@ -1,11 +1,11 @@  - Part of the ExtCore.Data ExtCore framework extension. - Copyright © 2015 Dmitry Sikorsky - 2.1.0 Dmitry Sikorsky - netstandard1.6 + Copyright © 2015 Dmitry Sikorsky + The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. + 3.0.0-alpha1 + netcoreapp2.0 ExtCore.Data.EntityFramework.SqlServer ExtCore.Data.EntityFramework.SqlServer http://extcore.net/extcore_nuget_icon.png @@ -16,8 +16,4 @@ - - - - diff --git a/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj b/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj index 7e68129..1bf15eb 100644 --- a/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj +++ b/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj @@ -1,11 +1,11 @@  - Part of the ExtCore.Data ExtCore framework extension. - Copyright © 2015 Dmitry Sikorsky - 2.1.0 Dmitry Sikorsky - netstandard1.6 + Copyright © 2015 Dmitry Sikorsky + The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. + 3.0.0-alpha1 + netcoreapp2.0 ExtCore.Data.EntityFramework.Sqlite ExtCore.Data.EntityFramework.Sqlite http://extcore.net/extcore_nuget_icon.png @@ -16,8 +16,4 @@ - - - - diff --git a/src/ExtCore.Data.EntityFramework/Actions/AddStorageContextAction.cs b/src/ExtCore.Data.EntityFramework/Actions/AddStorageContextAction.cs index 26480cf..0c40a3a 100644 --- a/src/ExtCore.Data.EntityFramework/Actions/AddStorageContextAction.cs +++ b/src/ExtCore.Data.EntityFramework/Actions/AddStorageContextAction.cs @@ -16,7 +16,7 @@ namespace ExtCore.Data.EntityFramework.Actions /// Implements the IConfigureServicesAction interface and /// registers found implementation of the IStorageContext interface inside the DI. /// - public class AddStaticFilesAction : IConfigureServicesAction + public class AddStorageContextAction : IConfigureServicesAction { /// /// Priority of the action. The actions will be executed in the order specified by the priority (from smallest to largest). diff --git a/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj b/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj index 17e69a1..cf885e1 100644 --- a/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj +++ b/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj @@ -1,11 +1,11 @@  - Part of the ExtCore.Data ExtCore framework extension. - Copyright © 2017 Dmitry Sikorsky - 2.1.0 Dmitry Sikorsky - netstandard1.6 + Copyright © 2017 Dmitry Sikorsky + The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. + 3.0.0-alpha1 + netcoreapp2.0 ExtCore.Data.EntityFramework ExtCore.Data.EntityFramework http://extcore.net/extcore_nuget_icon.png @@ -18,8 +18,4 @@ - - - - diff --git a/src/ExtCore.Data/ExtCore.Data.csproj b/src/ExtCore.Data/ExtCore.Data.csproj index 4ca49c1..85d5421 100644 --- a/src/ExtCore.Data/ExtCore.Data.csproj +++ b/src/ExtCore.Data/ExtCore.Data.csproj @@ -1,11 +1,11 @@  - Part of the ExtCore.Data ExtCore framework extension. - Copyright © 2015 Dmitry Sikorsky - 2.1.0 Dmitry Sikorsky - netstandard1.6 + Copyright © 2015 Dmitry Sikorsky + The ExtCore.Data extension component. Based on the ExtCore framework. + 3.0.0-alpha1 + netcoreapp2.0 ExtCore.Data ExtCore.Data http://extcore.net/extcore_nuget_icon.png diff --git a/src/ExtCore.Events/ExtCore.Events.csproj b/src/ExtCore.Events/ExtCore.Events.csproj index a933e5c..ef63381 100644 --- a/src/ExtCore.Events/ExtCore.Events.csproj +++ b/src/ExtCore.Events/ExtCore.Events.csproj @@ -1,17 +1,15 @@  - Part of the ExtCore.Events ExtCore framework extension. - Copyright © 2017 Dmitry Sikorsky - 2.1.0 Dmitry Sikorsky - netstandard1.6 + Copyright © 2017 Dmitry Sikorsky + The ExtCore.Events extension component. Based on the ExtCore framework. + 3.0.0-alpha1 + netcoreapp2.0 ExtCore.Events ExtCore.Events http://extcore.net/extcore_nuget_icon.png http://extcore.net/ - 1.6.1 - ExtCore.Events diff --git a/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj b/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj index 89df8f1..339184d 100644 --- a/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj +++ b/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj @@ -1,22 +1,19 @@  - Free, open source and cross-platform framework for creating modular and extendable web applications based on ASP.NET Core 1.1.0. - Copyright © 2015 Dmitry Sikorsky - 2.1.0 Dmitry Sikorsky - netstandard1.6 + Copyright © 2015 Dmitry Sikorsky + Free, open source and cross-platform framework for creating modular and extendable web applications based on ASP.NET Core. + 3.0.0-alpha1 + netcoreapp2.0 ExtCore.Infrastructure ExtCore.Infrastructure http://extcore.net/extcore_nuget_icon.png http://extcore.net/ - 1.6.1 - - - + diff --git a/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj b/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj index 0bc52ce..0b6b64e 100644 --- a/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj +++ b/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj @@ -1,11 +1,11 @@  - Part of the ExtCore.Mvc ExtCore framework extension. - Copyright © 2015 Dmitry Sikorsky - 2.1.0 Dmitry Sikorsky - netstandard1.6 + Copyright © 2015 Dmitry Sikorsky + The ExtCore.Mvc extension component. Based on the ExtCore framework. + 3.0.0-alpha1 + netcoreapp2.0 ExtCore.Mvc.Infrastructure ExtCore.Mvc.Infrastructure http://extcore.net/extcore_nuget_icon.png @@ -16,8 +16,4 @@ - - - - diff --git a/src/ExtCore.Mvc/ExtCore.Mvc.csproj b/src/ExtCore.Mvc/ExtCore.Mvc.csproj index d3da714..1de2d29 100644 --- a/src/ExtCore.Mvc/ExtCore.Mvc.csproj +++ b/src/ExtCore.Mvc/ExtCore.Mvc.csproj @@ -1,11 +1,11 @@  - Part of the ExtCore.Mvc ExtCore framework extension. - Copyright © 2015 Dmitry Sikorsky - 2.1.0 Dmitry Sikorsky - netstandard1.6 + Copyright © 2015 Dmitry Sikorsky + The ExtCore.Mvc extension component. Based on the ExtCore framework. + 3.0.0-alpha1 + netcoreapp2.0 ExtCore.Mvc ExtCore.Mvc http://extcore.net/extcore_nuget_icon.png @@ -16,11 +16,4 @@ - - - - - - - diff --git a/src/ExtCore.WebApplication/DefaultAssemblyProvider.cs b/src/ExtCore.WebApplication/DefaultAssemblyProvider.cs index f7bff2a..acf5fe4 100644 --- a/src/ExtCore.WebApplication/DefaultAssemblyProvider.cs +++ b/src/ExtCore.WebApplication/DefaultAssemblyProvider.cs @@ -42,23 +42,19 @@ public DefaultAssemblyProvider(IServiceProvider serviceProvider) { this.logger = serviceProvider.GetService().CreateLogger("ExtCore.WebApplication"); this.IsCandidateAssembly = assembly => - !assembly.FullName.StartsWith("Microsoft.", StringComparison.OrdinalIgnoreCase) && - !assembly.FullName.StartsWith("System.", StringComparison.OrdinalIgnoreCase); + !assembly.FullName.StartsWith("System.", StringComparison.OrdinalIgnoreCase) && + !assembly.FullName.StartsWith("Microsoft.", StringComparison.OrdinalIgnoreCase); this.IsCandidateCompilationLibrary = library => - !string.Equals(library.Name, "NETStandard.Library", StringComparison.OrdinalIgnoreCase) && + !library.Name.StartsWith("System.", StringComparison.OrdinalIgnoreCase) && !library.Name.StartsWith("Microsoft.", StringComparison.OrdinalIgnoreCase) && - !library.Name.StartsWith("System.", StringComparison.OrdinalIgnoreCase); - } - - /// - /// Discovers and then gets the discovered assemblies from a specific folder and web application dependencies. - /// - /// The extensions path of a web application. - /// The discovered and loaded assemblies. - public IEnumerable GetAssemblies(string path) - { - return this.GetAssemblies(path, false); + !library.Name.StartsWith("Newtonsoft.", StringComparison.OrdinalIgnoreCase) && + !library.Name.StartsWith("runtime.", StringComparison.OrdinalIgnoreCase) && + !library.Name.Equals("NETStandard.Library", StringComparison.OrdinalIgnoreCase) && + !library.Name.Equals("Libuv", StringComparison.OrdinalIgnoreCase) && + !library.Name.Equals("Remotion.Linq", StringComparison.OrdinalIgnoreCase) && + !library.Name.Equals("StackExchange.Redis.StrongName", StringComparison.OrdinalIgnoreCase) && + !library.Name.Equals("WindowsAzure.Storage", StringComparison.OrdinalIgnoreCase); } /// @@ -105,7 +101,7 @@ private IEnumerable GetAssembliesFromPath(string path, bool includingS catch (Exception e) { this.logger.LogWarning("Error loading assembly '{0}'", extensionPath); - this.logger.LogInformation(e.ToString()); + this.logger.LogWarning(e.ToString()); } } } @@ -147,7 +143,7 @@ private IEnumerable GetAssembliesFromDependencyContext() catch (Exception e) { this.logger.LogWarning("Error loading assembly '{0}'", compilationLibrary.Name); - this.logger.LogInformation(e.ToString()); + this.logger.LogWarning(e.ToString()); } } } diff --git a/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj b/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj index e628858..52387bb 100644 --- a/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj +++ b/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj @@ -1,26 +1,19 @@  - Free, open source and cross-platform framework for creating modular and extendable web applications based on ASP.NET Core 1.1.0. - Copyright © 2015 Dmitry Sikorsky - 2.1.0 Dmitry Sikorsky - netstandard1.6 + Copyright © 2015 Dmitry Sikorsky + Free, open source and cross-platform framework for creating modular and extendable web applications based on ASP.NET Core. + 3.0.0-alpha1 + netcoreapp2.0 ExtCore.WebApplication ExtCore.WebApplication http://extcore.net/extcore_nuget_icon.png http://extcore.net/ - - - - - - - - + diff --git a/src/ExtCore.WebApplication/Extensions/ServiceCollectionExtensions.cs b/src/ExtCore.WebApplication/Extensions/ServiceCollectionExtensions.cs index d0ede22..89573af 100644 --- a/src/ExtCore.WebApplication/Extensions/ServiceCollectionExtensions.cs +++ b/src/ExtCore.WebApplication/Extensions/ServiceCollectionExtensions.cs @@ -86,6 +86,7 @@ public static void AddExtCore(this IServiceCollection services, string extension public static void AddExtCore(this IServiceCollection services, string extensionsPath, bool includingSubpaths, IAssemblyProvider assemblyProvider) { ServiceCollectionExtensions.DiscoverAssemblies(assemblyProvider, extensionsPath, includingSubpaths); + IServiceProvider serviceProvider = services.BuildServiceProvider(); ILogger logger = serviceProvider.GetService().CreateLogger("ExtCore.WebApplication"); @@ -99,12 +100,7 @@ public static void AddExtCore(this IServiceCollection services, string extension private static void DiscoverAssemblies(IAssemblyProvider assemblyProvider, string extensionsPath, bool includingSubpaths) { - // TODO: remove this workaround in the next major release - // (it is done this way now only to avoid changing the IAssemblyProvider public interface in the minor release). - if (assemblyProvider is DefaultAssemblyProvider) - ExtensionManager.SetAssemblies((assemblyProvider as DefaultAssemblyProvider).GetAssemblies(extensionsPath, includingSubpaths)); - - else ExtensionManager.SetAssemblies(assemblyProvider.GetAssemblies(extensionsPath)); + ExtensionManager.SetAssemblies(assemblyProvider.GetAssemblies(extensionsPath, includingSubpaths)); } } } \ No newline at end of file diff --git a/src/ExtCore.WebApplication/IAssemblyProvider.cs b/src/ExtCore.WebApplication/IAssemblyProvider.cs index 039c117..450cadf 100644 --- a/src/ExtCore.WebApplication/IAssemblyProvider.cs +++ b/src/ExtCore.WebApplication/IAssemblyProvider.cs @@ -17,7 +17,12 @@ public interface IAssemblyProvider /// /// The extensions path of a web application. Might be used or ignored /// by an implementation of the IAssemblyProvider interface. - /// - IEnumerable GetAssemblies(string path); + /// + /// Determines whether a web application will discover and then get the discovered assemblies from the subfolders + /// of a specific folder recursively. Might be used or ignored by an implementation of the + /// IAssemblyProvider interface. + /// + /// The discovered and loaded assemblies. + IEnumerable GetAssemblies(string path, bool includingSubpaths); } } \ No newline at end of file From 1c3c1cab2eb45d171bfa84f42f430da3d41de146 Mon Sep 17 00:00:00 2001 From: Dmitry Sikorsky Date: Sun, 20 Aug 2017 17:58:36 +0300 Subject: [PATCH 20/81] Fixed #79 --- src/ExtCore.Data/Actions/AddStorageAction.cs | 2 +- .../ExtensionManager.cs | 149 ++++++++++++------ 2 files changed, 104 insertions(+), 47 deletions(-) diff --git a/src/ExtCore.Data/Actions/AddStorageAction.cs b/src/ExtCore.Data/Actions/AddStorageAction.cs index e687bc9..af3acf3 100644 --- a/src/ExtCore.Data/Actions/AddStorageAction.cs +++ b/src/ExtCore.Data/Actions/AddStorageAction.cs @@ -16,7 +16,7 @@ namespace ExtCore.Data.Actions /// Implements the IConfigureServicesAction interface and /// registers found implementation of the IStorage interface inside the DI. /// - public class AddStaticFilesAction : IConfigureServicesAction + public class AddStorageAction : IConfigureServicesAction { /// /// Priority of the action. The actions will be executed in the order specified by the priority (from smallest to largest). diff --git a/src/ExtCore.Infrastructure/ExtensionManager.cs b/src/ExtCore.Infrastructure/ExtensionManager.cs index d8caa44..f818719 100644 --- a/src/ExtCore.Infrastructure/ExtensionManager.cs +++ b/src/ExtCore.Infrastructure/ExtensionManager.cs @@ -9,15 +9,16 @@ namespace ExtCore.Infrastructure { /// - /// Represents assembly cache with the mechanism of getting implementations or instances of a given type. - /// This is the global access point to the types discovered by the ExtCore. + /// Represents the assembly cache with the mechanism of getting implementations or instances of a given type. + /// This is the global access point to the ExtCore type discovering mechanism. /// public static class ExtensionManager { private static IEnumerable assemblies; + private static IDictionary> types; /// - /// Gets the cached assemblies that has been set by the SetAssemblies method. + /// Gets the cached assemblies that have been set by the SetAssemblies method. /// public static IEnumerable Assemblies { @@ -28,45 +29,57 @@ public static IEnumerable Assemblies } /// - /// Sets the discovered assemblies and invalidates the IExtension interface - /// instances cache. + /// Sets the assemblies and invalidates the type cache. /// /// The assemblies to set. public static void SetAssemblies(IEnumerable assemblies) { ExtensionManager.assemblies = assemblies; + ExtensionManager.types = new Dictionary>(); } /// - /// Gets the first implementation of the type specified by the type parameter or null if no implementations found. + /// Gets the first implementation of the type specified by the type parameter, or null if no implementations found. /// /// The type parameter to find implementation of. - /// - public static Type GetImplementation() + /// + /// Determines whether the type cache should be used to avoid assemblies scanning next time, + /// when the same type(s) is requested. + /// + /// The first found implementation of the given type. + public static Type GetImplementation(bool useCaching = false) { - return ExtensionManager.GetImplementation(null); + return ExtensionManager.GetImplementation(null, useCaching); } /// /// Gets the first implementation of the type specified by the type parameter and located in the assemblies - /// filtered by the predicate or null if no implementations found. + /// filtered by the predicate, or null if no implementations found. /// /// The type parameter to find implementation of. /// The predicate to filter the assemblies. - /// - public static Type GetImplementation(Func predicate) + /// + /// Determines whether the type cache should be used to avoid assemblies scanning next time, + /// when the same type(s) is requested. + /// + /// The first found implementation of the given type. + public static Type GetImplementation(Func predicate, bool useCaching = false) { - return ExtensionManager.GetImplementations(predicate).FirstOrDefault(); + return ExtensionManager.GetImplementations(predicate, useCaching).FirstOrDefault(); } /// /// Gets the implementations of the type specified by the type parameter. /// /// The type parameter to find implementations of. - /// - public static IEnumerable GetImplementations() + /// + /// Determines whether the type cache should be used to avoid assemblies scanning next time, + /// when the same type(s) is requested. + /// + /// Found implementations of the given type. + public static IEnumerable GetImplementations(bool useCaching = false) { - return ExtensionManager.GetImplementations(null); + return ExtensionManager.GetImplementations(null, useCaching); } /// @@ -75,28 +88,44 @@ public static IEnumerable GetImplementations() /// /// The type parameter to find implementations of. /// The predicate to filter the assemblies. - /// - public static IEnumerable GetImplementations(Func predicate) + /// + /// Determines whether the type cache should be used to avoid assemblies scanning next time, + /// when the same type(s) is requested. + /// + /// Found implementations of the given type. + public static IEnumerable GetImplementations(Func predicate, bool useCaching = false) { + Type type = typeof(T); + + if (useCaching && ExtensionManager.types.ContainsKey(type)) + return ExtensionManager.types[type]; + List implementations = new List(); foreach (Assembly assembly in ExtensionManager.GetAssemblies(predicate)) - foreach (Type type in assembly.GetTypes()) - if (typeof(T).GetTypeInfo().IsAssignableFrom(type) && type.GetTypeInfo().IsClass) - implementations.Add(type); + foreach (Type exportedType in assembly.GetExportedTypes()) + if (type.GetTypeInfo().IsAssignableFrom(exportedType) && exportedType.GetTypeInfo().IsClass) + implementations.Add(exportedType); + + if (useCaching) + ExtensionManager.types.Add(type, implementations); return implementations; } /// - /// Gets the new instance of the first implementation of the type specified by the type parameter + /// Gets the new instance of the first implementation of the type specified by the type parameter, /// or null if no implementations found. /// /// The type parameter to find implementation of. - /// - public static T GetInstance() + /// + /// Determines whether the type cache should be used to avoid assemblies scanning next time, + /// when the instance(s) of the same type(s) is requested. + /// + /// The instance of the first found implementation of the given type. + public static T GetInstance(bool useCaching = false) { - return ExtensionManager.GetInstance(null, new object[] { }); + return ExtensionManager.GetInstance(null, useCaching, new object[] { }); } /// @@ -104,11 +133,15 @@ public static T GetInstance() /// of the type specified by the type parameter or null if no implementations found. /// /// The type parameter to find implementation of. + /// + /// Determines whether the type cache should be used to avoid assemblies scanning next time, + /// when the instance(s) of the same type(s) is requested. + /// /// The arguments to be passed to the constructor. - /// - public static T GetInstance(params object[] args) + /// The instance of the first found implementation of the given type. + public static T GetInstance(bool useCaching = false, params object[] args) { - return ExtensionManager.GetInstance(null, args); + return ExtensionManager.GetInstance(null, useCaching, args); } /// @@ -117,10 +150,14 @@ public static T GetInstance(params object[] args) /// /// The type parameter to find implementation of. /// The predicate to filter the assemblies. - /// - public static T GetInstance(Func predicate) + /// + /// Determines whether the type cache should be used to avoid assemblies scanning next time, + /// when the instance(s) of the same type(s) is requested. + /// + /// The instance of the first found implementation of the given type. + public static T GetInstance(Func predicate, bool useCaching = false) { - return ExtensionManager.GetInstances(predicate).FirstOrDefault(); + return ExtensionManager.GetInstances(predicate, useCaching).FirstOrDefault(); } /// @@ -130,11 +167,15 @@ public static T GetInstance(Func predicate) /// /// The type parameter to find implementation of. /// The predicate to filter the assemblies. + /// + /// Determines whether the type cache should be used to avoid assemblies scanning next time, + /// when the instance(s) of the same type(s) is requested. + /// /// The arguments to be passed to the constructor. - /// - public static T GetInstance(Func predicate, params object[] args) + /// The instance of the first found implementation of the given type. + public static T GetInstance(Func predicate, bool useCaching = false, params object[] args) { - return ExtensionManager.GetInstances(predicate, args).FirstOrDefault(); + return ExtensionManager.GetInstances(predicate, useCaching, args).FirstOrDefault(); } /// @@ -142,10 +183,14 @@ public static T GetInstance(Func predicate, params object[] a /// or empty enumeration if no implementations found. /// /// The type parameter to find implementations of. - /// - public static IEnumerable GetInstances() + /// + /// Determines whether the type cache should be used to avoid assemblies scanning next time, + /// when the instance(s) of the same type(s) is requested. + /// + /// The instances of the found implementations of the given type. + public static IEnumerable GetInstances(bool useCaching = false) { - return ExtensionManager.GetInstances(null, new object[] { }); + return ExtensionManager.GetInstances(null, useCaching, new object[] { }); } /// @@ -153,11 +198,15 @@ public static IEnumerable GetInstances() /// of the type specified by the type parameter or empty enumeration if no implementations found. /// /// The type parameter to find implementations of. + /// + /// Determines whether the type cache should be used to avoid assemblies scanning next time, + /// when the instance(s) of the same type(s) is requested. + /// /// The arguments to be passed to the constructors. - /// - public static IEnumerable GetInstances(params object[] args) + /// The instances of the found implementations of the given type. + public static IEnumerable GetInstances(bool useCaching = false, params object[] args) { - return ExtensionManager.GetInstances(null, args); + return ExtensionManager.GetInstances(null, useCaching, args); } /// @@ -167,10 +216,14 @@ public static IEnumerable GetInstances(params object[] args) /// /// The type parameter to find implementations of. /// The predicate to filter the assemblies. - /// - public static IEnumerable GetInstances(Func predicate) + /// + /// Determines whether the type cache should be used to avoid assemblies scanning next time, + /// when the instance(s) of the same type(s) is requested. + /// + /// The instances of the found implementations of the given type. + public static IEnumerable GetInstances(Func predicate, bool useCaching = false) { - return ExtensionManager.GetInstances(predicate, new object[] { }); + return ExtensionManager.GetInstances(predicate, useCaching, new object[] { }); } /// @@ -180,13 +233,17 @@ public static IEnumerable GetInstances(Func predicate) /// /// The type parameter to find implementations of. /// The predicate to filter the assemblies. + /// + /// Determines whether the type cache should be used to avoid assemblies scanning next time, + /// when the instance(s) of the same type(s) is requested. + /// /// The arguments to be passed to the constructors. - /// - public static IEnumerable GetInstances(Func predicate, params object[] args) + /// The instances of the found implementations of the given type. + public static IEnumerable GetInstances(Func predicate, bool useCaching = false, params object[] args) { List instances = new List(); - foreach (Type implementation in ExtensionManager.GetImplementations()) + foreach (Type implementation in ExtensionManager.GetImplementations(predicate, useCaching)) { if (!implementation.GetTypeInfo().IsAbstract) { From a5700f16683a3dfba0c63cdee93dcbf832f43a1d Mon Sep 17 00:00:00 2001 From: Dmitry Sikorsky Date: Sun, 20 Aug 2017 18:20:39 +0300 Subject: [PATCH 21/81] Changed version to 3.0.0-alpha1 --- src/ExtCore.Data.EntityFramework/Extension.cs | 2 +- src/ExtCore.Data/Extension.cs | 2 +- src/ExtCore.Events/Extension.cs | 2 +- src/ExtCore.Mvc/Extension.cs | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/ExtCore.Data.EntityFramework/Extension.cs b/src/ExtCore.Data.EntityFramework/Extension.cs index dcf8cf0..34740eb 100644 --- a/src/ExtCore.Data.EntityFramework/Extension.cs +++ b/src/ExtCore.Data.EntityFramework/Extension.cs @@ -24,7 +24,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "2.1.0"; + public override string Version => "3.0.0-alpha1"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Data/Extension.cs b/src/ExtCore.Data/Extension.cs index 250fb64..9f24bfc 100644 --- a/src/ExtCore.Data/Extension.cs +++ b/src/ExtCore.Data/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "2.1.0"; + public override string Version => "3.0.0-alpha1"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Events/Extension.cs b/src/ExtCore.Events/Extension.cs index 0acfa59..d6edfd0 100644 --- a/src/ExtCore.Events/Extension.cs +++ b/src/ExtCore.Events/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "2.1.0"; + public override string Version => "3.0.0-alpha1"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Mvc/Extension.cs b/src/ExtCore.Mvc/Extension.cs index f731b54..3e8c410 100644 --- a/src/ExtCore.Mvc/Extension.cs +++ b/src/ExtCore.Mvc/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "2.1.0"; + public override string Version => "3.0.0-alpha1"; /// /// Gets the authors of the extension (separated by commas). From 78b49b70a08bbedfe2ed743012fd1d2adde6898a Mon Sep 17 00:00:00 2001 From: Dmitry Sikorsky Date: Sun, 20 Aug 2017 18:32:35 +0300 Subject: [PATCH 22/81] Updated README --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 1277226..c5b5245 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# ExtCore 2.1.0 +# ExtCore 3.0.0-alpha1 [![Join the chat at https://gitter.im/ExtCore/ExtCore](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/ExtCore/ExtCore?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) @@ -95,7 +95,7 @@ in order to execute some code inside the ConfigureServices and Configure methods Please take a look at our samples on GitHub: -* [Full-featured ExtCore 2.1.0 framework sample web application](https://github.com/ExtCore/ExtCore-Sample); +* [Full-featured ExtCore 3.0.0-alpha1 framework sample web application](https://github.com/ExtCore/ExtCore-Sample); * [ExtCore framework 2.0.0 sample simplest web application](https://github.com/ExtCore/ExtCore-Sample-Simplest); * [ExtCore framework 2.0.0 sample MVC web application](https://github.com/ExtCore/ExtCore-Sample-Mvc); * [ExtCore framework 2.0.0 sample web application that uses a database](https://github.com/ExtCore/ExtCore-Sample-Data); @@ -106,7 +106,7 @@ Please take a look at our samples on GitHub: * [ExtCore framework 2.0.0 sample web application that uses the events](https://github.com/ExtCore/ExtCore-Sample-Events); * [ExtCore framework 2.0.0 sample API web application](https://github.com/ExtCore/ExtCore-Sample-Api). -You can also download our [ready to use full-featured sample](http://extcore.net/files/ExtCore-Sample-2.1.0.zip). +You can also download our [ready to use full-featured sample](http://extcore.net/files/ExtCore-Sample-3.0.0-alpha1.zip). It contains everything you need to run ExtCore-based web application from Visual Studio 2017, including SQLite database with the test data. From d63bfbe154325d1cd235d96fd563fd19820ed754 Mon Sep 17 00:00:00 2001 From: Dmitry Sikorsky Date: Fri, 15 Sep 2017 18:11:29 +0300 Subject: [PATCH 23/81] Fixed #80 --- .../ExtCore.Data.Abstractions.csproj | 2 +- .../ExtCore.Data.Entities.Abstractions.csproj | 2 +- .../ExtCore.Data.EntityFramework.MySql.csproj | 2 +- ...ore.Data.EntityFramework.PostgreSql.csproj | 2 +- ...Core.Data.EntityFramework.SqlServer.csproj | 2 +- ...ExtCore.Data.EntityFramework.Sqlite.csproj | 2 +- .../ExtCore.Data.EntityFramework.csproj | 2 +- src/ExtCore.Data/ExtCore.Data.csproj | 2 +- src/ExtCore.Events/ExtCore.Events.csproj | 2 +- .../ExtCore.Infrastructure.csproj | 2 +- .../ExtCore.Mvc.Infrastructure.csproj | 2 +- src/ExtCore.Mvc/ExtCore.Mvc.csproj | 2 +- .../DefaultAssemblyProvider.cs | 31 +++++++++---------- .../ExtCore.WebApplication.csproj | 2 +- 14 files changed, 27 insertions(+), 30 deletions(-) diff --git a/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj b/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj index f2ef109..9e109af 100644 --- a/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj +++ b/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data extension component. Based on the ExtCore framework. - 3.0.0-alpha1 + 3.0.0-beta1 netcoreapp2.0 ExtCore.Data.Abstractions ExtCore.Data.Abstractions diff --git a/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj b/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj index 56c179e..04744c6 100644 --- a/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj +++ b/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data extension component. Based on the ExtCore framework. - 3.0.0-alpha1 + 3.0.0-beta1 netcoreapp2.0 ExtCore.Data.Entities.Abstractions ExtCore.Data.Entities.Abstractions diff --git a/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj b/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj index 6cae597..f8c580d 100644 --- a/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj +++ b/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 3.0.0-alpha1 + 3.0.0-beta1 netcoreapp2.0 ExtCore.Data.EntityFramework.MySql ExtCore.Data.EntityFramework.MySql diff --git a/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj b/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj index 434c7bb..d213102 100644 --- a/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj +++ b/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 3.0.0-alpha1 + 3.0.0-beta1 netcoreapp2.0 ExtCore.Data.EntityFramework.PostgreSql ExtCore.Data.EntityFramework.PostgreSql diff --git a/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj b/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj index 42686e5..dab6659 100644 --- a/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj +++ b/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 3.0.0-alpha1 + 3.0.0-beta1 netcoreapp2.0 ExtCore.Data.EntityFramework.SqlServer ExtCore.Data.EntityFramework.SqlServer diff --git a/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj b/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj index 1bf15eb..435cc67 100644 --- a/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj +++ b/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 3.0.0-alpha1 + 3.0.0-beta1 netcoreapp2.0 ExtCore.Data.EntityFramework.Sqlite ExtCore.Data.EntityFramework.Sqlite diff --git a/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj b/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj index cf885e1..d4f232c 100644 --- a/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj +++ b/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 3.0.0-alpha1 + 3.0.0-beta1 netcoreapp2.0 ExtCore.Data.EntityFramework ExtCore.Data.EntityFramework diff --git a/src/ExtCore.Data/ExtCore.Data.csproj b/src/ExtCore.Data/ExtCore.Data.csproj index 85d5421..b9d16fa 100644 --- a/src/ExtCore.Data/ExtCore.Data.csproj +++ b/src/ExtCore.Data/ExtCore.Data.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data extension component. Based on the ExtCore framework. - 3.0.0-alpha1 + 3.0.0-beta1 netcoreapp2.0 ExtCore.Data ExtCore.Data diff --git a/src/ExtCore.Events/ExtCore.Events.csproj b/src/ExtCore.Events/ExtCore.Events.csproj index ef63381..4fc0052 100644 --- a/src/ExtCore.Events/ExtCore.Events.csproj +++ b/src/ExtCore.Events/ExtCore.Events.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Events extension component. Based on the ExtCore framework. - 3.0.0-alpha1 + 3.0.0-beta1 netcoreapp2.0 ExtCore.Events ExtCore.Events diff --git a/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj b/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj index 339184d..c180058 100644 --- a/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj +++ b/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky Free, open source and cross-platform framework for creating modular and extendable web applications based on ASP.NET Core. - 3.0.0-alpha1 + 3.0.0-beta1 netcoreapp2.0 ExtCore.Infrastructure ExtCore.Infrastructure diff --git a/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj b/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj index 0b6b64e..bfb5234 100644 --- a/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj +++ b/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Mvc extension component. Based on the ExtCore framework. - 3.0.0-alpha1 + 3.0.0-beta1 netcoreapp2.0 ExtCore.Mvc.Infrastructure ExtCore.Mvc.Infrastructure diff --git a/src/ExtCore.Mvc/ExtCore.Mvc.csproj b/src/ExtCore.Mvc/ExtCore.Mvc.csproj index 1de2d29..a19d13f 100644 --- a/src/ExtCore.Mvc/ExtCore.Mvc.csproj +++ b/src/ExtCore.Mvc/ExtCore.Mvc.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Mvc extension component. Based on the ExtCore framework. - 3.0.0-alpha1 + 3.0.0-beta1 netcoreapp2.0 ExtCore.Mvc ExtCore.Mvc diff --git a/src/ExtCore.WebApplication/DefaultAssemblyProvider.cs b/src/ExtCore.WebApplication/DefaultAssemblyProvider.cs index acf5fe4..24f0eb4 100644 --- a/src/ExtCore.WebApplication/DefaultAssemblyProvider.cs +++ b/src/ExtCore.WebApplication/DefaultAssemblyProvider.cs @@ -4,6 +4,7 @@ using System; using System.Collections.Generic; using System.IO; +using System.Linq; using System.Reflection; using System.Runtime.Loader; using Microsoft.Extensions.DependencyInjection; @@ -70,15 +71,13 @@ public IEnumerable GetAssemblies(string path, bool includingSubpaths) { List assemblies = new List(); - assemblies.AddRange(this.GetAssembliesFromPath(path, includingSubpaths)); - assemblies.AddRange(this.GetAssembliesFromDependencyContext()); + this.GetAssembliesFromDependencyContext(assemblies); + this.GetAssembliesFromPath(assemblies, path, includingSubpaths); return assemblies; } - private IEnumerable GetAssembliesFromPath(string path, bool includingSubpaths) + private void GetAssembliesFromPath(List assemblies, string path, bool includingSubpaths) { - List assemblies = new List(); - if (!string.IsNullOrEmpty(path) && Directory.Exists(path)) { this.logger.LogInformation("Discovering and loading assemblies from path '{0}'", path); @@ -91,7 +90,7 @@ private IEnumerable GetAssembliesFromPath(string path, bool includingS { assembly = AssemblyLoadContext.Default.LoadFromAssemblyPath(extensionPath); - if (this.IsCandidateAssembly(assembly)) + if (this.IsCandidateAssembly(assembly) && !assemblies.Any(a => string.Equals(a.FullName, assembly.FullName, StringComparison.OrdinalIgnoreCase))) { assemblies.Add(assembly); this.logger.LogInformation("Assembly '{0}' is discovered and loaded", assembly.FullName); @@ -116,15 +115,11 @@ private IEnumerable GetAssembliesFromPath(string path, bool includingS if (includingSubpaths) foreach (string subpath in Directory.GetDirectories(path)) - assemblies.AddRange(this.GetAssembliesFromPath(subpath, includingSubpaths)); - - return assemblies; + this.GetAssembliesFromPath(assemblies, subpath, includingSubpaths); } - private IEnumerable GetAssembliesFromDependencyContext() + private void GetAssembliesFromDependencyContext(List assemblies) { - List assemblies = new List(); - this.logger.LogInformation("Discovering and loading assemblies from DependencyContext"); foreach (CompilationLibrary compilationLibrary in DependencyContext.Default.CompileLibraries) @@ -135,9 +130,13 @@ private IEnumerable GetAssembliesFromDependencyContext() try { - assembly = Assembly.Load(new AssemblyName(compilationLibrary.Name)); - assemblies.Add(assembly); - this.logger.LogInformation("Assembly '{0}' is discovered and loaded", assembly.FullName); + assembly = AssemblyLoadContext.Default.LoadFromAssemblyName(new AssemblyName(compilationLibrary.Name)); + + if (!assemblies.Any(a => string.Equals(a.FullName, assembly.FullName, StringComparison.OrdinalIgnoreCase))) + { + assemblies.Add(assembly); + this.logger.LogInformation("Assembly '{0}' is discovered and loaded", assembly.FullName); + } } catch (Exception e) @@ -147,8 +146,6 @@ private IEnumerable GetAssembliesFromDependencyContext() } } } - - return assemblies; } } } \ No newline at end of file diff --git a/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj b/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj index 52387bb..6687d5f 100644 --- a/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj +++ b/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky Free, open source and cross-platform framework for creating modular and extendable web applications based on ASP.NET Core. - 3.0.0-alpha1 + 3.0.0-beta1 netcoreapp2.0 ExtCore.WebApplication ExtCore.WebApplication From f57a387410426f41d365ad17797294a110c63d52 Mon Sep 17 00:00:00 2001 From: Dmitry Sikorsky Date: Fri, 15 Sep 2017 18:22:00 +0300 Subject: [PATCH 24/81] Fixed #84 --- src/ExtCore.WebApplication/DefaultAssemblyProvider.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/ExtCore.WebApplication/DefaultAssemblyProvider.cs b/src/ExtCore.WebApplication/DefaultAssemblyProvider.cs index 24f0eb4..526b8db 100644 --- a/src/ExtCore.WebApplication/DefaultAssemblyProvider.cs +++ b/src/ExtCore.WebApplication/DefaultAssemblyProvider.cs @@ -103,6 +103,10 @@ private void GetAssembliesFromPath(List assemblies, string path, bool this.logger.LogWarning(e.ToString()); } } + + if (includingSubpaths) + foreach (string subpath in Directory.GetDirectories(path)) + this.GetAssembliesFromPath(assemblies, subpath, includingSubpaths); } else @@ -112,10 +116,6 @@ private void GetAssembliesFromPath(List assemblies, string path, bool else this.logger.LogWarning("Discovering and loading assemblies from path '{0}' skipped: path not found", path); } - - if (includingSubpaths) - foreach (string subpath in Directory.GetDirectories(path)) - this.GetAssembliesFromPath(assemblies, subpath, includingSubpaths); } private void GetAssembliesFromDependencyContext(List assemblies) From e6331abf659d506b6dbcb59d5f2ac579d182cdc0 Mon Sep 17 00:00:00 2001 From: Dmitry Sikorsky Date: Fri, 15 Sep 2017 18:38:01 +0300 Subject: [PATCH 25/81] Fixed #85 --- src/ExtCore.Data.EntityFramework/Storage.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/ExtCore.Data.EntityFramework/Storage.cs b/src/ExtCore.Data.EntityFramework/Storage.cs index ceef52e..8cbaf38 100644 --- a/src/ExtCore.Data.EntityFramework/Storage.cs +++ b/src/ExtCore.Data.EntityFramework/Storage.cs @@ -32,7 +32,9 @@ public TRepository GetRepository() where TRepository : IRepository { TRepository repository = ExtensionManager.GetInstance(); - repository.SetStorageContext(this.StorageContext); + if (repository != null) + repository.SetStorageContext(this.StorageContext); + return repository; } From 541df69a808133da721336963ed5eb765211cfca Mon Sep 17 00:00:00 2001 From: Dmitry Sikorsky Date: Mon, 18 Sep 2017 11:10:40 +0300 Subject: [PATCH 26/81] Updated README --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index c5b5245..8ae17e9 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# ExtCore 3.0.0-alpha1 +# ExtCore 3.0.0-beta1 [![Join the chat at https://gitter.im/ExtCore/ExtCore](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/ExtCore/ExtCore?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) @@ -95,7 +95,7 @@ in order to execute some code inside the ConfigureServices and Configure methods Please take a look at our samples on GitHub: -* [Full-featured ExtCore 3.0.0-alpha1 framework sample web application](https://github.com/ExtCore/ExtCore-Sample); +* [Full-featured ExtCore 3.0.0-beta1 framework sample web application](https://github.com/ExtCore/ExtCore-Sample); * [ExtCore framework 2.0.0 sample simplest web application](https://github.com/ExtCore/ExtCore-Sample-Simplest); * [ExtCore framework 2.0.0 sample MVC web application](https://github.com/ExtCore/ExtCore-Sample-Mvc); * [ExtCore framework 2.0.0 sample web application that uses a database](https://github.com/ExtCore/ExtCore-Sample-Data); @@ -106,7 +106,7 @@ Please take a look at our samples on GitHub: * [ExtCore framework 2.0.0 sample web application that uses the events](https://github.com/ExtCore/ExtCore-Sample-Events); * [ExtCore framework 2.0.0 sample API web application](https://github.com/ExtCore/ExtCore-Sample-Api). -You can also download our [ready to use full-featured sample](http://extcore.net/files/ExtCore-Sample-3.0.0-alpha1.zip). +You can also download our [ready to use full-featured sample](http://extcore.net/files/ExtCore-Sample-3.0.0-beta1.zip). It contains everything you need to run ExtCore-based web application from Visual Studio 2017, including SQLite database with the test data. From bc6668b0f3e68d20f2a868a2d822ac4c5fd1a959 Mon Sep 17 00:00:00 2001 From: Dmitry Sikorsky Date: Sun, 24 Sep 2017 22:53:28 +0300 Subject: [PATCH 27/81] Updated README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 8ae17e9..1d4544b 100644 --- a/README.md +++ b/README.md @@ -67,7 +67,7 @@ by a database, a web API, a file structure or anything else. #### ExtCore.Data.EntityFramework -Currently it supports Microsoft SQL Server, PostgreSql, and SQLite, but it is very easy to add another storage support. +Currently it supports MySQL, PostgreSql, SQLite, and SQL Server, but it is very easy to add another storage support. #### ExtCore.Mvc From c4c8cb8e02b3d601821ecf31e74137c06122e73e Mon Sep 17 00:00:00 2001 From: Dmitry Sikorsky Date: Mon, 25 Sep 2017 18:31:17 +0300 Subject: [PATCH 28/81] Changed version to 3.0.0 --- README.md | 26 +++++++++---------- .../ExtCore.Data.Abstractions.csproj | 2 +- .../ExtCore.Data.Entities.Abstractions.csproj | 2 +- .../ExtCore.Data.EntityFramework.MySql.csproj | 2 +- ...ore.Data.EntityFramework.PostgreSql.csproj | 2 +- ...Core.Data.EntityFramework.SqlServer.csproj | 2 +- ...ExtCore.Data.EntityFramework.Sqlite.csproj | 2 +- .../ExtCore.Data.EntityFramework.csproj | 2 +- src/ExtCore.Data.EntityFramework/Extension.cs | 2 +- src/ExtCore.Data/ExtCore.Data.csproj | 2 +- src/ExtCore.Data/Extension.cs | 2 +- src/ExtCore.Events/ExtCore.Events.csproj | 2 +- src/ExtCore.Events/Extension.cs | 2 +- .../ExtCore.Infrastructure.csproj | 2 +- .../ExtCore.Mvc.Infrastructure.csproj | 2 +- src/ExtCore.Mvc/ExtCore.Mvc.csproj | 2 +- src/ExtCore.Mvc/Extension.cs | 2 +- .../ExtCore.WebApplication.csproj | 2 +- 18 files changed, 30 insertions(+), 30 deletions(-) diff --git a/README.md b/README.md index 1d4544b..eaa56ba 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# ExtCore 3.0.0-beta1 +# ExtCore 3.0.0 [![Join the chat at https://gitter.im/ExtCore/ExtCore](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/ExtCore/ExtCore?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) @@ -95,18 +95,18 @@ in order to execute some code inside the ConfigureServices and Configure methods Please take a look at our samples on GitHub: -* [Full-featured ExtCore 3.0.0-beta1 framework sample web application](https://github.com/ExtCore/ExtCore-Sample); -* [ExtCore framework 2.0.0 sample simplest web application](https://github.com/ExtCore/ExtCore-Sample-Simplest); -* [ExtCore framework 2.0.0 sample MVC web application](https://github.com/ExtCore/ExtCore-Sample-Mvc); -* [ExtCore framework 2.0.0 sample web application that uses a database](https://github.com/ExtCore/ExtCore-Sample-Data); -* [ExtCore framework 2.0.0 sample web application with modular UI](https://github.com/ExtCore/ExtCore-Sample-Modular-Ui); -* [ExtCore framework 2.0.0 advanced sample web application with modular UI](https://github.com/ExtCore/ExtCore-Sample-Modular-Ui-Adv); -* [ExtCore framework 2.0.0 advanced sample accounting web application](https://github.com/ExtCore/ExtCore-Sample-Accounting); -* [ExtCore framework 2.0.0 sample web application that registers a service inside the extension](https://github.com/ExtCore/ExtCore-Sample-Service); -* [ExtCore framework 2.0.0 sample web application that uses the events](https://github.com/ExtCore/ExtCore-Sample-Events); -* [ExtCore framework 2.0.0 sample API web application](https://github.com/ExtCore/ExtCore-Sample-Api). - -You can also download our [ready to use full-featured sample](http://extcore.net/files/ExtCore-Sample-3.0.0-beta1.zip). +* [Full-featured ExtCore 3.0.0 framework sample web application](https://github.com/ExtCore/ExtCore-Sample); +* [ExtCore framework 3.0.0 sample simplest web application](https://github.com/ExtCore/ExtCore-Sample-Simplest); +* [ExtCore framework 3.0.0 sample MVC web application](https://github.com/ExtCore/ExtCore-Sample-Mvc); +* [ExtCore framework 3.0.0 sample web application that uses a database](https://github.com/ExtCore/ExtCore-Sample-Data); +* [ExtCore framework 3.0.0 sample web application with modular UI](https://github.com/ExtCore/ExtCore-Sample-Modular-Ui); +* [ExtCore framework 3.0.0 advanced sample web application with modular UI](https://github.com/ExtCore/ExtCore-Sample-Modular-Ui-Adv); +* [ExtCore framework 3.0.0 advanced sample accounting web application](https://github.com/ExtCore/ExtCore-Sample-Accounting); +* [ExtCore framework 3.0.0 sample web application that registers a service inside the extension](https://github.com/ExtCore/ExtCore-Sample-Service); +* [ExtCore framework 3.0.0 sample web application that uses the events](https://github.com/ExtCore/ExtCore-Sample-Events); +* [ExtCore framework 3.0.0 sample API web application](https://github.com/ExtCore/ExtCore-Sample-Api). + +You can also download our [ready to use full-featured sample](http://extcore.net/files/ExtCore-Sample-3.0.0.zip). It contains everything you need to run ExtCore-based web application from Visual Studio 2017, including SQLite database with the test data. diff --git a/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj b/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj index 9e109af..163c45f 100644 --- a/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj +++ b/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data extension component. Based on the ExtCore framework. - 3.0.0-beta1 + 3.0.0 netcoreapp2.0 ExtCore.Data.Abstractions ExtCore.Data.Abstractions diff --git a/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj b/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj index 04744c6..9107dde 100644 --- a/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj +++ b/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data extension component. Based on the ExtCore framework. - 3.0.0-beta1 + 3.0.0 netcoreapp2.0 ExtCore.Data.Entities.Abstractions ExtCore.Data.Entities.Abstractions diff --git a/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj b/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj index f8c580d..76679db 100644 --- a/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj +++ b/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 3.0.0-beta1 + 3.0.0 netcoreapp2.0 ExtCore.Data.EntityFramework.MySql ExtCore.Data.EntityFramework.MySql diff --git a/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj b/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj index d213102..b3646f0 100644 --- a/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj +++ b/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 3.0.0-beta1 + 3.0.0 netcoreapp2.0 ExtCore.Data.EntityFramework.PostgreSql ExtCore.Data.EntityFramework.PostgreSql diff --git a/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj b/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj index dab6659..0d9c3d2 100644 --- a/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj +++ b/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 3.0.0-beta1 + 3.0.0 netcoreapp2.0 ExtCore.Data.EntityFramework.SqlServer ExtCore.Data.EntityFramework.SqlServer diff --git a/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj b/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj index 435cc67..a1e3b79 100644 --- a/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj +++ b/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 3.0.0-beta1 + 3.0.0 netcoreapp2.0 ExtCore.Data.EntityFramework.Sqlite ExtCore.Data.EntityFramework.Sqlite diff --git a/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj b/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj index d4f232c..8c15f38 100644 --- a/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj +++ b/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 3.0.0-beta1 + 3.0.0 netcoreapp2.0 ExtCore.Data.EntityFramework ExtCore.Data.EntityFramework diff --git a/src/ExtCore.Data.EntityFramework/Extension.cs b/src/ExtCore.Data.EntityFramework/Extension.cs index 34740eb..f881617 100644 --- a/src/ExtCore.Data.EntityFramework/Extension.cs +++ b/src/ExtCore.Data.EntityFramework/Extension.cs @@ -24,7 +24,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "3.0.0-alpha1"; + public override string Version => "1.0.0"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Data/ExtCore.Data.csproj b/src/ExtCore.Data/ExtCore.Data.csproj index b9d16fa..da0952b 100644 --- a/src/ExtCore.Data/ExtCore.Data.csproj +++ b/src/ExtCore.Data/ExtCore.Data.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data extension component. Based on the ExtCore framework. - 3.0.0-beta1 + 3.0.0 netcoreapp2.0 ExtCore.Data ExtCore.Data diff --git a/src/ExtCore.Data/Extension.cs b/src/ExtCore.Data/Extension.cs index 9f24bfc..7046600 100644 --- a/src/ExtCore.Data/Extension.cs +++ b/src/ExtCore.Data/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "3.0.0-alpha1"; + public override string Version => "1.0.0"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Events/ExtCore.Events.csproj b/src/ExtCore.Events/ExtCore.Events.csproj index 4fc0052..eee8378 100644 --- a/src/ExtCore.Events/ExtCore.Events.csproj +++ b/src/ExtCore.Events/ExtCore.Events.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Events extension component. Based on the ExtCore framework. - 3.0.0-beta1 + 3.0.0 netcoreapp2.0 ExtCore.Events ExtCore.Events diff --git a/src/ExtCore.Events/Extension.cs b/src/ExtCore.Events/Extension.cs index d6edfd0..0705670 100644 --- a/src/ExtCore.Events/Extension.cs +++ b/src/ExtCore.Events/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "3.0.0-alpha1"; + public override string Version => "1.0.0"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj b/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj index c180058..20d88d2 100644 --- a/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj +++ b/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky Free, open source and cross-platform framework for creating modular and extendable web applications based on ASP.NET Core. - 3.0.0-beta1 + 3.0.0 netcoreapp2.0 ExtCore.Infrastructure ExtCore.Infrastructure diff --git a/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj b/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj index bfb5234..169db9d 100644 --- a/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj +++ b/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Mvc extension component. Based on the ExtCore framework. - 3.0.0-beta1 + 3.0.0 netcoreapp2.0 ExtCore.Mvc.Infrastructure ExtCore.Mvc.Infrastructure diff --git a/src/ExtCore.Mvc/ExtCore.Mvc.csproj b/src/ExtCore.Mvc/ExtCore.Mvc.csproj index a19d13f..bb52e63 100644 --- a/src/ExtCore.Mvc/ExtCore.Mvc.csproj +++ b/src/ExtCore.Mvc/ExtCore.Mvc.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Mvc extension component. Based on the ExtCore framework. - 3.0.0-beta1 + 3.0.0 netcoreapp2.0 ExtCore.Mvc ExtCore.Mvc diff --git a/src/ExtCore.Mvc/Extension.cs b/src/ExtCore.Mvc/Extension.cs index 3e8c410..eea4bf8 100644 --- a/src/ExtCore.Mvc/Extension.cs +++ b/src/ExtCore.Mvc/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "3.0.0-alpha1"; + public override string Version => "1.0.0"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj b/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj index 6687d5f..8371dc3 100644 --- a/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj +++ b/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky Free, open source and cross-platform framework for creating modular and extendable web applications based on ASP.NET Core. - 3.0.0-beta1 + 3.0.0 netcoreapp2.0 ExtCore.WebApplication ExtCore.WebApplication From 36278e99df44fb99d08f6094c193671b3d13ed12 Mon Sep 17 00:00:00 2001 From: Dmitry Sikorsky Date: Sun, 8 Oct 2017 15:28:45 +0300 Subject: [PATCH 29/81] Fixed #89 --- .../ExtCore.Data.Abstractions.csproj | 2 +- .../ExtCore.Data.Entities.Abstractions.csproj | 2 +- .../ExtCore.Data.EntityFramework.MySql.csproj | 2 +- .../StorageContext.cs | 12 ++++- ...ore.Data.EntityFramework.PostgreSql.csproj | 2 +- .../StorageContext.cs | 12 ++++- ...Core.Data.EntityFramework.SqlServer.csproj | 2 +- .../StorageContext.cs | 12 ++++- ...ExtCore.Data.EntityFramework.Sqlite.csproj | 2 +- .../StorageContext.cs | 17 ++++++- .../DesignTimeStorageContextFactoryBase.cs | 46 +++++++++++++++++++ .../ExtCore.Data.EntityFramework.csproj | 2 +- src/ExtCore.Data.EntityFramework/Extension.cs | 2 +- .../RepositoryBase.cs | 1 + .../StorageContextBase.cs | 6 +++ .../StorageContextOptions.cs | 5 ++ src/ExtCore.Data/ExtCore.Data.csproj | 2 +- src/ExtCore.Data/Extension.cs | 2 +- src/ExtCore.Events/ExtCore.Events.csproj | 2 +- src/ExtCore.Events/Extension.cs | 2 +- .../ExtCore.Infrastructure.csproj | 2 +- .../ExtCore.Mvc.Infrastructure.csproj | 2 +- src/ExtCore.Mvc/ExtCore.Mvc.csproj | 2 +- src/ExtCore.Mvc/Extension.cs | 2 +- .../ExtCore.WebApplication.csproj | 2 +- 25 files changed, 123 insertions(+), 22 deletions(-) create mode 100644 src/ExtCore.Data.EntityFramework/DesignTimeStorageContextFactoryBase.cs diff --git a/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj b/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj index 163c45f..91b8d11 100644 --- a/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj +++ b/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data extension component. Based on the ExtCore framework. - 3.0.0 + 3.1.0-beta1 netcoreapp2.0 ExtCore.Data.Abstractions ExtCore.Data.Abstractions diff --git a/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj b/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj index 9107dde..20164e5 100644 --- a/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj +++ b/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data extension component. Based on the ExtCore framework. - 3.0.0 + 3.1.0-beta1 netcoreapp2.0 ExtCore.Data.Entities.Abstractions ExtCore.Data.Entities.Abstractions diff --git a/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj b/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj index 76679db..adae46e 100644 --- a/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj +++ b/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 3.0.0 + 3.1.0-beta1 netcoreapp2.0 ExtCore.Data.EntityFramework.MySql ExtCore.Data.EntityFramework.MySql diff --git a/src/ExtCore.Data.EntityFramework.MySql/StorageContext.cs b/src/ExtCore.Data.EntityFramework.MySql/StorageContext.cs index b87795c..2c4212a 100644 --- a/src/ExtCore.Data.EntityFramework.MySql/StorageContext.cs +++ b/src/ExtCore.Data.EntityFramework.MySql/StorageContext.cs @@ -22,7 +22,17 @@ public StorageContext(IOptions options) : base(options) { protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { base.OnConfiguring(optionsBuilder); - optionsBuilder.UseMySQL(this.ConnectionString); + + if (string.IsNullOrEmpty(this.MigrationsAssembly)) + optionsBuilder.UseMySQL(this.ConnectionString); + + else optionsBuilder.UseMySQL( + this.ConnectionString, + options => + { + options.MigrationsAssembly(this.MigrationsAssembly); + } + ); } } } \ No newline at end of file diff --git a/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj b/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj index b3646f0..48ea8f9 100644 --- a/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj +++ b/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 3.0.0 + 3.1.0-beta1 netcoreapp2.0 ExtCore.Data.EntityFramework.PostgreSql ExtCore.Data.EntityFramework.PostgreSql diff --git a/src/ExtCore.Data.EntityFramework.PostgreSql/StorageContext.cs b/src/ExtCore.Data.EntityFramework.PostgreSql/StorageContext.cs index 0bb1e75..8153652 100644 --- a/src/ExtCore.Data.EntityFramework.PostgreSql/StorageContext.cs +++ b/src/ExtCore.Data.EntityFramework.PostgreSql/StorageContext.cs @@ -21,7 +21,17 @@ public StorageContext(IOptions options) : base(options) { protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { base.OnConfiguring(optionsBuilder); - optionsBuilder.UseNpgsql(this.ConnectionString); + + if (string.IsNullOrEmpty(this.MigrationsAssembly)) + optionsBuilder.UseNpgsql(this.ConnectionString); + + else optionsBuilder.UseNpgsql( + this.ConnectionString, + options => + { + options.MigrationsAssembly(this.MigrationsAssembly); + } + ); } } } \ No newline at end of file diff --git a/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj b/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj index 0d9c3d2..2f2298b 100644 --- a/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj +++ b/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 3.0.0 + 3.1.0-beta1 netcoreapp2.0 ExtCore.Data.EntityFramework.SqlServer ExtCore.Data.EntityFramework.SqlServer diff --git a/src/ExtCore.Data.EntityFramework.SqlServer/StorageContext.cs b/src/ExtCore.Data.EntityFramework.SqlServer/StorageContext.cs index 2f69c59..83b3632 100644 --- a/src/ExtCore.Data.EntityFramework.SqlServer/StorageContext.cs +++ b/src/ExtCore.Data.EntityFramework.SqlServer/StorageContext.cs @@ -21,7 +21,17 @@ public StorageContext(IOptions options) : base(options) { protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { base.OnConfiguring(optionsBuilder); - optionsBuilder.UseSqlServer(this.ConnectionString); + + if (string.IsNullOrEmpty(this.MigrationsAssembly)) + optionsBuilder.UseSqlServer(this.ConnectionString); + + else optionsBuilder.UseSqlServer( + this.ConnectionString, + options => + { + options.MigrationsAssembly(this.MigrationsAssembly); + } + ); } } } \ No newline at end of file diff --git a/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj b/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj index a1e3b79..20776e3 100644 --- a/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj +++ b/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 3.0.0 + 3.1.0-beta1 netcoreapp2.0 ExtCore.Data.EntityFramework.Sqlite ExtCore.Data.EntityFramework.Sqlite diff --git a/src/ExtCore.Data.EntityFramework.Sqlite/StorageContext.cs b/src/ExtCore.Data.EntityFramework.Sqlite/StorageContext.cs index 10c560b..758b29a 100644 --- a/src/ExtCore.Data.EntityFramework.Sqlite/StorageContext.cs +++ b/src/ExtCore.Data.EntityFramework.Sqlite/StorageContext.cs @@ -16,12 +16,25 @@ public class StorageContext : StorageContextBase /// Initializes a new instance of the StorageContext class. /// /// The connection string that is used to connect to the SQLite database. - public StorageContext(IOptions options) : base(options) { } + public StorageContext(IOptions options) + : base(options) + { + } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { base.OnConfiguring(optionsBuilder); - optionsBuilder.UseSqlite(this.ConnectionString); + + if (string.IsNullOrEmpty(this.MigrationsAssembly)) + optionsBuilder.UseSqlite(this.ConnectionString); + + else optionsBuilder.UseSqlite( + this.ConnectionString, + options => + { + options.MigrationsAssembly(this.MigrationsAssembly); + } + ); } } } \ No newline at end of file diff --git a/src/ExtCore.Data.EntityFramework/DesignTimeStorageContextFactoryBase.cs b/src/ExtCore.Data.EntityFramework/DesignTimeStorageContextFactoryBase.cs new file mode 100644 index 0000000..f954a9b --- /dev/null +++ b/src/ExtCore.Data.EntityFramework/DesignTimeStorageContextFactoryBase.cs @@ -0,0 +1,46 @@ +// Copyright © 2017 David Noreña, Dmitry Sikorsky. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using ExtCore.Data.Abstractions; +using Microsoft.EntityFrameworkCore.Design; +using Microsoft.Extensions.DependencyInjection; + +namespace ExtCore.Data.EntityFramework +{ + /// + /// Implements the interface and represents the factory for providing + /// the registered inside the DI storage context service to the Entity Framework Core tools (such as Migrations). + /// Inherit from this class and call the Initialize method in your web application after the class + /// is configured in order the Entity Framework Core tools (such as Migrations) to work. + /// + /// The storage context type this factory creates. + public abstract class DesignTimeStorageContextFactoryBase : IDesignTimeDbContextFactory where T : StorageContextBase + { + /// + /// The storage context service from the DI. + /// + public static T StorageContext { get; set; } + + /// + /// Gets the storage context service set by the Initialize method. + /// + /// + /// Storage context service set by the Initialize method. + public T CreateDbContext(string[] args) + { + return DesignTimeStorageContextFactoryBase.StorageContext; + } + + /// + /// Gets the storage context service from the DI and then sets it to the StorageContext property. + /// Call this method inside the Startup.ConfigureServices one after the class + /// is configured. + /// + /// The service provider to get the storage context service. + public static void Initialize(IServiceProvider serviceProvider) + { + DesignTimeStorageContextFactoryBase.StorageContext = serviceProvider.GetService() as T; + } + } +} \ No newline at end of file diff --git a/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj b/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj index 8c15f38..1a3eb96 100644 --- a/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj +++ b/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 3.0.0 + 3.1.0-beta1 netcoreapp2.0 ExtCore.Data.EntityFramework ExtCore.Data.EntityFramework diff --git a/src/ExtCore.Data.EntityFramework/Extension.cs b/src/ExtCore.Data.EntityFramework/Extension.cs index f881617..ef79d82 100644 --- a/src/ExtCore.Data.EntityFramework/Extension.cs +++ b/src/ExtCore.Data.EntityFramework/Extension.cs @@ -24,7 +24,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "1.0.0"; + public override string Version => "3.1.0-beta1"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Data.EntityFramework/RepositoryBase.cs b/src/ExtCore.Data.EntityFramework/RepositoryBase.cs index 07a795f..0280ff8 100644 --- a/src/ExtCore.Data.EntityFramework/RepositoryBase.cs +++ b/src/ExtCore.Data.EntityFramework/RepositoryBase.cs @@ -10,6 +10,7 @@ namespace ExtCore.Data.EntityFramework /// /// Implements the IRepository interface and represents default repository behavior. /// + /// The entity type this repository operates. public abstract class RepositoryBase : IRepository where TEntity : class, IEntity { protected StorageContextBase storageContext; diff --git a/src/ExtCore.Data.EntityFramework/StorageContextBase.cs b/src/ExtCore.Data.EntityFramework/StorageContextBase.cs index c4679ac..edc47c4 100644 --- a/src/ExtCore.Data.EntityFramework/StorageContextBase.cs +++ b/src/ExtCore.Data.EntityFramework/StorageContextBase.cs @@ -18,6 +18,11 @@ public abstract class StorageContextBase : DbContext, IStorageContext /// public string ConnectionString { get; private set; } + /// + /// The assembly name where migrations are maintained for this context. + /// + public string MigrationsAssembly { get; private set; } + /// /// Initializes a new instance of the StorageContext class. /// @@ -25,6 +30,7 @@ public abstract class StorageContextBase : DbContext, IStorageContext public StorageContextBase(IOptions options) { this.ConnectionString = options.Value.ConnectionString; + this.MigrationsAssembly = options.Value.MigrationsAssembly; } protected override void OnModelCreating(ModelBuilder modelBuilder) diff --git a/src/ExtCore.Data.EntityFramework/StorageContextOptions.cs b/src/ExtCore.Data.EntityFramework/StorageContextOptions.cs index c4476bd..3d82d98 100644 --- a/src/ExtCore.Data.EntityFramework/StorageContextOptions.cs +++ b/src/ExtCore.Data.EntityFramework/StorageContextOptions.cs @@ -12,5 +12,10 @@ public class StorageContextOptions /// The connection string that is used to connect to the physical storage. /// public string ConnectionString { get; set; } + + /// + /// The assembly name where migrations are maintained for this context. + /// + public string MigrationsAssembly { get; set; } } } \ No newline at end of file diff --git a/src/ExtCore.Data/ExtCore.Data.csproj b/src/ExtCore.Data/ExtCore.Data.csproj index da0952b..770a4c2 100644 --- a/src/ExtCore.Data/ExtCore.Data.csproj +++ b/src/ExtCore.Data/ExtCore.Data.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data extension component. Based on the ExtCore framework. - 3.0.0 + 3.1.0-beta1 netcoreapp2.0 ExtCore.Data ExtCore.Data diff --git a/src/ExtCore.Data/Extension.cs b/src/ExtCore.Data/Extension.cs index 7046600..ed805ea 100644 --- a/src/ExtCore.Data/Extension.cs +++ b/src/ExtCore.Data/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "1.0.0"; + public override string Version => "3.1.0-beta1"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Events/ExtCore.Events.csproj b/src/ExtCore.Events/ExtCore.Events.csproj index eee8378..5cc92c2 100644 --- a/src/ExtCore.Events/ExtCore.Events.csproj +++ b/src/ExtCore.Events/ExtCore.Events.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Events extension component. Based on the ExtCore framework. - 3.0.0 + 3.1.0-beta1 netcoreapp2.0 ExtCore.Events ExtCore.Events diff --git a/src/ExtCore.Events/Extension.cs b/src/ExtCore.Events/Extension.cs index 0705670..431d892 100644 --- a/src/ExtCore.Events/Extension.cs +++ b/src/ExtCore.Events/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "1.0.0"; + public override string Version => "3.1.0-beta1"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj b/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj index 20d88d2..3aa9d33 100644 --- a/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj +++ b/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky Free, open source and cross-platform framework for creating modular and extendable web applications based on ASP.NET Core. - 3.0.0 + 3.1.0-beta1 netcoreapp2.0 ExtCore.Infrastructure ExtCore.Infrastructure diff --git a/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj b/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj index 169db9d..95b9b3b 100644 --- a/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj +++ b/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Mvc extension component. Based on the ExtCore framework. - 3.0.0 + 3.1.0-beta1 netcoreapp2.0 ExtCore.Mvc.Infrastructure ExtCore.Mvc.Infrastructure diff --git a/src/ExtCore.Mvc/ExtCore.Mvc.csproj b/src/ExtCore.Mvc/ExtCore.Mvc.csproj index bb52e63..04e1f4b 100644 --- a/src/ExtCore.Mvc/ExtCore.Mvc.csproj +++ b/src/ExtCore.Mvc/ExtCore.Mvc.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Mvc extension component. Based on the ExtCore framework. - 3.0.0 + 3.1.0-beta1 netcoreapp2.0 ExtCore.Mvc ExtCore.Mvc diff --git a/src/ExtCore.Mvc/Extension.cs b/src/ExtCore.Mvc/Extension.cs index eea4bf8..1e94cdd 100644 --- a/src/ExtCore.Mvc/Extension.cs +++ b/src/ExtCore.Mvc/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "1.0.0"; + public override string Version => "3.1.0-beta1"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj b/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj index 8371dc3..adbfd4e 100644 --- a/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj +++ b/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky Free, open source and cross-platform framework for creating modular and extendable web applications based on ASP.NET Core. - 3.0.0 + 3.1.0-beta1 netcoreapp2.0 ExtCore.WebApplication ExtCore.WebApplication From e4c5e967e4e058157dc0194fbd1483e264b016c7 Mon Sep 17 00:00:00 2001 From: Dmitry Sikorsky Date: Fri, 10 Nov 2017 00:42:31 +0200 Subject: [PATCH 30/81] Fixed #96 --- README.md | 1 + extcore.png | Bin 0 -> 81372 bytes .../ExtCore.Data.Abstractions.csproj | 2 +- .../ExtCore.Data.Entities.Abstractions.csproj | 2 +- .../ExtCore.Data.EntityFramework.MySql.csproj | 2 +- ...tCore.Data.EntityFramework.PostgreSql.csproj | 2 +- ...xtCore.Data.EntityFramework.SqlServer.csproj | 2 +- .../ExtCore.Data.EntityFramework.Sqlite.csproj | 2 +- .../ExtCore.Data.EntityFramework.csproj | 2 +- src/ExtCore.Data.EntityFramework/Extension.cs | 2 +- .../RepositoryBase.cs | 6 +++--- src/ExtCore.Data/ExtCore.Data.csproj | 2 +- src/ExtCore.Data/Extension.cs | 2 +- src/ExtCore.Events/ExtCore.Events.csproj | 2 +- src/ExtCore.Events/Extension.cs | 2 +- .../ExtCore.Infrastructure.csproj | 2 +- .../ExtCore.Mvc.Infrastructure.csproj | 2 +- src/ExtCore.Mvc/ExtCore.Mvc.csproj | 2 +- src/ExtCore.Mvc/Extension.cs | 2 +- .../ExtCore.WebApplication.csproj | 2 +- 20 files changed, 21 insertions(+), 20 deletions(-) create mode 100644 extcore.png diff --git a/README.md b/README.md index eaa56ba..7384908 100644 --- a/README.md +++ b/README.md @@ -99,6 +99,7 @@ Please take a look at our samples on GitHub: * [ExtCore framework 3.0.0 sample simplest web application](https://github.com/ExtCore/ExtCore-Sample-Simplest); * [ExtCore framework 3.0.0 sample MVC web application](https://github.com/ExtCore/ExtCore-Sample-Mvc); * [ExtCore framework 3.0.0 sample web application that uses a database](https://github.com/ExtCore/ExtCore-Sample-Data); +* [ExtCore framework 3.1.0-beta2 sample web application that uses Identity](https://github.com/ExtCore/ExtCore-Sample-Identity); * [ExtCore framework 3.0.0 sample web application with modular UI](https://github.com/ExtCore/ExtCore-Sample-Modular-Ui); * [ExtCore framework 3.0.0 advanced sample web application with modular UI](https://github.com/ExtCore/ExtCore-Sample-Modular-Ui-Adv); * [ExtCore framework 3.0.0 advanced sample accounting web application](https://github.com/ExtCore/ExtCore-Sample-Accounting); diff --git a/extcore.png b/extcore.png new file mode 100644 index 0000000000000000000000000000000000000000..acb7db2d8b53f583f6ab590c394c64075f347190 GIT binary patch literal 81372 zcmeFZ2UL{Tx<0;vh>4&iM?D9svV zMqn&}fXFCOM2amV2!bdII!aL-Q4sh&`x_;>=j7b$UHAUWZ!KNxoP2)n@7;U9`z_B~ z_Uv9|v1ItL(ZdKK!5;Cu2 zqm^xd?TY2bu0CE`E^a>S+_gfyd@-636SELs7uU`10Tb4_du;TcJE^0nWYUCFk4H1rmK#g;RFLCEuGm$hPtyfC+M0&n>%SkK!C5YwsvrEuvW01mXDu@ zwvLgJkv22Pg9Of6qH`Q9H!NS6fGmrTupwxw#I0;~VJb$t=yyRomUu-OJrOz#re~ z{OxyO>53JDpZ@K1US5CurGLPpAnf2hNB;Ipf2&YmcWp~|f1f}UuHg)pt}%=C7b4P;|3qU2l*r8`z~uuKgPA(4nY#K` zI=UcXJexIxr8h|BKaBlnIzDb2*N1)-l|M)Rg@&7}@p>OWFP8w*jb1Ju?%KZI9wyp< zzWmEbMtY5xdHV;rc)PkUTWE?GS{paI8M_+lty@3a)n%rO0ZVV@to5^4GhJrS)|olm zeI0Ao`q{HxT=jJrcC1+O*U$fj^gEwwdnKCU1?C`iUEH+|jNI_~Rcu5;02 z&D7CxH<)R(-Ua`sqvyt&t;aGlTxa-UqQ4OPmx)&TZGMg8 zqs4{`XDynoqx0RO1&fUqE?hL*(BM1W1*`=h$o~zAf0<_KMt{g$=wDd(1R9k(16iz7`tHX;z~`OsVfz7cQ+I5|M2$DWetA$ z{uzbE4Fvpyi$#m{}d2PETPb$5;aU-ec> z@jrg@&!kPXsY~$O`2WBG_`3xC57}?@UrFEpjQzTL#0x^8gs_HcJI z)&3x`A71?5bYcd2Fn$JxIx}5$-SuZ0ux7c;G}L#~!;{{u*>1B8bzSw`KkV+8AE)rFc)?I3Tr z_tWd5P%I2cw@@mbi>Xdg*ZN4Acq~#h5%(K=OZi_s`>PDf;vbWYDF7E(?FOb?E=U|Mai_{Li1-{pX+l z^`HOw(?7qo_TCs^s{4Mne|r6wuV~ySWyTuhI^0e5XV2D~ZKD0pumAarRU1RxJ#80m zM9kq&@w1MRE_TLz_0RwGx1ZYm`%nM!PwzjKs@7jJ6U>oH-y-jUl#BLY&gCzsJ&4)= z_aFY;)Bis0L5iOy8Dz!BJbYr;$8c$I%qMmYvf^VNKC$a#xHLHC6T1dk@i7md*!3}7 z8XWV9U4yLnn1@g7`WP+^j`_r{K~{Xs!zXrq43`GSd}7xiD?aAo6T3c!OM_!Rv1^bO zAM@~uT_3}x!7-oMHOPvOdHBSxkKxkbm{05)WW~okd}7zfaA|PNCw2|8;$t2@vFl^F zG&trHy9QbDF%O^E^)Xx;9P^1?gRJiOZb`7%PV;(-S>tnbyIOY?(23hej51-ieFzT39d^mR}d05g%Iv`Lf#JGzfTDXWDz3f5MrD}h>A~~^X0{ayz^ML zaK2SY-SfV;@#}+KTEj2I*DcI+s2gVYkMF+wTw~%FKWctaZn-hb`fS75Ew_I=HC+CT z_DH>fs|%Ok+a2!O9$ld4@4BvKapl6wdr3cyiPo^$?)8h;FT?e{#<tzk3to;`Z|sB7+wGj}!VZ!+MI^8E@8=@U_vm&0P| zAK^Szu8j0i{t{7?KC!-(=SZKp+gLuLlO9+`uQi4 zpLj_=2@&~w?fKpN3#eeJ-gT47mt>0`#hE8OC~3~Isp-iX?pxi@>v4AHG06HE5Hw!6gVFKUXFRcm z8qpVN+a#7_z7%bS@CA#WR9VjLw(J<`OQp@Qc3oTSC7aYp-tSqW;kp>xT1rhv%8Yai zx!N!bJG`mh;|ycN^_R>G%v2=y;#Pi<8-2Z>8WBU4q4iivZCI?83PV+anMy0hCfuFW zDyy(#uh9ia-{xg!HBOKd<`othYrquw=27D#ylb1;=+`n#`1-DO>OL4SLwm}$CeM4T z9Vg2PV?w+FYb1W*pqVJKftIT2KWx38_2(2Y3#!i=40V3mKBu-NS(g0DBG@=(Pfy_RPdL$lcddM{JG3q zcY?D@d$xB|i6ZfDixY2E11DQ`845w}fw782;eqd%1vqwL3A4ZJL6z87Nzs_Y|=Ij?g zIxvIm@d*xGj`i4jQ+l>e`Rp37^_zSv1A4j@6?E?v8|j+4^Nsge;U==pcr76|J^omdul5IrQ@Bv2Y)|f_L1|{F?h9{O*DDUNA4NZxRS;?wZ5ryA#`Qb27d6f+GpL zn8BqN#5!su;ns^y`Be(Z}sC`;F?eTQzb~`&> zvLdGWy_zOGUC$o3A0u~Or@Ji;a;0Kv6>L>=6*HHvr;ByD-;usghO77fM7Z1NK?{8w z))apyPtqP+i`u{wp)b{EPSR_t8p19^n>M=Co#hPGR~x80o5XGxx!_K^`JI& zrN4}?w|b5ZW$XhgXhPq6Y{#i`q_v4L6@+8ROr>bXo(s8YeXx|SgRmG2rn+;o$O%-H zR9a(y!m3yd1K&8=HB6KvDou^zVRWr8m~EZPvWiVFkQKhIvrhdL`%+G)d{wR=!{6*q zI3r;SZKxc1GIHb)ULVq}O*|9gy&^_qm@Ol&whp`a+jWUx_Xz85%G*7RcnXj;UYc0Jr5SbjmU+i^$K!pU=<%-79!4b^hcZKJ|mdcZstFB(>M`Bpg8oG!i z=Ow&7SVYX&lj_uPwj?qnZd;3z@peSty1)bU4AYraq^k#)j1Z>OIbv1}jUW0w{wd0v zpN&Nry=KIQaQdlJ;aqrQ^)=b^&@FAI3=!Vj5A{7@?=56bHaXAut z_drw`gwv>C{!l`K?u--7h6o6~PkK{h9F#_P7If!=_=FD%rH(;%^jY^vYQ$)AJ+@-(A_JxhxCGw@!Ro#RcdK^`ODc{TmwufQHzsofX8X2kGy z*tzJhRLRbEsom#xLMRKakCz~7!c3SC9ARL;mn=`#|D2v%&Injh4b0NEOzrr zt7&j9+~GxhS1OKosPhxvIage0Ay3|@y>|fi%(*A~FitCE{)#&0p2n*6)+xvINd50QJ2W^XJ+#s=hOW82GVr7Ek~UiMSVt~^{+ENR%lmL6y1CX zpl1bR)v8WOHK)3|qWWDgSmpU}g+4&V12}Lv`|7)!dG?fBRSdTj@^g%F$SL{FB5zFC zbcs&bbZM@Gqb7aJNDJVU2W5|qyjCW}DU`x&^5<#X7FF%DsyH>_Nw6?a3f5q#k*;(FH3#((PR8}|ii&v`= zPQ_UMYijRWtLb#D?Kj1fn71cKPS`%etZ$dPgQn+H zJ)4e?V=PNhrK@NWJ$`e>8kvWmtb?jOPujzWP!Vn-Dy#jY(bIt8pBd9UZX11a2 zDHYG>Cmlsw=prsNi`Y?oDtaYEsq4XS;y_ASfuY=0Z$AzP-%`C>-*h;bV4_52+N7jZ z1f0TYAIodRY2il+>DzZFD|o%`gj*o-4LpUhos2o?JQHJGMBfIkmcUkgczfIX1Xb6T z#`hkdqJw2Y*OJ;C!AVBNxfkCSh^d*iwV~>taMN0ps!N2N2FB-;imTYY@U)$DmYo}e z1HlE7uou$Eb@$&KSgc4`A<%8?S$LX?xnTKgt1@u)_=}LVC>bJfyT`n2&(XqZC0yAr za-_UlPGwPZk2$XtbKMF(8&&`wYckNk;^77g?ns4ul!Us*_ivjRNF=;fm=U&vzLld4 zTaa%#cPlKKW=5hlOfcctd2fYRy4q-kcz|dYkKrfNw@>J7igy`PE>tVyH(&`YH@e-O z&o7F(*q|EQ$_JK!JCX91WyQAY#yOajmA;kJAw<5C@?h1timzgc@OmA4E^H}T!0`Jg zcpdC3L?+mVf;-`tl;5fk=eB>L219nruVt&tqG6bZng!vFdybCNLxrZsg zSQ=6gTYc-)CddO(+)Y_KG4vSq2Th(1mUAc2*{B`ke3R|j{Kf-H`(hpw2q^wQ#~wC( z(60>0C3Oa@QR)Cwtk0zOHYEd&fU@9ohT(+`RI|7Wf?HQMPMTqfgJ4*rS=h^~z$mR7 zv+3b~czaq-v>ks-espS6I%T;oW%-`x8`N*flH}HTG{*e!QhZQ60)$t*Zeb9ftrcai z^3CrhZx9j)*Gr)UcM-$0uNs_+zsGL&+;eF727BAXh}e<4YsP^owdnVZ6vYPVAgP1 z!l-Bcb0!EQwxgK07r&=QS2!Z%K<}4WXq&t;fKEfI$Qt{d^Ju47nG*Pn4sB^zB>DZYGw{MQxSveE5k%TP$IhqfG+<+xxdBMMnw|adRw8tj6IGxS`bAane#xP_3@q zT`Z#OO7dXHiZ=6;p`k66<3s=ngyTddCuvC$FCI(q-*7zaT_p^23k4(G(14YJz;ql7 zM|-3P@Rm`(Q2#AdL4+xD>aNV$2C>hkhB(PU8eUfxY!}Ia6w8O6d}TbJSA^-5f0q*- zr*BtE-;QiwEyEphnt=zT>-W;xAbwdI-YdWti0DvlW~f|xnha6CTW;bZhlQNe8A3Sf z_nc{5AUKrGYX_+0hEik4$r#6YAA`1Te8Hir(Qse@XfuY!CW4W#ZDPS(#XsJ= zfqLe6EJ6fSZdj{!)rE|Q(0b0HqFdi~TC75+YkweKM;F0_sCo4a(h~|D_pzNI`*L)< zo*83!G%V8GjWCh!Vh*#0>hSCIc-o`zX0y+C;Q5?;)_v!32yvl-H25T*4BD-KaD>Vr zcS_(%Mri7(PZtJ-oUPNwnvZE^Q61&BG5q3>K~MedDn_XUt_87_90fM z8{kvns2wKt1fAz&@?KbASZx3^_|jfR!>>P^Cjsanod1CCE834yo_n70 z>)io*9OyY2+V}Ez;cvAzOPK7CH2sy5wWLlJie77)Xr)BG&0S{2`q?Mj;k!6XOl~kC zf;J6zg?9~~Hhx7oWzREd3Qu^q^GhYbFF$k1XsjaW4=<4fvvyk2wVh95+yV)@_kG|) zYIU4`r3a$o?;J?ovj2mFj2uW)Voq13nV^{owL>tN#!7BAEnky2nq-%Jy+m%7_ z%GVZo{er!&VzkSb$rKTVr&6cD2+x@AA7k-Z(^ed>%e}F(L~suhu0g-TfQDoh&e@75YfJ|xvvDT zYhXN~*|w&TBP72VXMpV2hA|zV!3^(aR$FnDLF1Y`q*&U9PYaQvP1eE1F+cq%CXx<(sWhbTO``(|WJx-&+4k@Mh zKoth&1vO-Ec1tbWPO5>d<-t}tj99!V6i=m7Q7LDcg!3n3s?JF<`7bs?o#ZKtSSCu= zX4ETdKa`$8Da{Y6CLjm^znU~ntY{=B6i^QBe7ukW>eZJPg$903giXxLW+?(N916oh z4~xlol@{cLJHTAsTOv!&U4%7z(O^yS98zFCVtu+KYUKrQw0P=>AGiv>=c(-%KBU5_ zd0`2^4-55`(aNN@Uz!3_u15}<8t0MH+>oG_%FUj(W8ucIisflyYE|}Bm3~LKmjl-X z9>w20kJQuj7_oJrr+)ctk?};VAldVHSOt(4QJ`2#kn~>P?3)-^MwH{}vA-C5LY-pV znE_|(z#ZX33O_Z|%3iV{@mYa~!d5}@E}yag!KG(c)SIDSabz4LC87)0x2fbt4fON* zbM|AUWA3s0Uff=3)|Y;qqdv|!;K`H$GyLuBDsK8-&2e%p!AS3%n5&&CsFjU{Zv4pW`vD$})DOJ#iL zH?Dy<5~L~$g+ay#kG9I_mqzpX{LP}^W7w}kgzK!)4R9MnghS@sxbnH8z>5w<)^LS9 zcZGk1esbiIgUbL%rXF0Lar?SeM?A_V@BCn8xov=@dCxqmVD|MzUvJ*LIp^esZ-?Np zo+wR=FK-q-wj`bh6RpR`%hXnnHzxLNDm*}q+5n~4vgZ5z#dMip*pxNDaJCt+8OB`^ z?18$CFbJr}zKuZ_dB0z{ow4%1W2DnCNXx|xk280Dtiz810F2LmjlIvt-bLz}C}(gg z?iF0P&~G4$+6y)*bjBXNc|t50MeJL|V&s|aVS_x6FA&YuC7zl4p9X}T4YLGEE#XM7 z2;Je_EXgwpCG4Sap2tUuv`_)MCjp0Mi1NXqCX;uUH_R$LS~!0gQVlP~kaA|^{$ySa zDhXaOD>80p@G?;jN!k7)z__ni+<<*2H;WLKg&|-8~>HC{{O&?0Gfb<{5b8tGv}vJ$4|wrv_w; z>}l@F9(w4R$7CF8zY4$7{6bFDN>{2Gu?fd@C_4T;somP))0`?K$tVeV=1rzX@_ACd z4Vyi1IBYHU?(}>9lA|}TTL&+b5x9=9?${?&i##+(&(RvGGVZus%W=t7>sNk{b5}^R zUTHmkpDd@WuSmQ}javoNt$(|DYc{FevH8xOJ6hTO--BRUS$fRkqrH6g_cDU!*DXqZ z+!gCj$mmxvez-EaY-)VD2X8m_Zc_2I-0fwVD92oeWuTr7U|p+8XGSUpbrkl96yrc~ zo>+_q+{fD-gt8vGEcG{iV+a_-7s!} zzpKPtmn4Hl4ks9=&~mFC6Z%Rv0+XCbOQ~8vKGWtHNiy%q1P-FO%J*=LHLO&Uy+KZP zw&|Kk_Ao^Eud8lu2ms_AMf{)L66d?2P${E&?#mjRe3Z+&W3I11gX{#cU3>ek=j*59 z?UtmnINt^W;qW;KUO=wvQSCR}MV&wA=H{}koa1E)XL{ew5EE0&V!FuuqMj3qOog)b zS&SHnMfu9)`0_^zB3nB5Y10GCFW3|>7{=Z4qD5?~#_fXNs4inNz6y^YXIP{bp6PMK zb`q|6K;?`0#g;^KUu+&c1lJ$_y1Hz;NCq^k9iKgW7G>ABiW2R76=LFqT%s)J0jjAh zVIpp#(`?*Ptw`>X>N871*I5$-g`nYGAN zBepY4Ojnsk3v3k-pltpH3f7!M8=uH*= zZRmsIHJFbV&TJnTB37gA+(~j2JPPmDcF4J>du~n- zjGDQQm}s{o(88sB#}gO{x7qt45fh`K6)ODuak89Fbv{xi6oEGFU^GE6YD9KUPDysp zWSq0|tqzNf+s;`dmdda~W{7BwGY$FRkcrX?=PbrtB=Tp|q1W`9U%Z(k(uQKs^7d{P zMUv~l7bfX)q6Mht?Qg)pZWHT)k(&E5)}OgMv@1o4bN74+0=LeHd#bY6TbJgpl;C3FU;xfG zIsxW272sUXWHDKDTMKqpR+gh>-x92`r7r!K#Yam;B8Y9)ToDqdX>^J8ZK6Odv6!(H z{8M1K|IcN~%#;F!&_QlS_h?CI1-f+ZdTR+I5_Y6__*fB$d3Ukip zCP?*hKddV>>Rk%sHn~YY1Mq ziv@}lmkZ7_wfrVchk%|}unpQvk))h#s+U~VxTbBtEcZ<3MdaZG=jlkMBE&rt&`L1| z`#K$&b-`eC^c4{dnr}jOR)3asWJ>ml_Wd$k{{o*Bi;N}wX~${kw$f@mefMgN=&`QQ zPnVSX8LtNP#~ZOoB(jst#8&by*TBzsi8dc2O=H_~8mGx=PLpG4rXz9b2G>fxO!~?7 zkVel;>O8-bI87&pE2kl?NsHb)ANQt30g`G7j{{y9SUD#^Ys~xlAruCp`E(?s4BMux z!%#mahop5w?&!@Y=A!9z^50|O9PiusVA~1-_K0Bx4%oJdwA?(kcFySN_8ik0;ABDw z^_+sbDMLtdlN{ncPAFI&YQg~gE{Y1>ZCemZp=(e2p1X=D1KX-|RbfnR{ zh(OfgJdaRxaX#!jh{Xy$e%eV>O%QxuQ>XgFwkaH}(f3yO90Jq|{v@*R|4Qja1Ok7p zal|T;J)Qf7pC{~`|M|`i3GF};EQ*2Jue4c%y=YzC0P{Fs;ysi8pbO_XI8e7mnx znp$kxeSRZk-2QoPfAO{ldZg5sDRgkX1mU^|OdKMC7Lc;|9lEf}bng)1>kwy)6z+UF zZmvxm&fm+g0+u2w`@%Hv(dg}+4YR@)(ZccTf>|9YyXZicqdl#T*FUF3lym`eqI;E{|epYt&)_e-I zIfpLH9UVQwrewkp=O3fIUJdCqZT)8wi&7y{Kpb`mS95vo7sv)L77 z59-K!nqTOvC&>xFbSTDgAL=ouQ@_0i+-0V8O-41Q_-*M_+i!4$icF7-P-vomV7V!c zAdzu?1tZx!cK;W`PLrgO-@3R!divWkQSKCyafZ+aFVT3MpW^Qw2OYXG`%e}v60h=ec* zq3{ykO5iTdbJGATmhh1RR26hv4RzzbT~Btt4LTW(MnBF~@3oGOeJ&E9SMCrA#n>wX z`J;&9y(!3E3CF@(ybH4qEP|lyZa#DOIju4cnUxAB!83)&Gk@qzyREu_7P>Yb4>KuS zEF&;+f-b!NS-cs#pwL1M{!Q_(IKbTvqB3{xTX)PIup}@V6b~$cHn&n>A^gF1JUl1A zaUy88v;$&ufU;fspYvm&3I8a3^6KgBl2wuOaenh7!t|4ii|SyX&7T~ly*WvG@|+|y zC7Yp;-DM5APzAO~39{RA?>0P-mE#d*3lJ!J598u>{aXoh8FV=?NtP&wDz$s_^CT%mRj2*+bcOzWh zAiNf)9H3!2y9AirN|JyAvhW=XOpMS@Ll&n0vOD}{jkPnv;v_xi6vUk0mO07_SDv&Q zKgWMa3s*+9rL=+OXN4<6H_RFxdCC}cSktzeAmaQj48c$58bEAKxyqq(tmo(ZM94)6 zuQPr#%M|vWHO86oA6{3R>ApOwwChAf7J#0&w<}WawF85qfj^$axR1}3q^>fu@mDuTEd+pSf zu<1&V)JBt(*lz1ycWzs2%h!4LnSz9`leZ((AwwJv4%t69i(Y(mfhhSH9IjueBw1JZ z8e4x|cttw~4H(Rky8+bPIN4(**$OuP@NQEe@L4g~7>PE!u7}~|+$siUuca`XJM-l< z2;^b$COYUHfJ+U2KT zbr}(7n5$$FXs&o&02BO7RB;^7U3<}dB$$i&=Z>HTgCvX7fRu8qX|}3X<34oEtaAJo zIpKOFnEBF?5^1-KenU3s*h&D?xGP>#Yr2#oZO_7BbPI5^AVgWg=c&cuR(00_EseLn z4`!a5cV9JnaSb~kmdhS}zUpe6XVBZtj?QoZfRNN=?A`=u@0$ki`ASa&v&Nk%sqh** zbhzh4>^&8!SDMp|{nyDcUZlXq#i+#xwm^&T}Rm$`r=9UN3HhnDjSL zyzLu9vsE?xDA)qeJw+(((;lGGJGD%iC9i4`JjsQOp7Rh7qn=lu`r$sgNF~(jBlx^Z zXkUKRM@UCCccd*-HQZZha>=B{X6^W3$;FOuEYH5(V6CqTvwCm|Ew^ zdGfVz^0f{*S+sjB=#Lj*yW4E!BSK`F@wh{b+<~yVe}pp%N1j^PH(cm4G?oTE*pk4kaLnnhEL9GL3EB?`@vqRSWvVS8(I>x#lt8SdpR6m=`{q97RwSMp(6ueUn>Km;4K zvKptzrHq$jr4()Md-yq$GjE_=KVli9euH+zi|8Tlc$Fu%))f|D<^sD+i%g9lZ|9js0sfEE-n#T^L1Jw&}?TOYGVpddiJU>H)ib6F~Ge8q2OB zOXN%Q+|VsbwDswWkn?Nj0_G`R3KW&>m8nM0V|BH=NE;(d3zX6jD z-h>tu)n9_yiPwk+q|Ku>Bqj-MBL#rnz*OB}JLjDUafxH#87$PAM{~PPI&* zuCS?X4syM7MXi*DlBd{D|3XW2+A-oiN1gS{5Jdf`l10o;Yc8{0hX&K1I2MNC_J)1rG6c<0!dK^uZ9 zm4IoLUM{(ZAUAx4q(WElTv4cbhG{J$+AcM2x}nE<5Ml{j(`XDzliS4UQaE2uS5Qd@ z9`zb4GaQw026?xNi@@)^-WI5XJ4N0?J44&zCGrUeWRlzi9Vzk_8X3~s5suT7{}efy z0Lgs#0RPTA`aw8yc}~L3?*ny#yh&>db)x%4H8?e|t|f30O9PjJk7J+nOts`Hu8~UJ zur(BU3qwN!paG1<$h%jEqwW%qgYRoa(n`ghqo&5S)9>X0TawnNM`+2%nnLedzw`r0 z;PPHW7gI7~t%}?^cU3V`$$BVYke2YzL4#LnZT7htqr zsfWRdW>F`aS2s@B7TJ%=K$zUE%W;WJu61uwvLXeR#8B;o`nO3qocjEo#5vM zU%UpkmaF)kRGvO}s&Eks&m)=Ahz+$Cw|~jF{Z!@Uugav>!6y@)?G=|WE+RD@*t^y( zk!C!dBVn9sXGK95wq_PmJUTLqg6|y{^~f2;_RMV5d~0Qu5JYR+Ad|pVczqOMrhzC2 zqU5>Fz$W&pP?tsY0;K&Cc~=_|GWkg6;1GxOB0(AMoC~+e*%NUBCC>#OWc?HMjmU44 z+HZpq0!J0~T*t`JUO3P?b_3ndj_i|LSIF4y z&B75xXcO+?G^Sjr##K8Vf8h$v@}OBp+$i?J68&H2Vi9bb-xliEvH>x6RvKPe)nHk? z80;A{4*C9c-fx)KZVZK$CmI0^1kvhz+;>{wPS*bv#4f`T>p?7yN6G2XAB%$3#aUKi{`h-^Qi-U&Q0c*xpRI} z6e?CRO&i>Cr^8Lu$7j==-uYwGP%s?Y6#@1el{mH~ZachXd)1AxUd=<=5so~*15_Es zqgku-hkO9M*;c`n`w{e9cexu~a6^XBqbBxz(B$e>L@*mcl4J=+wq0c+^i+(H}q zosfxDC(mxNDN)Ho_ihsprJf2N%38#%xq<=S-$HMU1Q|U7MKnDo9X?kawjatcHk8_m z?9muF@Q~)Wzo+gK7aIBiyjf`9+sRo;Zy0f^9U@=_3~Zdiq5jJr5H%kw6~rl(2WW}qVNfvqlP;M5*;&d*UA$BV;2AF2;a&j!TmftBPl}Cz>h0Oy=i?)OCoz~QM zhOI-!^Xyt08LsK59$Kx64&6QNOw$J^rZ@<$vy4`VIlCiKATBN}w1b$%j62ylLv9a* zXHwAx6o?5&CWT@z>N;(|yA3>fKuph2p(&9!#*MQViv1|3fu6SV?~LoTaz-k4$}427 z{7zHP$&rDrm@2oY5=(@wpzM(irQXteb{qztHpX6#gcU*1WZ&*Uf?E@|bkCC`^vZ(p zhr2Xk70$bk6wp830&n-WQO7C#;q6c1s>=Iik`}#MMZ2MevW5O1;I`m1n%?qE{D51Iqbv=;Sn8jW&;{9WP{L)8Q3Ql zZ=z6}BfMY=Gm+zs?2Rp_m#=h{8MxHRp0>KMNEr@njcEBWBEP`|-qX1l!2sv;l2W!o zg>VumeuM5ma7O-N9Q2@u=C-*qJ$*o&GiYj?D`T74Z{U$F_!5@v=kU6a0d2JCjzs|a zDv<}r&YCcQAiczzB5lq*Z{V$Mi(JV1uN)ju5hE-XEerRFJdi$^M`Lu;8&{U0`ES9? z!^lw4#!uyoN4K7kC31ni(ChnbWJb9%Z+fBETLSaJL;@sOtf(m~$Lc~Gyb27iJT6zj zFCbUN9b&*w^K6bs=kNkajJOq7Jk_`df~Q5Kf?hBM+Wq1jOuVh{E^vEJp$%3jL`k^O zmh7C}a#z}YY2I`dq8~7OFUSRi0Yt8rBtvq{oA#p7mbQ?#h}vm;h%nC37g|umj`{`} zv?mG(>+V}4tRo4(mz_SPQx>sBHwV4faQ?QFy5U^KGeog;?sptW(HhA)?ByS!UJ_-s zBzXUpn-?KOpm}%hf#vEv)5#$DDDwk^i5OSI{T+ZO6Z);CJ;rgC+iC2nd1gkgh!|%**1lqu>vaacC~d-U^q?O?>qmVous| z8+1*2BQ9lsBqH>!{?vO4i4t*EZIr+Ks-~BfC|1Uw1E1Kl(uXOjqDh!0pHCTGk0${?x?231|u%!OjG6F{bE{V z8(t)`2a&et_8d4H1M3=?f8T1S#w)9D2-<$}^~{&{z8d8DLYa#%PamvUwcjdvLThg{Nd+|dWd^$z09tN-| z&2nqg3Z8l7`MN1`=;5ifDP-U_cV=)0PCMNiaGTrJNn1&_i(xp3efv&vq8n!h*7j$x51e5G0_1{(h_)pR{q{m{iS6Xj61SH_fD=TX?S)-clZI(@9mnu7PJD?*6S$z#<-4G;cNn z(30d`dvGb?$;`WJX(md)dGiyh6#h?7(|#Lv6wr@I1;$gGoe0ay3P$*uQgCUA4)H%M zh1?wPaq7{FqgJJ&_ad`z19G`%dJLf8m05t?*MvKCiT^~DiD_3u4ecrE(5Eac=rkv-51Hmz?vCyr zoOcEvo{F{fK0>yft8>sfxwGk|*iqM43zKI_yZKdr87Zy)$a~mC@_JCuA=_W%iPx&p zA4I6W^8FZ(%J7?pxVioA9rVFnRCAoD?$d@9+C`IANCu&+#J$N=jcYW<=c;o8x`u8Z zg{kmIe-(GW;cT>5S<*@|_hLawp}l zs>foji`<%yt8zo9OD{60o(xB_W8i!bR7|0*m!|b-rI@Ime8$hehMphNwNA^6cII+~ zB_olLVX8lxXBn$O%VS_x{>zJVouJ?<{>(iJVN=7o!otF}=qo{v4s9i`#NzdIU&>!qaf%sA#2qtMbGJ``;wXv^EY^6ZPF}UP`Osull*DK{X}Lrr&|W6RjUT>{!+rIn zDITQd6fF`X|DKO_!>t*p5_88%+CCs}B#9P?=C}#T`Frng9jTnMq|g%0m;%@JqBWvj zkg=vI=Z_Yy-HGOWC+}&I!)cdjww=9wy>nmgC^F~aN`SCPn&8G=yw`bXcQ>zmlYicu z?}T_C6^9SVn`57vhNcOJK4bt%%JC&>TYH`wl+)Ir3fzNSj@?vW+(w<~T52!6B-CDP z7NPV+42O=7?0K5e#x=hd_2%&_=>^=Bqv22;{IClEc&)OTYHZoc{1?Nf(VHMSS&frQ z(ITXsz8&qwSZ;RE%Bk_Ycq`3i1T&eG9&MeVy|%B>dmTA%=VMpmWV)n2M8*&+i=`ku zJ@dkhA;N?nWUdNveV!iD?c<^%H(U>BdhF*Vp_g*b%_~Fg8Ns^efu{f+0TLOk_1wIY zm#=QGbe>k~r$e-3-&cTyJBs|gyxP7NrDF+G&=aOU9=RA=gul@)6LgZT!1Vg%#b^wF6{)MKB-iOzTYsep*FiaFp1*H3*)NM;q4h}d z71bfffTrkDI@((ezpfEt^#18P@Q3!F+Mz(QNXwV#P&b5|LSaJ_j+E?iUBz^nkT(`*U;N+$h%_w6&e3tMW2F5s zuENVi^a^0@I)-70Qn_8a(7}>5#fTh8UadWqg_>(D zPg6Bx2W`GOy@u%J`xeGFu(!KoAXU892-nID06LrU@* z2O^%_I2`q>3oaRyc4uzFFD#I}t8A!3gNT0&eNj2ij*bn^eTO0Jo_jO+19m&n?xb`- zmVf;kAwp%^&97};LKz%#9}G5QkHqY?vIBjG7wo#@rfP~)ezRS_p9hi9zuk)HzJ!m4 zOu_UK$n%ZM?pL9s-J%+=%t*17g-o(CX$}H`Mq7( zIQcXD#8EHWtqMrhjE)3?APNbafGlLE=fmyohbov z>>d0N)yInlP)8uuHxsdnN3#x0aVJg|x5Z|FT|%QbP|E&RvCedoC$fhhF=O|6fW?O9 zx5XuUT|(8ki8c3aQ20Q!_KNas0}9B(yt>)w17-IqLEL>4`lEJ@7}xWgB7T+U{Jpf3 zS0H?y|F{6x0VfLSi8&XJG}i&K89fg3H?88ReJ%x{TOXBqVFHd$dmSx%tcjdQE%aUh z24WQ~o}OMnAA?~dSJiJ~i9_&zEwiKo7jyGuW0ugecRb&kamUvsy&@$#a&3tL zDnWGv>BYS<@#nRkoAswPs40C_zUcRPol9g-d^tsa`08~F7Y*Niy&hE&Hr-5d}CSJA5^|HT2%M-`k>%z-Q8tr@{(%_2kuV4-r9W8 zwLj`qepf?iRBP`t{e7~BGUjI6@V(L>EywD2-pN{4{p&Wf^`s?sc3cXapm5dNn;T|r zJ@ClglDyhcvts%3l(a_^=}?Qkj}-V$50p?DNKKB{r1vMEq&Sbd+_-Gi=3(c{c z<05GEe7LJrqozVA#>jZR=CKoTtIm&I>=b1c*M^ZZuIGq0jssrcYEr&MS1?tc zbLUZ-25r7zjrv)mb;{k9!?+jLeEajd0SyI;T1RKN`;~1I>5?=0X3H&UY}VxHoKq9L z^kv9&(sS#MXj9bmWN-O7eZ53EC^ug}xk`J= zMmq9FOvR(ghg_l+g(oY%UbYp#vmg`}9usXUo?6~RhnD>k8*8Rr9tD|U39_$0x^3^0 zg|X%{%I%;nipPdx!^O+`t%q^9bzXb%;)Q>_2@-Ka;q9qvI@YiX<#DUZWo9Y*l}z4S(he zKQtNU9c3<$F>)bHM%Q=R>(NU z?1?*xnEX(OW5b47PQO0d0>pl7CQl@G&gz+?PPqL+?6{6=!T{vIVqR#dz^L4)xpJ_o zW%x3u$yj6fnxi)jXP5toxg)(?;tCa)?~+M+S~#`50ULjnrC^_RCpoS%UY2vn%TPz> z#SsnKuY1VH@xUWXwIp;(+_u&*3K!u{THoWw#Yc4#9u;8z9f>i~(T)cnIYE|sEcD8e z9G$8tto(i4G8(5H>PT@Mb@>O4DbvZ$OB?v2x;f=vz)-zPy{%VJCOnHhWp+J0&;^o@ z?t~ThAJbR~yL!T;cx~35xO-scy!*CkkKELfrpvMPay8589q*p+&WJWSraa2Rac-!^FLH%FDbaaU1u%qYTj3b2U79UI}d$8GqzQE@vce^PudM~9t7 z4JD{xLOH!}J-7KvSn&nNxT@o%$tBGp%Vzvn27YqnRa|d;gtdI#WwN~JFvRxktS^l6mi_6n&ixSVD4Z2vNSB)CN(o>?}% zWg1M!cXdNb`Q(&Cz^!N3OfJWjWKx;=IC^n&yM{J0Cb=PPzyJPwx8B=@+Nj|y-uo!Y zI_HMIJg2Vhjs~`Yp5E%2Kd*DH=^-aeCqtLUNVOux$gF&Y?hS9#QAb8r|Lp%GzP+UV zOw#jCV`aQ7cY26ZmW_SfBMWf7FgxLqq1uzr=8_s<9TyH;{^Z;q z=tcW7b-)ZgR#Zg9yCKVf%gMYl$K>*i6W^7oa-SZviG$#gCntKxL|@syEC^XOyO7JZ zwY6`TsZ$klUAqkKHFZ7t?RJ7jfgQj}j8XnKKljD&Lk?B>T9(b`>l(D?b;z}Psb8{U zz(JWLZ^Jp&U&)duKRW;MOfr!8sN9m=ke_447xl)!Lm7#iXRl^Ze{+gFr|`ixjYJsO z8#Y-s{6Lqu;^X8{^lS6etYs6iNc%{m^6k1ehGX30CCh9mFZJ25l~EQiZKsnBN2~ZE zvCT3qI=5H*@|Sbfo+!()8g%zQiU2$7j?}?rBs>yfZW*6Vvqn3w)I}O@p8eP{OWbcQ z0?ns|8YMKlb4TmjpC48&Q^%C!1Q#J5=J62=uu8k42vO9H*%+C*)Ng$X5FBevH#QU& z*Sb_@-q1E(ef`(*8Z=gAxkfMF+N)A{jV#Y^*#9Vl3SF(yGUcme-md7gYqRn-jBqKE ztJdo@_4>e$cBe{n;aEfMcn?{We&!lL6EigK;u1??(?-#z+^?x>RQ|qw*#%8G|BIy3 z0Y(JZV#sgDZ*I!fTJaJYh9^gg_Z%^t7~_v>V7B&DyXn$_1+&WKF!l1gkE_;q-H)q8 zkw~lVEc|LB<5z!so~Pk)Rp@|XDSPyR2zsmfS>EZJ8#I@_)I~qIToD%1F(s2`;HIRn zycM^t0Qpg^h9o!q3?g|JuyysQUXAIf-i-}$gWn8{qcv}Vh04?dluY7ek_v)??hQeK zT0aw2Gf9Q&n3%5Ge4p{;JlUAcH zZ+)?CDiPMDB$PMEwID=y>MYfu35<8U$A~38W*VVDwXe8d@EAwq93arb^m7K~HSUL0 zAjCtI++QAegR$vhXYQV#RGxf{9NP69)_eD|gO+%`t@&Yv_bXiXD}MO%^2Tv+tH;b? zrup$Fp+j@sj;_smouZL}B!6eP!4xBB`LG?B|K@VPJZybgoIC7CnuazsL;V$R_wL`ys|3WPt-j7KSX_bK#ghp|C7e?&ImIvL!lZxbtrVEDD8P0>S-k@Np*}0 zEuvD|k1;aCD4wH*R{K(kN{N>94$4vLSdxlDM&N$1>^_Ls`!ZqCHBL#fhk4Z?`>$!zG*Z3?=inbGidFyAa+O?7$#d@Z-7PTfz zH)!A=2O3~iE%JY+9vzB3CPlj>!MsrW(+~FSV5=Dg3-za`HsCx;ps!2bM;7*HexZB(o@js zR%`?$$Vz{%x_aE&=r0o~<)w|c*RAQ=%;86_*A^cq17B5Ot@FhnA-&Ve17Izzc8#f0 zytyZsgrj>sp*d2XAC;n-PB3q0*xDIE@(nUu*6eq!^@J3@l3?C@b0+z&g^nKe=xv?- zLzrG=eo4dIPfLUWNNvOfeDS+>!$iCU2dNmaiq#QY>x0J5&$!^5DC#4MT|Bh0+pbe#Yh&5S_6tAcq7FC~F3jL;RF`gz3Rq2|< z;SaAg6(;_M(tMg&RCl%vGRe7{hRfF|{0rx(l&V8-zh_|%O{}xSIv5p1BC7Pt!h@zl zXQ)C!E}TEFOer8IN>TcdcD-j&Nk$%|x864V4<+Ic+LwDevRffRROAQf*9ImQ=`0@A z&CJB4I7`P~hu{n{=?boR4D}`1Hc+m8^r18G)8oCgQU*)dtj!&9H6&C$oo&av+0WzNAFU0=6>F? zXC{;&wxI06wh>)%C6XZDH^uz=>#It+O%=qhr47RxwEIzeKib_vSK=(Y7Ie;9bv2w_ zixPwR|L2isCvG|-ja2CZGCkbnM!XJ*dheyiw{tX`pe*AhA8|y1OfR&1mts2+i&$Kw ztmi^0n%4@{TxmlcaRn0VXKdicrg;O^wNM|7)cicD3z+lp^Zm>vY?A3a;twS<`nc=! zig#bzIQo%Jft2@OiDJ_=6-VnRyUHBRQZzHlwz7v4oFgm)mFccK+)jp>je|7xTdS$A zFeTMvIu(x2Pg+l@7bGV$ZnZkP!jRrgnb)bo9jJZh0_Q3FZ; zv&Imhh8Lebe>O9V^<*c(qDNZGqn49>;OopN;S!sgeIVWaA6N6mXD!I5JyQV>Qes(W z9h{@2^qnGapY+)ZtA9~lQ*3b`&oP-$7bAaeg}w0NmIB|(p5!cyUd!RY>slG?#n!;0 zcWlU6cyKcN4)#9RlZaixnr|^Kos}x6DAOE1=YFExBTuz-#dV*h*#uVIhSQaoTyo+v zr2m0f8iv9n7mKoCFt$|*(TbVkSrL!?F!9K#+(&6}7#f9kxFNMiw+J8m@FmIum0ub) zOA!_Gr;c1f*s@4$vWVhmsF}hge?_0iy{p};Egadv;UI0l(wR2&hf8iz@~masvMQko zC>N;(DSsV4Ji0;*qBG_3*iIIqqU?-sZOD+jiNgWWZe{p(%>(Fe;ZR!E6i~5D9E}xK>E|{0 zIob!q1-6*9gptLlD5G@|$K$zrBL2bj@wR0=ib4nEi1J`vDQu%i=o8~kPA{PAQZd^tg zQ67|$Z`-Mb362jTk*Q~=vyZ*`sTioAvQ@T2oe~_sQH1lJFXmvzYLjA@oY5`pIH4=; zPZOpuP`p(|)n3`IX-KX{d@}CaO<@_b=3Unt9qjBzeiCD^1S$*JxrN<7#v|9dIn&baRjb&qQV}|2e|_Oh+R)`&ia)y|Q>;qG!;jfK zaEtikf<@Phu|>w>b68NL>B)_GW=q9qG2^-`%ftp)JA~JF%kjBrfb_%{7sE463eZ-R z9%1`Gi>jL7s5?*b7T8i(Zfc2x;Ez9fWd&WlTken79v_1C(6N(|;;L)cHO2dNd7z3a z-E?6K$!`;5LSMd>KrSR zztvH-qkdzl7zN{^H85Bk<%-hPgqh3Cz8zcyp)?ZNwLX&AT1T zJ%i{bPzJgpbkyd|xjA2Kid|R(Bh^wVQpfLS-Ov^j&iEQ5uDHb;bUWTdziR^y!C*P_ zj#Z>dQ*=dsOOI&?8jQ^4?)a_t4j7DMv^&HwroHb{gCB`hMOPwtu&ROv>{0g;$6z?b zyk)Se{<~OH$ZkcUze&%wD!V@%|dkb&e{u^pvcQ5|;F5N;#_D#ID zv8RJ3rB#aC=ZpWN!heq9l^vB1!RQ{$+X=-%6K7oMcPC7KXVNW-cfr9n7}e)HP(pV? zT~h@Z7w6uTPm!Z4j2irArN89PxR5yGO2?vv=~{|*hZU61b)2-zTmm#I9=`Yp!y1s^ z+nR*{?^hP7D;{sAhDwUUIkZMv7mmvi*;!bSqJIe>E2Pc0J+*}M`%<|YatvD4<;FgBjzIf zQx*O&em>^2Mk&axUB-E*7S=fyKoEIz<(5ciA;!J&XVBB<97??PKAxthk?(xn40TmT zC!&BNzG`NJ-=`1EQmDh>d(W8)4aHh??)UXwEFRLOEXK>i4btwv6_z=mHo+(gx^W%* zm|Ux?k|={()E@Zuo}eocFAe{lh?r##LAj{-y7=kSr|TRH`a!{>^14=Lt3n~z`p31& zouc~7qF|cu(e>Dv_$M{kPeci3i>U1L%Z1S^IjL~YYU_Y;0ZWK%He9uKu{A;#j0DCN z>CaBb^~)R>#YGb|L4@9AOyBwgWs!d)&oe(L$=e^h*%j!O=i;ha3S6~|sS&2rinS>D z@C|ZfZGG^!j{>f3oTU*#=;~Tueq42xC#*J7pvqq#vr7<(7OMzOnlAlN^$lg(dC<3T z=oOuaZQ1bp1MX%Jn~vmL|1k~5Aw{7X^+i2v9fL39B=yt~z?(bDY@mnC3#=d+E-auc ziC%*J!((4ZhFG#*NDP_2JOF?2_!+oI@2#HXH@>~8X$beI>)S)Priw*4^XBvaMDqwk zKSh=wlY-6yZMzB@)|ESige>noJaRGBgF=ac8^+?@P#@_=2E-$${MW+Kj^Y~Pq*B+l zF$e)9o*e$R%8%?{0FOdm5tlriDTa~WaNsZt@?rx?>}rZ*0Y-npPcGJJzd@P#lmnM1?qXo_QIy<2zCnm#&cb}ut_Qa z$0txXx|4}KWS~H#ZX0cguH{`P2+Vbvz+6=7Ik{O4*UajgNQHVHm43|e+>7E!%g$%% z(l8YuNOd{~e{G{rLt8&umj7VeyG&_~6J_BFmz<-L9ik+XxNWUQ)FRm)jyPbCR{hC08&)X>Z1EM^+ohp0J2bPw_U#3AruAp?eW5(84O?gt-3x-l@9y zX^+%1T8dQY?cGoyZp;{ZI`NY;o%37_Y=Y5oL-NCCdMI8=62akjmHBB}@u}=`O$cp+ z9OjZ}Mu7k*6fVQvEOt*7qa&{>Dt&sd>#F%HP(5M0aC1G_PuQepxl>;6C^N-<&%5jh zSW%*iITK)3@s-69*$=ioOYuf-N}wM#G&ndI!KlHbX+C8w8(N=l0WjfY)DFjBu$Uw> zJ7=uA`V#}4k$wLkpM2p&s_2di6T4I~6j$lSTe(l}>(Agu*3gc)$X!Q>Pu@lopFB0m zkDcx#=*8m0pQlLC+m2tgan;&QN94QY0MsdvnW?2f6$abP&7nMS>b*Bth!NiKS6{|` zhid?sOEC3Ij^DN6Mmf&qE4@s&B`Ms%O?qySNpLQHa}{7pVC3-fB^p6HfOFaE!o1kE z%z9=0OX_rJ?m1sQ^3-JYnX5i@(22M`U96R(on09%-VSqFv`M9U-rwmE^=Av&^wRDh zsSPDj05|urozUE&O}5q0AL#@m=iAIiM6W=)z;@K>2%jPAW+!f9S~cNSOC|K0xZ&z$7`cvJ0Zq={kh2Qbd)ik_h#$+Joo zPh`Gw*Aj@FB@j6k5-@&h;mkX*tXK588o;?~QR`V-ZmVbbjUpA-E%PlbwPlCo10Mmx zDPihx1TJr9F%>$BwJ^f9}_2!TOks=9$90_EM*l0^IU@T(^9w* zLd=-ha(>~#>FhGlsQ<`FJ)^1E4-~XNvqty~UG*%xAG+jxx z2<*17_K@}A$J0svh%QAW!Fl$OZabzBiGCK5EgOjbPZQhU+s~_zt&% zmkpqNApy!2Ur6a`_r8vM%@Wr$|8#BX#h;(n$q zg(?nlC3<-%d_^xG0 ze{i}Sp^zQJHGmvb!?jQ#xct0d{-;1JvW9k;{Q2+U&-0xpbh*#+mf7*Cu1N$Z4-^Jq zy*%&Cjd?CY@q!F0Tiqm8IzuHp4qinZJaZ5t`uDCz^g@e0v2;s660#^YT<7GGp+HDy&n5rt8@%T9;N?!OPSZoaXoC2zudA$KD`HDu9ES@E#^r* zUGp2qwJX+6wCK}f=T3Lb6#(;zANyQLJo9X;3`j-=$v#u@&&qJD%`4XZAZXpaHr;KS zBD&n|dzniwQK7niCMda;9O@F#VuE$uXL?!S#(J6FCzW{0a5@jSgAdBDEEmO0{q*wJ&US9aC|_8w&9Te=X9_yz4lkrE;4xQJ_V{`|u)2 z7geZBuyR)V4G!tZxI@7&9OY>2=G4yH$EQ+7ZS^qL(^&$QTet_nGgr3>M&)!-lZ>J&MLZ@r{sq}*9gPUM z#FXl%d~6b~AT*7hvtxlZN7)Q(Hw)*Mx^PfHnNCmkCW%fbr?^=SsxL+1g{p8}kx0OOXdS_XdtRdQ_nwZTzEqv^kXa_HD@5)dB8^?Je)6tvkrSVGKcJnm7v z>jH5pglJ+7v}!(E_6z1T{BQyZq;auydO5`pJV;mPMox@JugdtA`^=6M1;OqW`N*xZ zf5DI7aXSzTHfk8c6g+wP8*Olpx`o!L>8jvmT=6A-xw)-u8SYWX;}GbN9)gt%mMc3V z%O*hcORo4w^dy@N6sgFhti}-3JxxiJLML?QXI|oLUiAxrs+X<O3f->D4HMu9?XzKT|bEx5x9)e#<0^8 zp&TcVB{;cqCzN!{nI``)skINMei=DbZL2Ig<$Q0avM~xge(W10_!bjZj6f z*F4Mt_J>!Sj705y)`T2mX0c_S%T2CX|0HGKhU+T-+JMHA@2h(qg8`mdUWB(Eo9gXF zmV?|#kfUs(1|s1_yXIo=IDG!@r49ge1Sdn*!&aSYY;{)A^o~X`#Sj{;)A7NN_zFcc0Lu&|5%J#3gH*Et7v94$~Y5*b^oZLn1DNXDt z72~rH*CK^RtcrhMHMf0IF3Qz62BIDbvif2< z8;t-IWCu|*vN2P1DW$RywhX17f{NvGq^kfN!oA^O&levCDJ6H3FnzJ&m8Dp^M>4nc7mi@>WB440gk`veg1uMbkUt{+ z_&(&tz3iIvyX*!H9xomr{Y|nFv^3zNlr1)3BIQpVXt;1_Z=T5y$ zv=ZzsMAms^zPJWPQh8xMg7h{AC#)trdLCoT;cH2Zjo(wPj%gQM`-l8F{=Y1U8~d?U;m3g`Bk zE=W}K#SzQ^pbJePJz@Yj zN14m)gzTW_X;RRc-k`nYqfcuz>(i<1@y8GYNA?|D6VaNdH;K-GH{NB-r7wypJ1BzG zKWp?NKC4ipK8RDBmk^8`_#g4c<7{LxAdA)6Gj%9|{Z^63n|`0}yh}-32}a&V%dM&9 z>jrq^TWPnYSkFQ>I<`TZu#fg0zp-2#hy@)EIdtl2^(S>a=@Rh^vcNIyx-(SQoK6A{ zi|mG|?^6#GZ(I<&6Ua&13UL_u`Lmt)d1H3*(Fxg|4Qx6*Y%qoR`n~qSX!l^6XDz!$ ze}Ssz-JZ37)zvt5l?_m(d>>het3U-E#0x>zIDlPpYlNJ2(oICQoh)7t(h4os08uUX zEJ3+=NX7Ast8|C%>r#>Rdytu5D)z^r|0D(h@uN2J#{19gXEafl3BRo97BZqs6fNpY zFCddJPrN`ras&`xhA7MUUT>>(ej83wJ$QkzhF`i~K3{2;A^kXCRYq6u=bA3)rM z?5#yaF0wt8L>4y}Gr@T7(6k+?`I$7)9HLvtkiqk09Kbu=8f`At@uomQQYv~>%FNaU zv8V+`%!}Iu`#`z0tKi`OOP8RNYp08*A;Zbez?{aWN5CqhI>2c0^GNkZJVk9dG?AI9 zxd`mabqG{76(tTFe)jXFOu;6Oz%XPLfY3%c&;<+RcERjj%gFwtSaz6@JVM$R12KKN=79!K^g2Rm4uE*evAPtl05 z;0WqQGXtSK9195DyY_ElPTRPKXsMhqRN7W(VL(1n?u-i(Hoy@ZGZ5Ec%Iqng21qP= zeYn3&-~hoe%PgWo_bMoN#b<#}p=i|C3EZE7eUHtI^&6Bc<> z+tR#XOszCX-kECd8v6ezxkSGmsd*|Cu1QyN6uU`7(ZU`1IQxPud}NW^#f1kaG6_i& zvI8rQitDWuZlD8l=%Z=EzhDIX&7rXC?FbW;>JsFEs00>_(|6z$ap8%fpdyhy@+fa7ypG2REqd&QKjQT8KR!znChl6L{r=g!FZ|<1+CD9 zA|Z*rI~{?Cs0y9N+MYc9?{O2r^^}p%X7(20pQR@4V*?f|O6;*qX;bYBGBL3DV{*;R z{1oX-`POS|CEe3!iqVt&Nyk2=8;Q_QE^*aL z`atUlCuDCawwCQs5ja3GXB6496LqQ3fymy9Q?c6?+<`}ov4^08mqBpNg#pk_4Avz~ zuyH!7klmhH-cWESjV=YGjclt`lFe&3rWlvHUEf-^9dp9YWfa)5aY+i<{!>eDl)gH| zY$Q`onZ97bf;Q`5H0t#DSVbG-KB0Yn*Y7s$0w1dD(tWQA*$r1sh%nJPY1o3vYydsc zqVbsSQ2%Xqh6U=a_d4v^%5tG4c29b@ZnUY1ae;Rwn(@qiX-d9*0ctTlN-SAZZ_0>h z{FW-lY(5m^hVgg9G3pL7bULF_f17S|_Tg6c7%2MFv+hZci>N@j1kF8ZOQU1Huopp+EW&wlnw(8r;vcBrm=IuA>C`jyin`uAZzg2zk$$U(_Vc&f5 z2WBd6bzQl!cqT?dV4L5B#O71|zgMm9?}zLL;Hryy&N9O?bF4>fBiKQ&Q7yYkmz|H_r^0)VR-VQ=lxy!Kn*2XH}>nw zPaWlKG^yxO>+r{p_1Vg{ErOT*fLZ;I*}D}bMAtWq`iL(zE}kVT#QSg(N4&R}ZmKX9 z&w{2tcQTPln2lBAzoGzM}iKh}{ept_Nf?_R>H}&vVjV2F{p!JFMuE(RR zVov@W7)#E2t)z-n=^A`$>li>Rg;Y4$ytFp;EPJGtvO7obKT7r*dq>YAG0m|Gucawo zLT^-NM0#ov$ti?i=FUak(r+0BiEF|=X~|xNbBL8{Z^vmi!H2CVtPgS7 z6cNKl!KYCEF5E>cX%hQR6YdnWZ8%u*zhiBexpV|LT`}AH6P`TX%p{O`7tT$STI0u_ z>?IONc;q~f0~*I66kdbu(ScoaCTStKTu3v-$K8ib-OE^1&chNJWD@-ul0xHQ_04TtvU zh1topR0J?JitDbfWzpD=w?==k<91MMiZln8M(Nme+p`b3tTV{^3lDJJy#8^!qn7~+ zp!WGBR=USFjcbyiTVyd9an@FEe9gZ20?ChbL8}o`K+6c+FN1XfwfU~VX)fDs_i)8%`4^~lXg7~7hHQkdBO(axV7vT6{KRLyv8L{I=OCe)-AkB z&u?1VmMUlCAMO#BK`+|lhII$9(tVgY>C@8fCVTj-5SOM)yE?_@tR)G|dCq1T-j*tY z27JU)HQ@NJrrVp&*09gyQ(iv_xzQ9mAePFoXQL5&?8cPp9|yk|%+t?&@>2Uy$5k89 z$jVMRYpG^Q(Nt0?FD`M*h@b(D?Weig$lNODQ1Q)Sj&5V^=QRkjEyxUWDcuz7M*J=1 zjUU;$T8i(h|1uHX>dBP4;WNt}qeEU9c-cC^ie_`y!-9bM0Z3Y@+(S50_%$qUb2Asu z(}k{RSM)P)GZu%FB{5zqs;Z+F?36R`$d5Ajbg4?zKgV{;kB-Wf70uGHdUrM(7^oZlOjL}8RRg5^B4dUdsaIsh_V@^1B75`F=}$C*;~A%o*WB|DvnN;zmU8pPGyH0bbdv4}R`mvXv&haO7xHYF=v#7o+IH zZMd4g33w5a)2%J-^dvy5b8^SMKDEUz6fc5?3BCQ{tkat#H0<=Yef2<)Im&9-0kugQ z$3Y|vEcmi6#jALk*aJh08kWF_{va*c-sI^3UwpGH9d8^1+ z`=j1#*#$rt?@zTZC{^Ok#c9n=aL`3+Ik0&2NsUg-e+cYNZ96m>uHR(VWbJoUb3i$< zu>=a;*O$bE0q2`)D6JhX=W@3bqomzVd>MP<%Y@$D!Gs-C;Gmr%rzH|D0ERYuS9aeI zvJM7X3BSC%tE=lK8vu2u+F!b7BduhD6DtnqHlgXT(K`vv{)O~7NE#lzzV42LiQFNA@ah#@fI66+)u13z&2o@!1zsP#_S=1< zniXJAg^Dk`FLB>wUqGVl?WGmC2mjuxJ3(SPhdcDgS0Fky%vuJ5b=SGo2N(3|bXRNP z=Y8^=E{6Wf)+6ncQm!X{0w5Y$))$L34E;d541HAW=pH+y2aYhV_OWy~nB}A1AwZZ5 z;KF$e{tKqne+#WND;1RR9m@pZLAT4j^d*Fe=15g&x;ZR8qqhBu`3Tumx9Kyi}mO>*=>75n!YxY~ye^XuZy#X&ej=&=|wO0cPjHSF7S7t6EfD$A)1TxjUtBzblFmweC8;?n^5N1!8g1UXd zRVCgET!R%;9Z3Yx|3^m2rsBb)%nrc4FQ#qsyy!fpDIP%9U_l3W==#^O%18lxhYiz! zl3BXFA;H$^0*Lzb_OGTH7OX$DTsV>;&%{W^5d$DiXxjB>z5A|)Iso5b|1&bL*TF-G zeb5t2P49$sp*$UPa=b?6_R2qSh-=9s{685Siq8pU)mWdNh%H9NTO9PC~yGQ=_;wqdnPlB9L0O&mHG=Do2Xt z{QLp^xS@M*!)#@WWLX~$ zKX~wZrSW^9`kn?4`;xEBdJNj3)v6%HxOP|f;pIK#ML!+rO|EOERc zH%%jk68r24X9d~Zix8b7(jg~G(mAFpM(gS^kfz2y6p;u(L@hLRUY0mld*dNED4aD% zrGvB;$pPseJFiZ6=p{_-iRGW`rxG4Cfo=$Z4}Av8!)N=@N5F`TYx$b`nc)PAxgXw4 z%!RKp0K6FmPb@nJ_9pW2Ss1ZCHUM&Kx#Jd{1ug=BqsZzyCM-#TVto(Z+Ogdw z(UItx{?y2e&chp{pH87F3tidsHB>q5UHQp$>AzG^Dj<&lZX)&k9mG01f78-R4RIC7 zRIE7fO&3lsJA7>Igpimr+G;>8geix_lex)le25`5CXva%U!$O?ZJw&qrajELo^pj@f7J!kcIMEv&8e1 zQ!PP3a<|f0L`XpL5FqHNR14o~7`z$rxF;KkZ@sqBT>RgESU^q7#gjqQS~S#;5WvBP z(9OFFK0qf1!P-Xys=x0=ry!W zlNnpbp;C)U2r&47K99>7DkdI{gplS$MKN09cwGx3kzb~MI5&yX8@R_^ax>J81^P{? zhQ(lMc5EjEPOpGrr`1r;3A?M=OgslmJ3hzp?H@_2LXQ3$wE{n4&fD|>j4YJZp@LZ9 z2B7fg>uh9(b`*q6^(}YkFHqa`=cupwGGxY7z*m*{ zdZ{4}sHYQg-J3h^(mpEL#$>EID%rsm%$r%Z^G-tww-kw;Y%I3Y zyRPiMa4y(jMINs^^Sb8|XdTJoRan{uqG_^wrrH&NhbQOu-4f=4m=t=uGN3fz!#36( zqU-wxae(Z1IZIiUgsU|ad6=TE`DgJCUCN?!*}AzO-aff~irzn)64~i20*JvdQ*m#N z{IZA;z%a$vso2X5@wM%l{k1=uN33KglZm_fp=zq=G#sDmdWYa5C5anULb|CifPBN9 zy$2GXf5@QQab}N-qH%9d(S6v28?Po3p*2E;lks6IV+PwFdO!YaB;X*YSLy)EnS0C| zsz$QhYER$(I+&-e(X_YB~Uwx2xw(E*`;-k8VG6wmqy|)05NmzbSJ$hz7ib2t=vgqBz!@^BE zXi_;f1vqS+bpgC29#<_x`n^i_C{D|B{Dk)`@Bw?VSp$zc?oAiY@PovyA+d8Ln~3WZ z@)cz1!DbCyqz&P#rG}(cdcVGQQx4Pdr&KIAGP)5&LIHu{dYjgjGRU({fEpycsy+bTEkYGn5f&Mc+C7!Wwgz`F3 zrSgy3hy;Wr66j*y-Z{KcG7~x}1E4zt+U)j8mJ%H#cEZIYtYH#>z zpbb8xSYJ@#%ml+>j=^?inzAOA*e-u{Yv%Nx4ZuXqI67p&pZfPW*B@tOj`9ClP+S$5Kb#E{3wk6k9=%yiv!~c0-92$ z??KCyB0ny@=rLB_xG>4ai;D}1(GA?Mp4Gx=&`y*$IPPgZm@}p!E_DLx z^~JMvQ>&hs9E#%hWpIAKjvZiRU|EPPzPzyVuUuhDB7rXVX#h2sI>^E>Z?>rp^qZ&| z^WN{MK8|j7O8O=duX+{bw7UL0odjG)U3mrFix^F014Jjt(5W`irRYgAum{0Ie=_@4Yk7!NA6F_u9$Qvzqk~CunefNt_bk@E%nG>O!VQoHMM(Pl?}Uchk(jSK03@%RgH-v zv|Z5}EsddPmt0?LRua8G(0Ww*C;5n|KC_0bj1+J5Vv!W~E=j3rK}sYwxl&HIBw$(2dfXH&Qq-!v4`O`s<2KP2r zdJ`Lz{)NB|UxWdWuq&J_Tc_l`n^9r@;U0}p8=6{rwjk_cEJR)aC| zNBmsw!+%PO)Y7;Sc#lG4Eb?Wl)_<&NOr7j`y z2zEF5nkTCUZkvZ{k7n2En7k`+6=T-qrLh#QPo}&0#~Xk>nu| zF`#s)W5oBajshzZMQ9weu)(LQZFZziNhOX3A%v31rZTl444{cULCH5`p`#pGz zK%!Q=^|VN)%SZpKi)CAlDz~I;!jYzESeO7T1*0%x?Gp1ghk!J;W=}tY)k#Yf!n4? zE|J=@ClwpClFX7wy^LgD7E@56qy$B~ueY61TY$B#42tfS)u8jzQjD$I0bgbT=C)ezLYoHOf>mrgI~OM>nb=nYN}*y63aE{ZkOu&* zGP4vZNARam0g_rwP`Z!uI)BN;w_9avCA=&6)=M73G7F47WVU;4`(D(2;L@?yEKk#SYEmYix)Xh&PQb^b&SlSYhcwk3#4EufBX+Ac=S4gWvQKl|<>+x{U z`z?$EcK^xtwHKX@7K<;CP-o~DcFNbP=Vb@zh$0Bt+{in^WDhheK<@?q;mi5XT8Z|u zxg^>tVpu#5L29Y3@e2nqb`!#Y3kU;{M7y$a6=wZe{1T#T`a+c;BKz=OLH0roLtkKZ zqD@~~&MzMSFd#1>8@sI{4+G?70)hx80fo=#)UoDWruQT)O-=UUk!Ea+JPddr)d0EC z6GkI`&OT7KOkAhSTZrxb%}T?NT!m_rfzfL%1Gch2QljoausXiHiYBslEi3|$JX-ME zXD)&2vL`Ls^YUO0Xu}98ehN>jd3{rFXoe0t0DY8#g313L9S6eWlB5**g!N-c2OOul zFh_3iR*`CkqU~C%ZVSuRZ;aLey;lgZg*to!)m={~$$I5qU6GdK(u9SPePA?#b-Zg) zi9QeYnQ7hznAEe;ZkIIQefnhL*z*1gA~?nw`T%~Se{Z=E*|5=CRP)cahm#LTYtJh^ z*AeM{k`6#`j7WGiC>cORFl=Ec?)1*iLW0gUN}~w`^z6jBd)_}CkL8NdL|W2%TbCsf%U` z&^*Wn2+WEar)pomu0bkNdEX>s7yP25;6FLK-(F|ewGKTB?&~wH@DwHajcvB>?FW`S z0d7Eti~!9_L-Mb1m8Pq78IXZ587;_oOh7e(=~jq8VMfu?%g$Q$b|eb0PzMKNo~|Sa z-zl8MMV^%6Q**-r)BQ;bca<$jrvAK!Av*o>sdq=E>R3JwYgQ6%br+eyKjf);4!*curVN@vgeD;1d%8nn^0G>3# z(0T7Ksz2^C)gZ=scugQ+&3;-PcUE~q@#M%%OnJ>y6Mcj!Wlq}S3#}vPNUs1;`tp?U4}j@0O-a|#A*1@_`6|%8x+gYEJ&w$ zvG@y?6kl8BpY~4x(0{ZYxto_CRHjqBXfq@-mHOw;>g+#d$p#?6=Kbzj4CUDlt}tfZ zX@AyfsD>u5e)E3UcL>hLShTqDJwWHfQYpI}o^hbf>+!5b0G<5-6bsq8h{1TbTQj}q zsC0o@6v-?Sce<2Mpp?*iuXseZ6*d3gQISu_p$?z30Z`w(+ge1wkd8Dd@~cBpclUDt z8t+bHG_k3Z^5&|l!i$Z9WZgX^eD}4>P5#rL)aIc6(s)ixaDezXl;r>+550Hy?%f0O zwiy#sI4n5?mb1XF3r*)5M75PyymsclTm{j5aG2FB=b7Z1FN(soDGB+ zY&btH_DtB9H;f;oc9I(Q%OhQ?3O%3uC`9;9Q!xac?Kcg5q{$;hd>ggV*MFYvbCfM7 z4Vk#a|2GmZz~-j1w^+a?A!yXUX=nqq=`90Nm&*#`oG4kgV#u0as?~ zk+0pGObkf?K%EQkiS=4*eo79}g+92-B#_2e&8=D9dMc@t@zTcMMBSruqQ!j2wSW)p z!cD-1Jaz)0Yx-HNkB_x$IZg7;A^$~(t8!vSNQbMFuKFo)KQkn~wT)x~(wM0b8Gcom zW5GV9&@}V``)ZmgU!OwP%VlHBQI?0SS!gq)#+bCH!dM$7!R^y`9=Km=U;Tfowpk%4 zva2cty-6krrd}`EwA3q0POSaGM9!h2Q^_8_tH5ZBp3W$Zq07jH{oM#o!!+xHz4Cl*6Yx1goy_R3pwj@VN_O>) zbSAla$x{KTdvD@0sxkwJ&a>N#Nh%-|JuMuXOvDN}v(QzqpZI=SNANj;$_Ch^sgA@l zXKR~fN`KasEF#_L^o~b=vy7siU#$U;ZWc;iC!)E=dfbHhgbV~AY&8--iW$FB=ca>X zG8?z+M$Yk9f3y{8&eR~1qZOnox6E0j*y8O>I^v*GCyKfH$KLV}Sg#(gxZ9u>= zDQT+KUo@q{bXWZ(HX5{^lVQKY{anEiihpL9HT%hjua9r2;<6*9WC!{_IeNr4c@XQ& zU-;bVqVsCuh@8I>^br8o-X=sX>smCM(Az~&v1X$Sp#!aOz_jaVw`0o3qm>2%in*b%XtR=Wk|iA@f$BW6V%> zYT@PH$5!o|q(QRvih-N4T_$FDHK8j!%dX%gdXbt>NKM#>FdakNqJ~Hepi5!^&cjd0 zp|!8jn@aJ&mxC6h6v3{+oNfY+CHOBd^T`A4gH>PzDW!uDlyQV)PAE>5F?b7{bBJ!7 zzdB)fP+@aRV2ankG!g>vv(wiiU7tzP^%%T>ox4a8wGh5qo>?RW0DQ)+(7oE9LkRXt zzY_#Og&|L&i9`_uydf19xiuWXfiMC;1@^ye?m=meEw*5%+(?5Bh_Mz%BwRy*N9~O= z9kDOYK`D2l&Zb?TlH?To{O9WtIcqj~;Lhy*WPoOegzV*(wghM(B-cWFyllNGO$xI5 zukAl>GV3y&6fox(idXAiK{)=TLr;#-@n7_mf#i~CO$b3TZw^9m&dBosy!S}f|E`pK zSRr*evP91zwaQcP&#+p&y+N*Ly0i~N-P^GH;8H2i{z5moaGoG!>i$cUAloRnx!sv} zy?Y`F0J8H(!v7ZlD9=94m~j>T5i#vhMP?TWA4tFHd#PB@DuZ<1NbhZ7P!k4epO zXOxXV6fRXlbx*3fzImqVG>Vt2Kk{nuAHMGJ-^~940Cbp{4}|W0wUTJ$s-h62WFW-N zZ~IcbV*S}RYX!-pSOkuKNGm`gZ43Otao^_Uc%$JNVgO)|qMhT1cLuFBFFN`Pb%~M9 zf7`{jD^h}&11IUYMT*n#3c*Vds^r~`d#*!l5^aM)#4>&J3IMPr8%VYwat=LIq-2t= zklNOyAwC4pgP&xXzvJ=>VxR??xn|C^{luX#}hCmbq7g7($}C0HxL&LsIo&Bvs%4dlc-=a%KQ}7M(dP zS%bS4zfzh=)LY@e_{-&)`bk2fWHNVtRWc~aLS4lRyUcHEkLXb!FVY{$w@&f=B7JRM z!6oLo_F@`9fnhKKG4u&v4w5Ur|6Y5v|1q%hv)=&Tx)~4+h)y369pUKCU>vN25s`!2 zMbP(KJJBe<uP&IDg zody#II<~(9cr4(Qk+(onWp?4mF?GVM9 z;>Ph$6x$Y*DBTiMCf+vYrn|9rSM01xYItDCoodq9NpN`uB0tq1ve1a1r>E|9BlJzQ zN_?XEPx19988yVHlwN-j=t3q(rTU8~qi&#gNTh5f=dKh;vNK9(2><;e?4>IE?lShW z@PYL%De?r!MyftSM%c?P7-?2uUoB+8hn2waGNJJ;*N#b3X^rJr(pj!~;Lz*wW28x( z(W@^2@s@+^N&d!(Fh7)LDZYRIbb)vPDnp{FZi;k4n+Zrq+!T>Nxhiyxya z6pv;e@n*#n6**IuTdX<7S^nd?<$qjVz5Vw;*3Q>ljTaOi{A_e?S5NuYf!4PpKd+o8 z)lG?Udt2g}-}%xlPG%CM<~#mmcqF#6FXR%^cRPRSH5%?Z?d1_8=bay&<(wksMPpTI zU!F#d$9|e(gSaF)d5+g7ckPdD>kc^goGHpuEui`UznC`mqQ*zLxb(x* zpk@0;)CacoJ>T?vUAYa4AD;a8c;&~D{NeU)+cVS(?{M{){s;LvVL+8dMuVm83C6vB z_jsGE7@l3bYvtyMUi|54+?}`5!~r}LvAf|x!Y`9#K_(>@CxV zxOF(XYh~}ETc34gR2RMRTSQH5dA7%-Ld*O%m|_EA>fz6J;c*P|E=6CNUp~$$_h_2= zjZcH^Iq1{+;*WH^37hHl9L_7{FMZklol1N?WwMieyyNbxxB$6(A5yuu(JU; z40YvR@1<7lTLC<(UhpBO?Mh|yN$g8b*Gcs@S@$&OHm!-GOGZ9z6)}C6)u8$X>vb=; zhCbU>efVtZ6wV8`p}2vZw)fK;0?FywgjEDTD%OrUPi@%ko}8Rqmsf`vNw7Zn(XMLM z@DioMTZzjHeYTP(@2CVx#^)g8U6+TkGf!@h8=ISt&uPHjr*{6XmS1;lbFs2u>)pYI zpzHZJ9KOYH(Y?-k)u`c)jxao+65sZ+y4^nnZ4N1`-iPFLe^BwolM(}ErOk*wr~_}R zvYrpW_Hr+G{!Xy`(bHgRRX$zJ4Gug|a-3kAusJZdgb!HuBgKBb4 zQ%`C%YHDg`tw*N|YNxV;DYkNxZQW0b?*ndJy@4)8)YJ!e+9DtCI`7(ow~%J(Y}~Xd zdP`28a?IYJ9cy|Gr{kKVGWuLUooMKSa{IB4 z$A$dsmGRwanNd4-LkQ<|cjMvn)8u7Xk>2$Sk|s*4Ec&ZNMWI6y@07-tb8mxPx;B3_s=gGO_aQQ`fSaMlg|o?i_pg@L?~vq6RL3 zFfczEuTj{kUXL1F3NHmc3C3S`%*u3C)t)H&Wlw8G%$JJOia{UoRgRywH1z1M;qa#_ zy9Qm7Kh5)P(p-}Ih)n0ECwtY2hjToP%= zF+;U0_h#`h3EcGFp6D|fIMlkK9JR`S4m=zh8j9QS9N?a)7Eh?1S297mi5s#8?}xpM z986x~HPDuW?kgha6)_O2p!@+SDPBlbLjvBF&qS}qb*0ya@yafx*O}h9BeE_n=QO_c zyB5fkLryFCg4&_I-3}^ywD34a-J%AT3~j&sr6gl;!>4Q5tfZh5*sN{4i9yrb;+(Na z(XpDUeNgv|s1jX0SQQyQQHk9Nw(OA%ls31j>m`IGo1~UWFMx_LhqBwvkFlZt%7Gi8z0F6qS z8DSI<0fD1Nu^=YFgGdo9fDTeD14{j#btd3q|)-NP6(FxhqQ=>5B}`PLAOU+Y&xuefV=waW!Rog_iym8&~3mhSLh-ckKKf; z%xu(Vzs32jWli^INYdc_h`$}#Usidqcb(oGk-+7nAC4YfQc?|UhilL{*Qn3FZ;LxA zhCJ@nl|XBYXB<6h(|0<|ExgB*iN}=AoHZ-OD~V98hFX`t-$bS&``4k`rRopq+jiNs z)rUX&oUcdy;qv|zXb2nL4trj7Z7rWaI}|w_Q_T=ni#MA7*m&qp(ERM`PX}`!d3dxU zqaqj2%#0{k*IiqLJoY@~AkcV}3YU$LK`ZO%ZjdRY^`A*yw#kjlq?UUTRy3XpxV_}EZ zpVw+T9`jf5NsdXUb?=Y0GR5{Py@Tt3F;gB;GJV-idkRvII2p?)o93Q7w_%e4;VE-! z?$+J&X$Zx&fbM>hN%Upcf}p8iyi(&jOL=N<5vHn{_n>}vJE(_wH-usk?jt2QL5GPy z=uFW*%Wsw(!i{_TGRGy9+K`gwa;&ndryIjjFMBsS?m34OIympbwkC70?kqJ9LKN>S zmdC{OtJOzo79zW(me;wxxW4d{MZ7-GfNS^rzT~`4)h1AOHZTe4^t$! zW{2W557P`cl?|3P(Zw%T-_-2oKEZr2=eW7Nzpp3Ha3|y0;4^K%#!d2JP2cWTI|;XF zPA<1Is}H~2F7ZOR$mc=D4Y=#cS03eeqWWWF^(9so@a6}_Ni4)DpWci4w{79%^*!$GVuKX@#45 z2xPD-ROS&=HoCV|HyH1Ke?iFV)elpomJl!P!v*fR09p+cHlSJ-1lU}@u&*s4WRpIK z&jUf#!YYW2cRJl|s~m2Txisd{C@Er6KHN=Fh%X!8R3;0q4&RiESS9(=!PBQtXK!$a z!?38kUpI5C3%IqFmv0D4rloBmS!^%;+?6c!-=6mN_OT)Q7RZ67uvBf~BR5C%JgiG{ z4_~IulrGrZmRK>*G6EzBQw>d5?!uu+%tw3!^P)jUCa`gP`a`Wmrp{vJ&y&GBa=+UE*&IvTNz6aG4W@{_aZLW>VjH1_|b-``B9yjf| zPsW*h*Q$HRy)RNo!yI`V!rK|z#wTq$WQTKs-f(?2OSgFH^G-4O2fdH6ZHDl4n!Z-o z+2m_eiLAQ5L#{Z3?@|XmTQV=mCa(Z%B>hVQm7F8&XjMTv+?f{0VN|}RI~sdYdb_5+ zq>-;*9u4N6=66~7ojWDxyFsDGzeMv9H@GNV73>KIif$*6*cP-T&We=f0^+FTHZ57Q zL?)$>SbB9&K#52*+F0E3ELArei(s{8bj;%wvlgUP1C4U3IojTTQ5+iIHv_amPi_TJ9TSnZe zD$@5$a|zK(n_o2U2KNaN(5abOI2Q%-UZGC2Zs{J<-Ix&3IZHYgm}T}d3Y>#2rJu8 z#yQd3L_Ya`5^s(#T9}ug?_?j?mabOKpUV=zayX;WxF1<7La!Zme9>(24FIqON&H28 zl(O#$luYk)^8ORocv+6y-6=JrQ~0!Gn&p4vN~Dc2%@}~_ZvVZYsJ2b~X{7O3Vd>)+ z8MvJm9KM-t+`mMla6iDDDoG#k0*-kMY;!Aqt>+=ka_0FtHcXzX3;R&?XAwMq@o>C; z+X@Ap$jv?9)N|IWH(3Yz+L&Ko!9~qfO@siBNpwUv$9 zB{+bHQ`&~WCJp2k&=IO%^lyeCavX*muGZAXrL86J-=smd;C$Uct3@~Uc9cctzdOslb{H6|-T)lQ=N zRfMelw>We z>LVJ?`}13Jk0yt?Do|rx_G=Kfik~x`811oChz7-?VPQ62)_IKq_i9;({~ixS%vx(0e)-l~7u-R({c^$z(T!*P@0i#@ zKt_V51ZNaO^xlXDyyuMT3swmIM$WKI`&^7(pTy~C8;)Q1wlU1DJUw&&J1n_!E}wyC zqZ%IR61?T#VxYHu_(|02>GqN9qHo)uS+MN?Kt+4ahWjF^gDKL+!R?=Byl^e^{b8b- z>~Ymcn`bR(YHWwbN00nBSkyz3VJp#x_vYMXCfl#EvVRv9;(lnD9`}yzCl~Z+0+3Va z(0FRGT|(5*aBQ8jMqT4A{}}`L>pR7Uxd`-K9J-=6w!AP?(`{O&IU#N?E|IZxPdaD4 zO2_SC+aOly3!Li!=xaUUz;-s@4k}(Wlv#a3QCentIWny-4)^8-pu+Hp(TK+gH6C#?2tYUJ7hnwAJ#@PtzX3Q@H z8UP2c_T^t^N=s6s;O}a6#Ty`32XuZ=WztJmc%RwgCFu1xJK>sYhaX;dpY*(_E&!*^ z#iCG(P+4^lE%*F6pMPvE4?2a_I|i>mjl6!im=}Ng>8IFLbPILppqR4-i%oo? zvs|-F5Uc>%n%MoqJga|)ZUEv{Sz8|6(-|G2pMuGaU+tds@{cKHxK}Ov>3Llmw8n@l zu35D?t>*$@jkHbYXPBEOxq84I2p#jlsqRzbY{Z}%>(hcQHr1q*#MbOs!owe7ElqkT z7_%(8k+|XCww_7m#@WD3GzD2v2qw5MSG|3nzqY)pwwCCY(Ys3@*YQg~g#c;QxUJe3 zn2Brnm$?Xm8$P<&vJg&pm+BB!p{4B>!sS~kGmPBoUn8ZmTigtY&8^OGIsC%N$q7jt zUpE)!T7%nEB|e0B*~{G=YQuJCg=+BFL?08mZ{2V{3+mW*n`H``rmP~jze+sI)7`z- zl2>33?lkPt#rw!BVGtF!_^A-aWsl=*@`^h%bzT_3_%<6r3$f`@s8DX0Izv|DgOdRF z+iYdZw6pp76$wXenp6Qxha(PiuzxY`DfAahzKnNXXD0GDpZL9l?!tS>-H%cH4)*Bh z{q1n~<9X;=ma--U8zvMd8jgt67A(TI4_)GQ&c7y~Z^WYhksn|?F-5wYIt*Qnsj=di zDE8S)-D(K7uDc6yoP8E@L_oIc6H`)RJ@m%tlaGcW=DfgA_lmk`4ULhwDWT1}Y1jjg zB&Z%oP1vD>2g7CX_2o@LS)I37EY2BCX|v-!W)prjFg_vb#U>t6Cai@yZfH4>b9mkUKv$n_^K?m=+G`C$xx z1!~A5OSCJ^@h=T)p67*wOC5i@4MbYz44N6UcvhgZ^j6+Mu|!(dX@n{L9 zI8v|GkHuL}x}_LUD*V;GM#)Ev#w1r?;TtjDGMC=XN4-LK%t~P51K|m!k1Z&8m-`;` z=sPUxxC`R_>&%Ra@Ns=F=USTfSoVA9!OM{AE^Y**VCHNIL9uu^F}CaBVesysnL7g} z0DkqPC!y~*v&>?IMv1HZ+UiRN3RR`2@Gmw~L;96|7^+|ABz^+ke>~}J-aPwu!Oxcm z1l5$p4*2s|v2@4lR@O~5wuOPUEp$@(piJRcAxF@k(~aUXxi0!uZ*Q-IY6yD$^2i-G zn}^58C?DSM3s7uB@q^Xl(d8409w*N806SWAnKAalHMF}X67 zYV1F15BPYg#uIBKy7mIsYyZTz())WobC;M{S((VKtYY0gK0*b^wWk2#yd#DLzr<|_ zKKB49(TgA%fMtQ%2#eK>PWxutUORxZR` zT?t!HY9(=+WlU&GVE=0UN)i!r^80q{gt5Ln%DZ_hub{r@$}1NI4#F1C?M#j>yY;{` zX(nX<*v^B84%NGxqkE^vIRPt7tZXr_TP&p|u$zuQS;oT6pMR!$GBq7-4jit>_M1Vh zLhwL1BwDUKbjw(pi6U3->p}sB`%4EfOLcbc7;H6zVPFLZ5_70mI4v)At9t`p3xCmp4Vj zCF{=C0p8=jj>;)mZeoSAM65Qz*GE`3%5R`$o?Tb3?lyGAvI`q*C$^W-yk9t zSc7AWG?|6!2z=XkKlu8=K^6RWQ0npu?3;6fU05EH5#way(zw%OsGLvoASiC#&u$b& z%u*KvS7~tVO~KZAsvCjnTWGt|1Kln_x3|sCEb#%@lt&(aj$o7JSi^fycTD_=M8vd+i=X%8kz!e%4>S~hQ)G#(m#rmc|OS@(uTUdvMIYIvZ z&&qV9$2@A?qrWwAvB41B(xgjf!w)EEp^VQaeHWaD5fv>6j$%(2V98vZPU;-T%7aj2 z6;$U|ggS5+i^q48ZMt)A-}XQuTIe8h`S}SK_Ks&RHifGC14fkxaeL2$Z+O%^az`#a zTj*BuNG+IT(-Zgh0Pa5%OwPm~3wa63yddS(aQeSMzlwx`w3GH-)jBE-kZgDcO*5DW zuU^i#YMOkMx!98W7j_dOC(L2msF`-HPfN}hMd3gwZra=DaAHC-GtsYd!h8bSb^P%|2T{H$qwuGp4<{6v;Kp=wZr!IiNcQOiY8qOHE2jW-#E7J+)0uOQWCF z9u(qar6l|{bj>#uhH$D2l&f>G$E11LsJ}r?`p>oN2hNYmlXy)<$BT+%pcp)3G$zVP zdY53;Rt1e$zeBeQEw$#cH&TQAq$I4Gvw;*SV{+cjwyjbl8veYOICT~zg>Us zA)&|6t(UQ8a8a0y{8>OG1L8h@N&3o*k;$>dhxgM3E4KO-`gbHra-B6=yC!0nTI2Q=T(m75z|F3Y9Bzd+jAAA>N%6QM}T2h#U0HzQl{mlLDy8d zn8>SKN@N7ZC09N&INwJh<@2iAkWtJwrt5N+wQfaPTYDB|?nYi8spGxjOT9iHF`?&X ztOxo3@@++1NZY6$V0~>*du0UwYBUdKXWoOaa#6YdMwD<7dBy%O^j_$A@*l1}UG1?; z^eC6@7<*oJ3!jFy@V;=mfZEP!wtLatd{Sr_hJ=3Xca-1k@Q=Aru+St?gz8VzDUEHP zu{Wo@y76HXGx~AJJNM(;gFu$N(&>~T=OGU^Y&s$m&&P1*w`EXu^PCvu?kf;60S8qM zodf4Tt88Q)>sTz4jl9YB;lP7^jn8%PYUJ1Y8VK^Q)*XN-jM7bqGaIG`eN;KND-)!bBT>u4l6{w>UMB+^t>LvnQ0bxZUrn%TXMLmGnK>TU=^P0T&YlOok ze*QS1XH*LJBjmul;7s>ooZa-f-$i8UJ$SHtlvB_8K+`-YO_TV!rJ`Y|T>cK!$A+MG zu7X3US=&Xp{?qw-0yJh1kaf7H24*2&1lJ!mxX{avnLR3S+LdFqFYkwy9?M5w5i*|o z7ZkI~`um~G_m4*Y%53fl{6z0Ug0q=%SNX`G=+^qIeh448KkD`mbD}m85+|zN#?PJ2 zdDFtyxFvxr;le&M3M}NOeW$6 z^JceL1>~xt@fY&{6F1x&s5&U?+etZiW~{#o6;mp+1kSU+km4<|2PD7)U_YjRYUfkF zbj!m+H9SLR96@P#2@f|twdw{RGgb~}ctbJC9UB9I|1TaD3yY&UgD#qzPhPce`dDS^HaTUI6 zsTm=0O8;}Y2K_P)`ep1ne;=R5o4SqE@}2~zxHv_rz4-7=!tGUOT0X$88avO3$vh@hgXYj-(eQ(x*}~C6s^LEMN>nU z>JvrcB1}QugO!NJ*{HVaya_$O#CjnO4+$+I|38qBe);9Tb0soyA2t0@<>W&s*2{%} zI2}|W04o#M8~p#5Uw^>%1-d64vy^goA%m}b{?Y-FPh9R7b2YWOIN$m^bbHMZ0L=f; zSb0OSq+ApKC8R}6$pO+Q*Wsbnx(rMay7NwqA7rTH2J!K#1#lg z9Plk6pO}mAc5)dHq=XaG(f{S@PHgQTBirNiVy?=hSy+IE3R8OkOzuPr8ujP|;1@Bn zx?}bb*vsVa*!EvL>A69o0Oy`9dv@-?fdgTxK1`}nxeicVTpR|Vb@!^n$r0n9-=q|L z>>2X^Ij5)_$l+K@F&oO^ox@-)I4wrta!|DolV#l3c?S^J5H*ET9lMsg!YF5SuSM45 zqv`xqfXHKTUytZcE00qzxJ8Kl$IeQs+3-_~BiJSi^8fSsw@4Iy`9M-BLp)|OUViT?Z$?kvJ{TDseS5$Iv>#Z~m&E(|lt(I$v)**Pd+AvD1@!2i zAZezyRh#=ipVcD(pe(*|Yhz>M67^t8Jf+EY&gPKRUR@QeL7@O_`y(LGb_HJou%jgFV#2lX3&zdo#w@bI0{$5;i zaZ^HjxenG)ZoV!!xY_Ua1chX7nh89N`2pB5f0IY$GASgh4YxJGgUEjPI^YvyrhXn< z3-$6?MN%M_^lrnKxhPQMr#a`K-idqej^)UgA}iRJRr9)bmM z$4T!Eo-igZZY;H2|ILu?a^^BTr0)`P@Za;zFfm$H@egE=HDr&~Pafztqgy(=;&W9w z&OMZ9n_Ej`UTjtmV1c+JR)Me^)w=ZxR`u_o);a>@+S94%>`IOc z$QHiPN4|IJcpD$q5V|h#Rfb#5#@+9sWiXt703O&1@fgXd*__Dp+wTB2)Dqfn^>tpa z?)+mfNi_A^@+bu4m9;9HQ$Vf2^qFZ~2C*q?GaImk%zo_hW(t@-n-nr~J7|yvjpc8yn2?1B*N4jGfKz+ONKOxmWBRI1kySzrkaeD#)vLs(4xPN_dH%>TU^X>}He=a%y$=A}YJxl-| z^{!GBiJ0wAFZ}LI2-7t+WkSQs-ER~-V~WiOZKx|tlun~h>uk~L0w^n%jwdCnv*;uSO9fU_SbtUqOq zU+zc7%T44Bv+9=D;XtKj7haz_X+N-EH=p|4KYG^8nK5Ass72d{%_=u^oZ#`Z)SJUPkwgvRCFpinN_y}XC~p0+#8cqrI<*Eu75D2Ff^t=vtozScrQcd+ zl6?CL|G{h~`dje#uMz|X;OYZ`tN`lYm)0f7ym#R60q#%l{xDc%F zk4NLjuZiE|L;N1);dA8f*Xq8)6kPkBkN06X5n_zhduibf{&F_CCW&;5do=D4g&rLM z=dvWLKn6}@S0oTKqGTC6JSx@&%?2gwz@5W3O}lR2Zbb@89uA~G5P4T_&ILeSW0jLI z*gbcz@*o^euH0Rs)#nZzkIJB4TX{^^FqIqjtjkDg$X+9>m6(KYThHM75cz-X!gYVe zwic=^5Xl`cpuGEU$h#|dYz%;Y2|Web3V8ECN4=I`9cX-d$4)@x7{3$X{eVaEOyk6_ zBb@E08EeN;QE-?A;ggm^*0coPelC-R1%O*SRUqHySfl=A$NGi9(~k-@z7vOi_Fr1fse?xLxJx~ zP#2y?ieR()l{b^(AW4_+M@kEQSk>|+UT49Ilalw+FxK4yX(TC}g?V=e6Yv7+mPm7c zx*DrdCB8TCCs?=5lzT^00grp5L!>sZEK7Fp7SrHH0c|xAq>TV#b)R4B^&&H%5EE`@nbGna_wzLU3S*$QYJEYmAeF%#x57$l$68;RsQw+bs8 zh%C|mupe1vMUh!e_~j`o^7xetJI)ZM;9>X4V6MPb0}VrjEUk3GN|4UD?yBn4R@md* z_b`Irzc(QMi;c9w52VPxYkfyYzK7JFX2h|fBCfjoFG|0M2rj?!N(TfXogn|pS~KZr zd>I&7+JpVak%?E%71Hmon7hjT!-U73rs>?^Bt`E9eA=5XGY=CfX} z+ts77ZNc7p2F(4Q1fHtaH|9o3HWx)-7IYRFGVaKmKDYB*?k7kGP$r1H+*ktSio0=; zyR_~?b+V;7Yk~RH#Ji~xB)Ta4O2R9`W@hYx`GoTWK+fM!0bfGh7Qdm=TDuei7BxR( z)o(^}e#;x+aSNn^+pqaOBpFV@X`Ln5;d4&{2vq9VV7Rx6cmL*+L~t};SWeXcrdEeRY~;f|3ZUvebG^`XgYOVeqv6_M8ZJKef{4Yp{z9(*Vxsq; zZIQt5Spa^I^2)1MJOVXM-pNl`<^7fVRNV|zE!=->R@;4Kq*Rz-Yb*ct>tBSJZGL{1 zIF>`Wk8QHYVeu?6?ssFFb_}r4pFQX0H8%3a0Xt!%HD}+#M%SMqyoFV)4Ymz`HI#94 z-u^LV!FtyR7ywsolUvX^1a;^NyG}DOeSQ+GOzC2FO<8EXA=(9NklK!MbtBGEAF!k4Zi-=*G{{ALi7%jwImyxzw{iGxTQtiqiX zI0}`%VSCHn5w^q8Van@BFh|e~S5dGrnSyV_8l2o$_2C4!f1aLSqOwB|%k5k|;O}u- zp@UWfed>7i3iF$o#dRiflmKq_BYXy$e~(TIej5cfI2hsrup>VHdJr{^I+of zZJJ=>SWYfFS%AD3#WWCx2{!7%_%+{~DbnT}=+uTjAp7x&0OChmG+x%>pbX}VYxeowe?LI4FymwDzI!00Y6PZ=mOo6+ClH z-rs8!D)f&^4h-z5foUZF^}#A=HO8%jhr!A+vsI<&cg%hV0`^!U&WpvE_1`L};&|Hz z&)}EFEYV+h7#^fQikFBk*YUgQWl-Yi#Z9x60mj61_GBMIbVw1jK| z6=KZU!1PJ{?xaqHG2^Bygv)>#Xa=18BlN%Gzqo;qDN8o4)~D0M#uGZ+!px{hf|m0K z1t=YOx@*M6cd#kppx|j+s{qfleF#T~kc>Fd8oqH}A~0PXFCGXWHyE`UBn1sOg0l#7 zm;YYp0-qJ|0UWXZ zvRz(;D>PX$@MipmAsL56)Ll~^D$xS^nsqon@SwMFUnAE{d!4*mqLC}ZB<0ObWnG2)>i5Esi0odZdbV(v^qU}s#l;fip z(gto=jvb~(VwzRnT|*QmHsSz{Vxj()u;!YKK(#Q-;Mm}Orhc*ndf#Nh;Gr=Iu=2{; zG@+Pc?s}=PvrTcW2Iw1x;1lT*2h~wX8WHZ%g?o>h=0I~~z2fgtDHxrLFuEN`;?rkK zw!{+J$4qf28;}UyeqnEO4>w-~ff8gBL0~2+yz~e^*`DhM0Me2Iq&_s;hY6e8^k98v zIE0Z4pheM+Gte;_{!H>TCsk#5x+*w52FnSwMR1{T5|q%z!A7te@mVpDR~|+HqSD3^d4t@<%nYg!|>pm(1%T-vEMt`?&s|IPiYungX33n%5r&fS9qwnb1LQ8g8D??UHY zUz*iVI|1}+h}G_nP93t%K*H4pAiT4A0HN?yTVnkU`d41#kCJKl=XEE0ofSthFir?g z0Y+SMF7e(RTG7d zg{ObRMBq1p2n#3)BZ4q`M=cu?KH`Vr&a}_P{=(3HKdL63;FxYkusHgK+sWkb?KbRl z<OPjS@iZcB#rqMGoFSkDsOi7R4~G z@8%uwU->waibQFegw|aRY?pRgmRW1s$54Te!Q%ZhsLF$F z=jidjd$V-D_`oY0qZN=OCW@m4Ibn5@B*^r40Y}HBNwgrMtL>6P%;t!{HVJ!t3=VJt zIs05;6f&d@A4Lm5KHL5Wb^GfKq7|_be-kwkzly8*&}+VsoCNXU2iodPB$%a-t*0(~ z1^XFt!kVn$_Upp1P{jDMFRV9 zSQLVFG!?e&j7<*u=}11884_x&4CjR6-@Nlla>~l;`zFwa3#8GOja&AP5w|W<$mij2 zLc{B>N;r~2&$xh55TtL2AP5&rv4SW+%y%zMwregi4B41tLN*eA7vxB4=LsGW2u__s z$WSJDKH1NER9IN$r3*qnlo5dt-P|{X4Dy23tfizdTm|i0*|$c4+c(AfOm!P=G~ubz z+F%qa{FfkN4XJ(h#*qdV89;5=%@bTSoSS zEejGhOX6qK`NdQnfObObs61I7wSH{J*U{K2XyR($)xjGavf4M=wf`+C<0xdPeCTQD$E$lt& zFj36ZRG7A72Xy}q4G9(?=(k4D8gXzO*xb}(c~NUv~nRJ zOn51;1a*h*mReWcV-24GXAu+ zl-a|_&=d&79jFqa<0}@K=VioYQn_lDLQvQUa60g3eH~A-CV7>_lfovd7-nwo{4}x) zR%;TR57Cev$k$*FO?!2>v8?af*jP#k%`mhroSCH_q@1)qLLW@ha$T6B>*lC~z*qXX zC#^gKEP*))lA(TFBFn>i#y@Y;jmFkg^5mQ<`RtQGD%gl>gJE#7qc3r>E0KEOOH6YN zTrj4lh?=Qe9+72ea21&TP|Zm4E)q zo$&ib2Xx<)X#4&tup7ZrCgmlMu9Xl&-r{L1A5H7jO)f9jO~p~5SG;|!qf_YQeL~wl zp$JVmc7wprWJEKOXs*s-+V*_hOy2;^nj&xL9Dye%Ub={KW-RKYS-jiHxSSv5OvMr!tpiJ3F$ zi;25~Kg*Lze#9R&JCkK#E|Iq{?#EFGD>h( z$m?eN9zUXbE62S<)PW>{Hv|d10U88i^VIA9{8ls~o(=wV?RO(^z%dTxm9XJ#GDYlc z@~sWIaC%Z3+6AIE_XMCThlUq8MkWz4@kexZET5L%D58LNYBy032=sfY^ zi5dhh+@ONvWT%*;5Pdji3K%PjLS)2^V~OsfN6QVGe_99~h|_}KINzSt22R7! zP&d63ttLn*7=!nC*%Z4ML)mzrSRuws+#+G>>7=CtnRifkHik>00-*^K z4BS(=TP7rqWqZ2FV2GW9GwGN(Rwm40*}+yS`L1V36EL?kihK zV0frgg+X5!#+AE$Cz`@FGjwO{!VkvrCFb(O)h>5DJswQ-CBV1O3gzwiq2XqslCk!AOOI~*ZF`jbA`69vxSR|5nc&T%6MvN3sUl$7| z!T_xSG((;8%)9HslTXO#Obz_XI)PiLU5&DD_e1M?+1L+$eH15QOQ&7xY0SaPZ z;sKrs<5&nAfds4KZ1yTRtjy|tVbYdIhmeg3)ETfN1FpuboP{bL&9jp1DP(&LP+6!| zzaOgm!8zHkTT3$>Pw^`=&8!HU_bG5DfmFysF9?(Iu)CE&WVOz45P^^i#arK#Im4Q1 zr?sgw$+TL%Cye6T-c5wos~$ox%^)t!e03Q@18dU bL)iOcQ{&D>eLIad%;ImBex3Q1eCz)O=`+&E literal 0 HcmV?d00001 diff --git a/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj b/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj index 91b8d11..1014446 100644 --- a/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj +++ b/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data extension component. Based on the ExtCore framework. - 3.1.0-beta1 + 3.1.0-beta2 netcoreapp2.0 ExtCore.Data.Abstractions ExtCore.Data.Abstractions diff --git a/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj b/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj index 20164e5..e85ed3b 100644 --- a/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj +++ b/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data extension component. Based on the ExtCore framework. - 3.1.0-beta1 + 3.1.0-beta2 netcoreapp2.0 ExtCore.Data.Entities.Abstractions ExtCore.Data.Entities.Abstractions diff --git a/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj b/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj index adae46e..8bfdf54 100644 --- a/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj +++ b/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 3.1.0-beta1 + 3.1.0-beta2 netcoreapp2.0 ExtCore.Data.EntityFramework.MySql ExtCore.Data.EntityFramework.MySql diff --git a/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj b/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj index 48ea8f9..2a53e07 100644 --- a/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj +++ b/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 3.1.0-beta1 + 3.1.0-beta2 netcoreapp2.0 ExtCore.Data.EntityFramework.PostgreSql ExtCore.Data.EntityFramework.PostgreSql diff --git a/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj b/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj index 2f2298b..88b461c 100644 --- a/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj +++ b/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 3.1.0-beta1 + 3.1.0-beta2 netcoreapp2.0 ExtCore.Data.EntityFramework.SqlServer ExtCore.Data.EntityFramework.SqlServer diff --git a/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj b/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj index 20776e3..831223c 100644 --- a/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj +++ b/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 3.1.0-beta1 + 3.1.0-beta2 netcoreapp2.0 ExtCore.Data.EntityFramework.Sqlite ExtCore.Data.EntityFramework.Sqlite diff --git a/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj b/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj index 1a3eb96..c571064 100644 --- a/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj +++ b/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 3.1.0-beta1 + 3.1.0-beta2 netcoreapp2.0 ExtCore.Data.EntityFramework ExtCore.Data.EntityFramework diff --git a/src/ExtCore.Data.EntityFramework/Extension.cs b/src/ExtCore.Data.EntityFramework/Extension.cs index ef79d82..0e310e1 100644 --- a/src/ExtCore.Data.EntityFramework/Extension.cs +++ b/src/ExtCore.Data.EntityFramework/Extension.cs @@ -24,7 +24,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "3.1.0-beta1"; + public override string Version => "3.1.0-beta2"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Data.EntityFramework/RepositoryBase.cs b/src/ExtCore.Data.EntityFramework/RepositoryBase.cs index 0280ff8..fcdb518 100644 --- a/src/ExtCore.Data.EntityFramework/RepositoryBase.cs +++ b/src/ExtCore.Data.EntityFramework/RepositoryBase.cs @@ -13,7 +13,7 @@ namespace ExtCore.Data.EntityFramework /// The entity type this repository operates. public abstract class RepositoryBase : IRepository where TEntity : class, IEntity { - protected StorageContextBase storageContext; + protected IStorageContext storageContext; protected DbSet dbSet; /// @@ -22,8 +22,8 @@ public abstract class RepositoryBase : IRepository where TEntity : clas /// The Entity Framework storage context to set. public void SetStorageContext(IStorageContext storageContext) { - this.storageContext = storageContext as StorageContextBase; - this.dbSet = this.storageContext.Set(); + this.storageContext = storageContext; + this.dbSet = (storageContext as DbContext).Set(); } } } \ No newline at end of file diff --git a/src/ExtCore.Data/ExtCore.Data.csproj b/src/ExtCore.Data/ExtCore.Data.csproj index 770a4c2..767bae4 100644 --- a/src/ExtCore.Data/ExtCore.Data.csproj +++ b/src/ExtCore.Data/ExtCore.Data.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data extension component. Based on the ExtCore framework. - 3.1.0-beta1 + 3.1.0-beta2 netcoreapp2.0 ExtCore.Data ExtCore.Data diff --git a/src/ExtCore.Data/Extension.cs b/src/ExtCore.Data/Extension.cs index ed805ea..309dbc4 100644 --- a/src/ExtCore.Data/Extension.cs +++ b/src/ExtCore.Data/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "3.1.0-beta1"; + public override string Version => "3.1.0-beta2"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Events/ExtCore.Events.csproj b/src/ExtCore.Events/ExtCore.Events.csproj index 5cc92c2..5081d63 100644 --- a/src/ExtCore.Events/ExtCore.Events.csproj +++ b/src/ExtCore.Events/ExtCore.Events.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Events extension component. Based on the ExtCore framework. - 3.1.0-beta1 + 3.1.0-beta2 netcoreapp2.0 ExtCore.Events ExtCore.Events diff --git a/src/ExtCore.Events/Extension.cs b/src/ExtCore.Events/Extension.cs index 431d892..d088b7c 100644 --- a/src/ExtCore.Events/Extension.cs +++ b/src/ExtCore.Events/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "3.1.0-beta1"; + public override string Version => "3.1.0-beta2"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj b/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj index 3aa9d33..73b31a6 100644 --- a/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj +++ b/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky Free, open source and cross-platform framework for creating modular and extendable web applications based on ASP.NET Core. - 3.1.0-beta1 + 3.1.0-beta2 netcoreapp2.0 ExtCore.Infrastructure ExtCore.Infrastructure diff --git a/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj b/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj index 95b9b3b..6a8e5f7 100644 --- a/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj +++ b/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Mvc extension component. Based on the ExtCore framework. - 3.1.0-beta1 + 3.1.0-beta2 netcoreapp2.0 ExtCore.Mvc.Infrastructure ExtCore.Mvc.Infrastructure diff --git a/src/ExtCore.Mvc/ExtCore.Mvc.csproj b/src/ExtCore.Mvc/ExtCore.Mvc.csproj index 04e1f4b..4205066 100644 --- a/src/ExtCore.Mvc/ExtCore.Mvc.csproj +++ b/src/ExtCore.Mvc/ExtCore.Mvc.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Mvc extension component. Based on the ExtCore framework. - 3.1.0-beta1 + 3.1.0-beta2 netcoreapp2.0 ExtCore.Mvc ExtCore.Mvc diff --git a/src/ExtCore.Mvc/Extension.cs b/src/ExtCore.Mvc/Extension.cs index 1e94cdd..af642a7 100644 --- a/src/ExtCore.Mvc/Extension.cs +++ b/src/ExtCore.Mvc/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "3.1.0-beta1"; + public override string Version => "3.1.0-beta2"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj b/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj index adbfd4e..82a5703 100644 --- a/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj +++ b/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky Free, open source and cross-platform framework for creating modular and extendable web applications based on ASP.NET Core. - 3.1.0-beta1 + 3.1.0-beta2 netcoreapp2.0 ExtCore.WebApplication ExtCore.WebApplication From aff826361179316898844edc6a32e58ed923ace6 Mon Sep 17 00:00:00 2001 From: Dmitry Sikorsky Date: Wed, 15 Nov 2017 17:28:43 +0200 Subject: [PATCH 31/81] Fixed #97 --- .../ExtCore.Data.Abstractions.csproj | 2 +- .../ExtCore.Data.Entities.Abstractions.csproj | 2 +- .../ExtCore.Data.EntityFramework.MySql.csproj | 2 +- .../ExtCore.Data.EntityFramework.PostgreSql.csproj | 2 +- .../ExtCore.Data.EntityFramework.SqlServer.csproj | 2 +- .../ExtCore.Data.EntityFramework.Sqlite.csproj | 2 +- .../ExtCore.Data.EntityFramework.csproj | 2 +- src/ExtCore.Data.EntityFramework/Extension.cs | 2 +- src/ExtCore.Data.EntityFramework/RepositoryBase.cs | 6 +++--- src/ExtCore.Data.EntityFramework/Storage.cs | 5 +++++ src/ExtCore.Data/ExtCore.Data.csproj | 2 +- src/ExtCore.Data/Extension.cs | 2 +- src/ExtCore.Events/ExtCore.Events.csproj | 2 +- src/ExtCore.Events/Extension.cs | 2 +- src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj | 2 +- .../ExtCore.Mvc.Infrastructure.csproj | 2 +- src/ExtCore.Mvc/ExtCore.Mvc.csproj | 2 +- src/ExtCore.Mvc/Extension.cs | 2 +- src/ExtCore.WebApplication/ExtCore.WebApplication.csproj | 2 +- 19 files changed, 25 insertions(+), 20 deletions(-) diff --git a/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj b/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj index 1014446..5dcedee 100644 --- a/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj +++ b/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data extension component. Based on the ExtCore framework. - 3.1.0-beta2 + 3.1.0-beta3 netcoreapp2.0 ExtCore.Data.Abstractions ExtCore.Data.Abstractions diff --git a/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj b/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj index e85ed3b..0aa6733 100644 --- a/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj +++ b/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data extension component. Based on the ExtCore framework. - 3.1.0-beta2 + 3.1.0-beta3 netcoreapp2.0 ExtCore.Data.Entities.Abstractions ExtCore.Data.Entities.Abstractions diff --git a/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj b/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj index 8bfdf54..52b30ad 100644 --- a/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj +++ b/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 3.1.0-beta2 + 3.1.0-beta3 netcoreapp2.0 ExtCore.Data.EntityFramework.MySql ExtCore.Data.EntityFramework.MySql diff --git a/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj b/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj index 2a53e07..2f3ae1b 100644 --- a/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj +++ b/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 3.1.0-beta2 + 3.1.0-beta3 netcoreapp2.0 ExtCore.Data.EntityFramework.PostgreSql ExtCore.Data.EntityFramework.PostgreSql diff --git a/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj b/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj index 88b461c..0d27f28 100644 --- a/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj +++ b/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 3.1.0-beta2 + 3.1.0-beta3 netcoreapp2.0 ExtCore.Data.EntityFramework.SqlServer ExtCore.Data.EntityFramework.SqlServer diff --git a/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj b/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj index 831223c..195735f 100644 --- a/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj +++ b/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 3.1.0-beta2 + 3.1.0-beta3 netcoreapp2.0 ExtCore.Data.EntityFramework.Sqlite ExtCore.Data.EntityFramework.Sqlite diff --git a/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj b/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj index c571064..4e4c92e 100644 --- a/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj +++ b/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 3.1.0-beta2 + 3.1.0-beta3 netcoreapp2.0 ExtCore.Data.EntityFramework ExtCore.Data.EntityFramework diff --git a/src/ExtCore.Data.EntityFramework/Extension.cs b/src/ExtCore.Data.EntityFramework/Extension.cs index 0e310e1..587510d 100644 --- a/src/ExtCore.Data.EntityFramework/Extension.cs +++ b/src/ExtCore.Data.EntityFramework/Extension.cs @@ -24,7 +24,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "3.1.0-beta2"; + public override string Version => "3.1.0-beta3"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Data.EntityFramework/RepositoryBase.cs b/src/ExtCore.Data.EntityFramework/RepositoryBase.cs index fcdb518..1a022c1 100644 --- a/src/ExtCore.Data.EntityFramework/RepositoryBase.cs +++ b/src/ExtCore.Data.EntityFramework/RepositoryBase.cs @@ -13,7 +13,7 @@ namespace ExtCore.Data.EntityFramework /// The entity type this repository operates. public abstract class RepositoryBase : IRepository where TEntity : class, IEntity { - protected IStorageContext storageContext; + protected DbContext storageContext; protected DbSet dbSet; /// @@ -22,8 +22,8 @@ public abstract class RepositoryBase : IRepository where TEntity : clas /// The Entity Framework storage context to set. public void SetStorageContext(IStorageContext storageContext) { - this.storageContext = storageContext; - this.dbSet = (storageContext as DbContext).Set(); + this.storageContext = storageContext as DbContext; + this.dbSet = this.storageContext.Set(); } } } \ No newline at end of file diff --git a/src/ExtCore.Data.EntityFramework/Storage.cs b/src/ExtCore.Data.EntityFramework/Storage.cs index 8cbaf38..4f240dc 100644 --- a/src/ExtCore.Data.EntityFramework/Storage.cs +++ b/src/ExtCore.Data.EntityFramework/Storage.cs @@ -1,8 +1,10 @@ // Copyright © 2017 Dmitry Sikorsky. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. +using System; using ExtCore.Data.Abstractions; using ExtCore.Infrastructure; +using Microsoft.EntityFrameworkCore; namespace ExtCore.Data.EntityFramework { @@ -20,6 +22,9 @@ public class Storage : IStorage public Storage(IStorageContext storageContext) { + if (!(storageContext is DbContext)) + throw new ArgumentException("The storageContext object must be an instance of the Microsoft.EntityFrameworkCore.DbContext class."); + this.StorageContext = storageContext; } diff --git a/src/ExtCore.Data/ExtCore.Data.csproj b/src/ExtCore.Data/ExtCore.Data.csproj index 767bae4..0c3b330 100644 --- a/src/ExtCore.Data/ExtCore.Data.csproj +++ b/src/ExtCore.Data/ExtCore.Data.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data extension component. Based on the ExtCore framework. - 3.1.0-beta2 + 3.1.0-beta3 netcoreapp2.0 ExtCore.Data ExtCore.Data diff --git a/src/ExtCore.Data/Extension.cs b/src/ExtCore.Data/Extension.cs index 309dbc4..4ac2c82 100644 --- a/src/ExtCore.Data/Extension.cs +++ b/src/ExtCore.Data/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "3.1.0-beta2"; + public override string Version => "3.1.0-beta3"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Events/ExtCore.Events.csproj b/src/ExtCore.Events/ExtCore.Events.csproj index 5081d63..93f46bb 100644 --- a/src/ExtCore.Events/ExtCore.Events.csproj +++ b/src/ExtCore.Events/ExtCore.Events.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Events extension component. Based on the ExtCore framework. - 3.1.0-beta2 + 3.1.0-beta3 netcoreapp2.0 ExtCore.Events ExtCore.Events diff --git a/src/ExtCore.Events/Extension.cs b/src/ExtCore.Events/Extension.cs index d088b7c..829beb1 100644 --- a/src/ExtCore.Events/Extension.cs +++ b/src/ExtCore.Events/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "3.1.0-beta2"; + public override string Version => "3.1.0-beta3"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj b/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj index 73b31a6..e25a534 100644 --- a/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj +++ b/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky Free, open source and cross-platform framework for creating modular and extendable web applications based on ASP.NET Core. - 3.1.0-beta2 + 3.1.0-beta3 netcoreapp2.0 ExtCore.Infrastructure ExtCore.Infrastructure diff --git a/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj b/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj index 6a8e5f7..3f87f8d 100644 --- a/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj +++ b/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Mvc extension component. Based on the ExtCore framework. - 3.1.0-beta2 + 3.1.0-beta3 netcoreapp2.0 ExtCore.Mvc.Infrastructure ExtCore.Mvc.Infrastructure diff --git a/src/ExtCore.Mvc/ExtCore.Mvc.csproj b/src/ExtCore.Mvc/ExtCore.Mvc.csproj index 4205066..baac72e 100644 --- a/src/ExtCore.Mvc/ExtCore.Mvc.csproj +++ b/src/ExtCore.Mvc/ExtCore.Mvc.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Mvc extension component. Based on the ExtCore framework. - 3.1.0-beta2 + 3.1.0-beta3 netcoreapp2.0 ExtCore.Mvc ExtCore.Mvc diff --git a/src/ExtCore.Mvc/Extension.cs b/src/ExtCore.Mvc/Extension.cs index af642a7..76bfb72 100644 --- a/src/ExtCore.Mvc/Extension.cs +++ b/src/ExtCore.Mvc/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "3.1.0-beta2"; + public override string Version => "3.1.0-beta3"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj b/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj index 82a5703..fbfa3db 100644 --- a/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj +++ b/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky Free, open source and cross-platform framework for creating modular and extendable web applications based on ASP.NET Core. - 3.1.0-beta2 + 3.1.0-beta3 netcoreapp2.0 ExtCore.WebApplication ExtCore.WebApplication From 7987dc4d114fa22da4e354baa6f03876dc8983be Mon Sep 17 00:00:00 2001 From: Dmitry Sikorsky Date: Wed, 15 Nov 2017 17:34:44 +0200 Subject: [PATCH 32/81] Updated README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 7384908..5d94f5e 100644 --- a/README.md +++ b/README.md @@ -99,7 +99,7 @@ Please take a look at our samples on GitHub: * [ExtCore framework 3.0.0 sample simplest web application](https://github.com/ExtCore/ExtCore-Sample-Simplest); * [ExtCore framework 3.0.0 sample MVC web application](https://github.com/ExtCore/ExtCore-Sample-Mvc); * [ExtCore framework 3.0.0 sample web application that uses a database](https://github.com/ExtCore/ExtCore-Sample-Data); -* [ExtCore framework 3.1.0-beta2 sample web application that uses Identity](https://github.com/ExtCore/ExtCore-Sample-Identity); +* [ExtCore framework 3.1.0-beta3 sample web application that uses Identity](https://github.com/ExtCore/ExtCore-Sample-Identity); * [ExtCore framework 3.0.0 sample web application with modular UI](https://github.com/ExtCore/ExtCore-Sample-Modular-Ui); * [ExtCore framework 3.0.0 advanced sample web application with modular UI](https://github.com/ExtCore/ExtCore-Sample-Modular-Ui-Adv); * [ExtCore framework 3.0.0 advanced sample accounting web application](https://github.com/ExtCore/ExtCore-Sample-Accounting); From ba24d4febab8b4d0fb1243aa21856aa3f09ec6b0 Mon Sep 17 00:00:00 2001 From: Dmitry Sikorsky Date: Thu, 28 Dec 2017 11:36:44 +0200 Subject: [PATCH 33/81] Changed version to 3.1.0 --- README.md | 30 +++++++++---------- .../ExtCore.Data.Abstractions.csproj | 2 +- .../ExtCore.Data.Entities.Abstractions.csproj | 2 +- .../ExtCore.Data.EntityFramework.MySql.csproj | 2 +- ...ore.Data.EntityFramework.PostgreSql.csproj | 2 +- ...Core.Data.EntityFramework.SqlServer.csproj | 2 +- ...ExtCore.Data.EntityFramework.Sqlite.csproj | 2 +- .../ExtCore.Data.EntityFramework.csproj | 2 +- src/ExtCore.Data.EntityFramework/Extension.cs | 2 +- src/ExtCore.Data/ExtCore.Data.csproj | 2 +- src/ExtCore.Data/Extension.cs | 2 +- src/ExtCore.Events/ExtCore.Events.csproj | 2 +- src/ExtCore.Events/Extension.cs | 2 +- .../ExtCore.Infrastructure.csproj | 2 +- .../ExtCore.Mvc.Infrastructure.csproj | 2 +- src/ExtCore.Mvc/ExtCore.Mvc.csproj | 2 +- src/ExtCore.Mvc/Extension.cs | 2 +- .../ExtCore.WebApplication.csproj | 2 +- 18 files changed, 32 insertions(+), 32 deletions(-) diff --git a/README.md b/README.md index 5d94f5e..8311225 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# ExtCore 3.0.0 +# ExtCore 3.1.0 [![Join the chat at https://gitter.im/ExtCore/ExtCore](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/ExtCore/ExtCore?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) @@ -95,19 +95,19 @@ in order to execute some code inside the ConfigureServices and Configure methods Please take a look at our samples on GitHub: -* [Full-featured ExtCore 3.0.0 framework sample web application](https://github.com/ExtCore/ExtCore-Sample); -* [ExtCore framework 3.0.0 sample simplest web application](https://github.com/ExtCore/ExtCore-Sample-Simplest); -* [ExtCore framework 3.0.0 sample MVC web application](https://github.com/ExtCore/ExtCore-Sample-Mvc); -* [ExtCore framework 3.0.0 sample web application that uses a database](https://github.com/ExtCore/ExtCore-Sample-Data); -* [ExtCore framework 3.1.0-beta3 sample web application that uses Identity](https://github.com/ExtCore/ExtCore-Sample-Identity); -* [ExtCore framework 3.0.0 sample web application with modular UI](https://github.com/ExtCore/ExtCore-Sample-Modular-Ui); -* [ExtCore framework 3.0.0 advanced sample web application with modular UI](https://github.com/ExtCore/ExtCore-Sample-Modular-Ui-Adv); -* [ExtCore framework 3.0.0 advanced sample accounting web application](https://github.com/ExtCore/ExtCore-Sample-Accounting); -* [ExtCore framework 3.0.0 sample web application that registers a service inside the extension](https://github.com/ExtCore/ExtCore-Sample-Service); -* [ExtCore framework 3.0.0 sample web application that uses the events](https://github.com/ExtCore/ExtCore-Sample-Events); -* [ExtCore framework 3.0.0 sample API web application](https://github.com/ExtCore/ExtCore-Sample-Api). - -You can also download our [ready to use full-featured sample](http://extcore.net/files/ExtCore-Sample-3.0.0.zip). +* [Full-featured ExtCore 3.1.0 framework sample web application](https://github.com/ExtCore/ExtCore-Sample); +* [ExtCore framework 3.1.0 sample simplest web application](https://github.com/ExtCore/ExtCore-Sample-Simplest); +* [ExtCore framework 3.1.0 sample MVC web application](https://github.com/ExtCore/ExtCore-Sample-Mvc); +* [ExtCore framework 3.1.0 sample web application that uses a database](https://github.com/ExtCore/ExtCore-Sample-Data); +* [ExtCore framework 3.1.0 sample web application that uses Identity](https://github.com/ExtCore/ExtCore-Sample-Identity); +* [ExtCore framework 3.1.0 sample web application with modular UI](https://github.com/ExtCore/ExtCore-Sample-Modular-Ui); +* [ExtCore framework 3.1.0 advanced sample web application with modular UI](https://github.com/ExtCore/ExtCore-Sample-Modular-Ui-Adv); +* [ExtCore framework 3.1.0 advanced sample accounting web application](https://github.com/ExtCore/ExtCore-Sample-Accounting); +* [ExtCore framework 3.1.0 sample web application that registers a service inside the extension](https://github.com/ExtCore/ExtCore-Sample-Service); +* [ExtCore framework 3.1.0 sample web application that uses the events](https://github.com/ExtCore/ExtCore-Sample-Events); +* [ExtCore framework 3.1.0 sample API web application](https://github.com/ExtCore/ExtCore-Sample-Api). + +You can also download our [ready to use full-featured sample](http://extcore.net/files/ExtCore-Sample-3.1.0.zip). It contains everything you need to run ExtCore-based web application from Visual Studio 2017, including SQLite database with the test data. @@ -119,7 +119,7 @@ to help you start developing your ExtCore-based web applications. ### Real Projects Please take a look at [Platformus](https://github.com/Platformus/Platformus) on GitHub. It is CMS -built on ExtCore framework with more than 10 extensions and 70 projects. +built on ExtCore framework with more than 10 extensions and 80 projects. ## Development and Debug diff --git a/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj b/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj index 5dcedee..8c67071 100644 --- a/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj +++ b/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data extension component. Based on the ExtCore framework. - 3.1.0-beta3 + 3.1.0 netcoreapp2.0 ExtCore.Data.Abstractions ExtCore.Data.Abstractions diff --git a/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj b/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj index 0aa6733..250c5f4 100644 --- a/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj +++ b/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data extension component. Based on the ExtCore framework. - 3.1.0-beta3 + 3.1.0 netcoreapp2.0 ExtCore.Data.Entities.Abstractions ExtCore.Data.Entities.Abstractions diff --git a/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj b/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj index 52b30ad..60674a9 100644 --- a/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj +++ b/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 3.1.0-beta3 + 3.1.0 netcoreapp2.0 ExtCore.Data.EntityFramework.MySql ExtCore.Data.EntityFramework.MySql diff --git a/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj b/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj index 2f3ae1b..04c5b04 100644 --- a/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj +++ b/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 3.1.0-beta3 + 3.1.0 netcoreapp2.0 ExtCore.Data.EntityFramework.PostgreSql ExtCore.Data.EntityFramework.PostgreSql diff --git a/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj b/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj index 0d27f28..a0369e4 100644 --- a/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj +++ b/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 3.1.0-beta3 + 3.1.0 netcoreapp2.0 ExtCore.Data.EntityFramework.SqlServer ExtCore.Data.EntityFramework.SqlServer diff --git a/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj b/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj index 195735f..340eef9 100644 --- a/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj +++ b/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 3.1.0-beta3 + 3.1.0 netcoreapp2.0 ExtCore.Data.EntityFramework.Sqlite ExtCore.Data.EntityFramework.Sqlite diff --git a/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj b/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj index 4e4c92e..db99c98 100644 --- a/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj +++ b/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 3.1.0-beta3 + 3.1.0 netcoreapp2.0 ExtCore.Data.EntityFramework ExtCore.Data.EntityFramework diff --git a/src/ExtCore.Data.EntityFramework/Extension.cs b/src/ExtCore.Data.EntityFramework/Extension.cs index 587510d..cf62bf0 100644 --- a/src/ExtCore.Data.EntityFramework/Extension.cs +++ b/src/ExtCore.Data.EntityFramework/Extension.cs @@ -24,7 +24,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "3.1.0-beta3"; + public override string Version => "3.1.0"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Data/ExtCore.Data.csproj b/src/ExtCore.Data/ExtCore.Data.csproj index 0c3b330..12d031b 100644 --- a/src/ExtCore.Data/ExtCore.Data.csproj +++ b/src/ExtCore.Data/ExtCore.Data.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data extension component. Based on the ExtCore framework. - 3.1.0-beta3 + 3.1.0 netcoreapp2.0 ExtCore.Data ExtCore.Data diff --git a/src/ExtCore.Data/Extension.cs b/src/ExtCore.Data/Extension.cs index 4ac2c82..dff9860 100644 --- a/src/ExtCore.Data/Extension.cs +++ b/src/ExtCore.Data/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "3.1.0-beta3"; + public override string Version => "3.1.0"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Events/ExtCore.Events.csproj b/src/ExtCore.Events/ExtCore.Events.csproj index 93f46bb..30832c5 100644 --- a/src/ExtCore.Events/ExtCore.Events.csproj +++ b/src/ExtCore.Events/ExtCore.Events.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Events extension component. Based on the ExtCore framework. - 3.1.0-beta3 + 3.1.0 netcoreapp2.0 ExtCore.Events ExtCore.Events diff --git a/src/ExtCore.Events/Extension.cs b/src/ExtCore.Events/Extension.cs index 829beb1..39ce13c 100644 --- a/src/ExtCore.Events/Extension.cs +++ b/src/ExtCore.Events/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "3.1.0-beta3"; + public override string Version => "3.1.0"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj b/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj index e25a534..f2e160a 100644 --- a/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj +++ b/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky Free, open source and cross-platform framework for creating modular and extendable web applications based on ASP.NET Core. - 3.1.0-beta3 + 3.1.0 netcoreapp2.0 ExtCore.Infrastructure ExtCore.Infrastructure diff --git a/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj b/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj index 3f87f8d..4bbd902 100644 --- a/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj +++ b/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Mvc extension component. Based on the ExtCore framework. - 3.1.0-beta3 + 3.1.0 netcoreapp2.0 ExtCore.Mvc.Infrastructure ExtCore.Mvc.Infrastructure diff --git a/src/ExtCore.Mvc/ExtCore.Mvc.csproj b/src/ExtCore.Mvc/ExtCore.Mvc.csproj index baac72e..cc190ab 100644 --- a/src/ExtCore.Mvc/ExtCore.Mvc.csproj +++ b/src/ExtCore.Mvc/ExtCore.Mvc.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Mvc extension component. Based on the ExtCore framework. - 3.1.0-beta3 + 3.1.0 netcoreapp2.0 ExtCore.Mvc ExtCore.Mvc diff --git a/src/ExtCore.Mvc/Extension.cs b/src/ExtCore.Mvc/Extension.cs index 76bfb72..8357dd1 100644 --- a/src/ExtCore.Mvc/Extension.cs +++ b/src/ExtCore.Mvc/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "3.1.0-beta3"; + public override string Version => "3.1.0"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj b/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj index fbfa3db..7ca5d47 100644 --- a/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj +++ b/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky Free, open source and cross-platform framework for creating modular and extendable web applications based on ASP.NET Core. - 3.1.0-beta3 + 3.1.0 netcoreapp2.0 ExtCore.WebApplication ExtCore.WebApplication From 9e472a04da2f7fae000941f6dec14227767742e4 Mon Sep 17 00:00:00 2001 From: Dmitry Sikorsky Date: Thu, 28 Dec 2017 13:02:27 +0200 Subject: [PATCH 34/81] Updated .gitignore --- .gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 2cc1a2a..833b486 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,5 @@ bin/ obj/ pack.bat -push.bat \ No newline at end of file +push.bat +*.user \ No newline at end of file From 4d227b8aec4eeaf1a69f31ad137d90bd4d8e1928 Mon Sep 17 00:00:00 2001 From: Dmitry Sikorsky Date: Fri, 29 Dec 2017 17:56:26 +0200 Subject: [PATCH 35/81] Fixed #101 --- ExtCore.sln | 40 ++++++++++++++- .../ExtCore.Data.Abstractions.csproj | 4 +- .../ExtCore.Data.Dapper.MySql.csproj | 23 +++++++++ .../StorageContext.cs | 23 +++++++++ .../ExtCore.Data.Dapper.PostgreSql.csproj | 23 +++++++++ .../StorageContext.cs | 23 +++++++++ .../ExtCore.Data.Dapper.SqlServer.csproj | 19 +++++++ .../StorageContext.cs | 23 +++++++++ .../ExtCore.Data.Dapper.Sqlite.csproj | 19 +++++++ .../StorageContext.cs | 23 +++++++++ .../Actions/AddStorageContextAction.cs | 50 +++++++++++++++++++ .../ExtCore.Data.Dapper.csproj | 25 ++++++++++ src/ExtCore.Data.Dapper/Extension.cs | 34 +++++++++++++ src/ExtCore.Data.Dapper/RepositoryBase.cs | 28 +++++++++++ src/ExtCore.Data.Dapper/Storage.cs | 48 ++++++++++++++++++ src/ExtCore.Data.Dapper/StorageContextBase.cs | 29 +++++++++++ .../StorageContextOptions.cs | 16 ++++++ .../ExtCore.Data.Entities.Abstractions.csproj | 4 +- .../ExtCore.Data.EntityFramework.MySql.csproj | 4 +- ...ore.Data.EntityFramework.PostgreSql.csproj | 2 +- ...Core.Data.EntityFramework.SqlServer.csproj | 2 +- ...ExtCore.Data.EntityFramework.Sqlite.csproj | 2 +- .../ExtCore.Data.EntityFramework.csproj | 2 +- src/ExtCore.Data.EntityFramework/Extension.cs | 2 +- src/ExtCore.Data/ExtCore.Data.csproj | 2 +- src/ExtCore.Data/Extension.cs | 2 +- src/ExtCore.Events/ExtCore.Events.csproj | 2 +- src/ExtCore.Events/Extension.cs | 2 +- .../ExtCore.Infrastructure.csproj | 4 +- .../ExtCore.Mvc.Infrastructure.csproj | 2 +- src/ExtCore.Mvc/ExtCore.Mvc.csproj | 2 +- src/ExtCore.Mvc/Extension.cs | 2 +- .../ExtCore.WebApplication.csproj | 2 +- 33 files changed, 466 insertions(+), 22 deletions(-) create mode 100644 src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj create mode 100644 src/ExtCore.Data.Dapper.MySql/StorageContext.cs create mode 100644 src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj create mode 100644 src/ExtCore.Data.Dapper.PostgreSql/StorageContext.cs create mode 100644 src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj create mode 100644 src/ExtCore.Data.Dapper.SqlServer/StorageContext.cs create mode 100644 src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj create mode 100644 src/ExtCore.Data.Dapper.Sqlite/StorageContext.cs create mode 100644 src/ExtCore.Data.Dapper/Actions/AddStorageContextAction.cs create mode 100644 src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj create mode 100644 src/ExtCore.Data.Dapper/Extension.cs create mode 100644 src/ExtCore.Data.Dapper/RepositoryBase.cs create mode 100644 src/ExtCore.Data.Dapper/Storage.cs create mode 100644 src/ExtCore.Data.Dapper/StorageContextBase.cs create mode 100644 src/ExtCore.Data.Dapper/StorageContextOptions.cs diff --git a/ExtCore.sln b/ExtCore.sln index 0b06c20..1ff55e2 100644 --- a/ExtCore.sln +++ b/ExtCore.sln @@ -1,7 +1,7 @@  Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 15 -VisualStudioVersion = 15.0.26730.3 +VisualStudioVersion = 15.0.27130.2010 MinimumVisualStudioVersion = 10.0.40219.1 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{0D7AEFA3-ABB0-4AF1-A4C1-F8E05C241753}" EndProject @@ -39,6 +39,18 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Data.EntityFramework", "Dat EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ExtCore.Data.EntityFramework.MySql", "src\ExtCore.Data.EntityFramework.MySql\ExtCore.Data.EntityFramework.MySql.csproj", "{79A8C5FE-94FA-4D60-86C7-016EBF0386B4}" EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ExtCore.Data.Dapper", "src\ExtCore.Data.Dapper\ExtCore.Data.Dapper.csproj", "{976AD81D-4F7D-4A0C-9A2F-F665566EA5A9}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ExtCore.Data.Dapper.MySql", "src\ExtCore.Data.Dapper.MySql\ExtCore.Data.Dapper.MySql.csproj", "{F27A3AE9-718C-4539-B541-4F37D16E4463}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ExtCore.Data.Dapper.PostgreSql", "src\ExtCore.Data.Dapper.PostgreSql\ExtCore.Data.Dapper.PostgreSql.csproj", "{7B7A5A6C-DB45-4056-B5C7-4286D16220DE}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ExtCore.Data.Dapper.SqlServer", "src\ExtCore.Data.Dapper.SqlServer\ExtCore.Data.Dapper.SqlServer.csproj", "{E588921B-5E74-45E8-841B-2654D2416D9F}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ExtCore.Data.Dapper.Sqlite", "src\ExtCore.Data.Dapper.Sqlite\ExtCore.Data.Dapper.Sqlite.csproj", "{693AB050-3305-471C-90C3-816BD694A930}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Data.Dapper", "Data.Dapper", "{8C720480-750C-44C1-945B-961599088853}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -97,6 +109,26 @@ Global {79A8C5FE-94FA-4D60-86C7-016EBF0386B4}.Debug|Any CPU.Build.0 = Debug|Any CPU {79A8C5FE-94FA-4D60-86C7-016EBF0386B4}.Release|Any CPU.ActiveCfg = Release|Any CPU {79A8C5FE-94FA-4D60-86C7-016EBF0386B4}.Release|Any CPU.Build.0 = Release|Any CPU + {976AD81D-4F7D-4A0C-9A2F-F665566EA5A9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {976AD81D-4F7D-4A0C-9A2F-F665566EA5A9}.Debug|Any CPU.Build.0 = Debug|Any CPU + {976AD81D-4F7D-4A0C-9A2F-F665566EA5A9}.Release|Any CPU.ActiveCfg = Release|Any CPU + {976AD81D-4F7D-4A0C-9A2F-F665566EA5A9}.Release|Any CPU.Build.0 = Release|Any CPU + {F27A3AE9-718C-4539-B541-4F37D16E4463}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F27A3AE9-718C-4539-B541-4F37D16E4463}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F27A3AE9-718C-4539-B541-4F37D16E4463}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F27A3AE9-718C-4539-B541-4F37D16E4463}.Release|Any CPU.Build.0 = Release|Any CPU + {7B7A5A6C-DB45-4056-B5C7-4286D16220DE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7B7A5A6C-DB45-4056-B5C7-4286D16220DE}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7B7A5A6C-DB45-4056-B5C7-4286D16220DE}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7B7A5A6C-DB45-4056-B5C7-4286D16220DE}.Release|Any CPU.Build.0 = Release|Any CPU + {E588921B-5E74-45E8-841B-2654D2416D9F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E588921B-5E74-45E8-841B-2654D2416D9F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E588921B-5E74-45E8-841B-2654D2416D9F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E588921B-5E74-45E8-841B-2654D2416D9F}.Release|Any CPU.Build.0 = Release|Any CPU + {693AB050-3305-471C-90C3-816BD694A930}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {693AB050-3305-471C-90C3-816BD694A930}.Debug|Any CPU.Build.0 = Debug|Any CPU + {693AB050-3305-471C-90C3-816BD694A930}.Release|Any CPU.ActiveCfg = Release|Any CPU + {693AB050-3305-471C-90C3-816BD694A930}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -119,6 +151,12 @@ Global {A97967FC-B333-4C27-BAFE-4369C7695688} = {DD95EC14-4783-4E08-A5EC-6C110DC7FB01} {A770A286-2B75-4BF7-8300-24CEC8D072AD} = {0D7AEFA3-ABB0-4AF1-A4C1-F8E05C241753} {79A8C5FE-94FA-4D60-86C7-016EBF0386B4} = {A770A286-2B75-4BF7-8300-24CEC8D072AD} + {976AD81D-4F7D-4A0C-9A2F-F665566EA5A9} = {8C720480-750C-44C1-945B-961599088853} + {F27A3AE9-718C-4539-B541-4F37D16E4463} = {8C720480-750C-44C1-945B-961599088853} + {7B7A5A6C-DB45-4056-B5C7-4286D16220DE} = {8C720480-750C-44C1-945B-961599088853} + {E588921B-5E74-45E8-841B-2654D2416D9F} = {8C720480-750C-44C1-945B-961599088853} + {693AB050-3305-471C-90C3-816BD694A930} = {8C720480-750C-44C1-945B-961599088853} + {8C720480-750C-44C1-945B-961599088853} = {0D7AEFA3-ABB0-4AF1-A4C1-F8E05C241753} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {DF807CB9-3F57-4CF4-B501-26F9D4BB417C} diff --git a/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj b/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj index 8c67071..221bc64 100644 --- a/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj +++ b/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data extension component. Based on the ExtCore framework. - 3.1.0 + 3.2.0-beta1 netcoreapp2.0 ExtCore.Data.Abstractions ExtCore.Data.Abstractions @@ -13,7 +13,7 @@ - + diff --git a/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj b/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj new file mode 100644 index 0000000..306a7ee --- /dev/null +++ b/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj @@ -0,0 +1,23 @@ + + + + Dmitry Sikorsky + Copyright © 2017 Dmitry Sikorsky + The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. + 3.2.0-beta1 + netcoreapp2.0 + ExtCore.Data.Dapper.MySql + ExtCore.Data.Dapper.MySql + http://extcore.net/extcore_nuget_icon.png + http://extcore.net/ + + + + + + + + + + + diff --git a/src/ExtCore.Data.Dapper.MySql/StorageContext.cs b/src/ExtCore.Data.Dapper.MySql/StorageContext.cs new file mode 100644 index 0000000..5f5b3bb --- /dev/null +++ b/src/ExtCore.Data.Dapper.MySql/StorageContext.cs @@ -0,0 +1,23 @@ +// Copyright © 2017 Dmitry Sikorsky. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using Microsoft.Extensions.Options; + +namespace ExtCore.Data.Dapper.MySql +{ + /// + /// Implements the IStorageContext interface and represents MySQL database + /// with the Dapper as the ORM. + /// + public class StorageContext : StorageContextBase + { + /// + /// Initializes a new instance of the StorageContext class. + /// + /// The connection string that is used to connect to the MySQL database. + public StorageContext(IOptions options) + : base(options) + { + } + } +} \ No newline at end of file diff --git a/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj b/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj new file mode 100644 index 0000000..39eca69 --- /dev/null +++ b/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj @@ -0,0 +1,23 @@ + + + + Dmitry Sikorsky + Copyright © 2017 Dmitry Sikorsky + The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. + 3.2.0-beta1 + netcoreapp2.0 + ExtCore.Data.Dapper.PostgreSql + ExtCore.Data.Dapper.PostgreSql + http://extcore.net/extcore_nuget_icon.png + http://extcore.net/ + + + + + + + + + + + diff --git a/src/ExtCore.Data.Dapper.PostgreSql/StorageContext.cs b/src/ExtCore.Data.Dapper.PostgreSql/StorageContext.cs new file mode 100644 index 0000000..f5c25ed --- /dev/null +++ b/src/ExtCore.Data.Dapper.PostgreSql/StorageContext.cs @@ -0,0 +1,23 @@ +// Copyright © 2017 Dmitry Sikorsky. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using Microsoft.Extensions.Options; + +namespace ExtCore.Data.Dapper.PostgreSql +{ + /// + /// Implements the IStorageContext interface and represents PostgreSQL database + /// with the Dapper as the ORM. + /// + public class StorageContext : StorageContextBase + { + /// + /// Initializes a new instance of the StorageContext class. + /// + /// The connection string that is used to connect to the PostgreSQL database. + public StorageContext(IOptions options) + : base(options) + { + } + } +} \ No newline at end of file diff --git a/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj b/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj new file mode 100644 index 0000000..fde4158 --- /dev/null +++ b/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj @@ -0,0 +1,19 @@ + + + + Dmitry Sikorsky + Copyright © 2017 Dmitry Sikorsky + The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. + 3.2.0-beta1 + netcoreapp2.0 + ExtCore.Data.Dapper.SqlServer + ExtCore.Data.Dapper.SqlServer + http://extcore.net/extcore_nuget_icon.png + http://extcore.net/ + + + + + + + diff --git a/src/ExtCore.Data.Dapper.SqlServer/StorageContext.cs b/src/ExtCore.Data.Dapper.SqlServer/StorageContext.cs new file mode 100644 index 0000000..83381cb --- /dev/null +++ b/src/ExtCore.Data.Dapper.SqlServer/StorageContext.cs @@ -0,0 +1,23 @@ +// Copyright © 2017 Dmitry Sikorsky. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using Microsoft.Extensions.Options; + +namespace ExtCore.Data.Dapper.SqlServer +{ + /// + /// Implements the IStorageContext interface and represents SQL Server database + /// with the Dapper as the ORM. + /// + public class StorageContext : StorageContextBase + { + /// + /// Initializes a new instance of the StorageContext class. + /// + /// The connection string that is used to connect to the SQL Server database. + public StorageContext(IOptions options) + : base(options) + { + } + } +} \ No newline at end of file diff --git a/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj b/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj new file mode 100644 index 0000000..c4ae7fc --- /dev/null +++ b/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj @@ -0,0 +1,19 @@ + + + + Dmitry Sikorsky + Copyright © 2017 Dmitry Sikorsky + The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. + 3.2.0-beta1 + netcoreapp2.0 + ExtCore.Data.Dapper.Sqlite + ExtCore.Data.Dapper.Sqlite + http://extcore.net/extcore_nuget_icon.png + http://extcore.net/ + + + + + + + diff --git a/src/ExtCore.Data.Dapper.Sqlite/StorageContext.cs b/src/ExtCore.Data.Dapper.Sqlite/StorageContext.cs new file mode 100644 index 0000000..8364d39 --- /dev/null +++ b/src/ExtCore.Data.Dapper.Sqlite/StorageContext.cs @@ -0,0 +1,23 @@ +// Copyright © 2017 Dmitry Sikorsky. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using Microsoft.Extensions.Options; + +namespace ExtCore.Data.Dapper.Sqlite +{ + /// + /// Implements the IStorageContext interface and represents SQLite database + /// with the Dapper as the ORM. + /// + public class StorageContext : StorageContextBase + { + /// + /// Initializes a new instance of the StorageContext class. + /// + /// The connection string that is used to connect to the SQLite database. + public StorageContext(IOptions options) + : base(options) + { + } + } +} \ No newline at end of file diff --git a/src/ExtCore.Data.Dapper/Actions/AddStorageContextAction.cs b/src/ExtCore.Data.Dapper/Actions/AddStorageContextAction.cs new file mode 100644 index 0000000..26b83b2 --- /dev/null +++ b/src/ExtCore.Data.Dapper/Actions/AddStorageContextAction.cs @@ -0,0 +1,50 @@ +// Copyright © 2017 Dmitry Sikorsky. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Linq; +using System.Reflection; +using ExtCore.Data.Abstractions; +using ExtCore.Infrastructure; +using ExtCore.Infrastructure.Actions; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Logging; + +namespace ExtCore.Data.Dapper.Actions +{ + /// + /// Implements the IConfigureServicesAction interface and + /// registers found implementation of the IStorageContext interface inside the DI. + /// + public class AddStorageContextAction : IConfigureServicesAction + { + /// + /// Priority of the action. The actions will be executed in the order specified by the priority (from smallest to largest). + /// + public int Priority => 1000; + + /// + /// Registers found implementation of the IStorageContext interface inside the DI. + /// + /// + /// Will be provided by the ExtCore and might be used to register any service inside the DI. + /// + /// + /// Will be provided by the ExtCore and might be used to get any service that is registered inside the DI at this moment. + /// + public void Execute(IServiceCollection services, IServiceProvider serviceProvider) + { + Type type = ExtensionManager.GetImplementations()?.FirstOrDefault(t => !t.GetTypeInfo().IsAbstract); + + if (type == null) + { + ILogger logger = serviceProvider.GetService().CreateLogger("ExtCore.Data.Dapper"); + + logger.LogError("Implementation of ExtCore.Data.Abstractions.IStorageContext not found"); + return; + } + + services.AddScoped(typeof(IStorageContext), type); + } + } +} \ No newline at end of file diff --git a/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj b/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj new file mode 100644 index 0000000..0e0730c --- /dev/null +++ b/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj @@ -0,0 +1,25 @@ + + + + Dmitry Sikorsky + Copyright © 2017 Dmitry Sikorsky + The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. + 3.2.0-beta1 + netcoreapp2.0 + ExtCore.Data.EntityFramework + ExtCore.Data.EntityFramework + http://extcore.net/extcore_nuget_icon.png + http://extcore.net/ + + + + + + + + + + + + + diff --git a/src/ExtCore.Data.Dapper/Extension.cs b/src/ExtCore.Data.Dapper/Extension.cs new file mode 100644 index 0000000..5062410 --- /dev/null +++ b/src/ExtCore.Data.Dapper/Extension.cs @@ -0,0 +1,34 @@ +// Copyright © 2017 Dmitry Sikorsky. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using ExtCore.Infrastructure; + +namespace ExtCore.Data.Dapper +{ + /// + /// Overrides the ExtensionBase class and provides the + /// ExtCore.Data.Dapper extension information. + /// + public class Extension : ExtensionBase + { + /// + /// Gets the name of the extension. + /// + public override string Name => "ExtCore.Data.Dapper"; + + /// + /// Gets the URL of the extension. + /// + public override string Url => "http://extcore.net/"; + + /// + /// Gets the version of the extension. + /// + public override string Version => "3.2.0-beta1"; + + /// + /// Gets the authors of the extension (separated by commas). + /// + public override string Authors => "Dmitry Sikorsky"; + } +} \ No newline at end of file diff --git a/src/ExtCore.Data.Dapper/RepositoryBase.cs b/src/ExtCore.Data.Dapper/RepositoryBase.cs new file mode 100644 index 0000000..ff57599 --- /dev/null +++ b/src/ExtCore.Data.Dapper/RepositoryBase.cs @@ -0,0 +1,28 @@ +// Copyright © 2017 Dmitry Sikorsky. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using ExtCore.Data.Abstractions; +using ExtCore.Data.Entities.Abstractions; + +namespace ExtCore.Data.Dapper +{ + /// + /// Implements the IRepository interface and represents default repository behavior. + /// + /// The entity type this repository operates. + public abstract class RepositoryBase : IRepository where TEntity : class, IEntity + { + protected IStorageContext storageContext; + protected string connectionString; + + /// + /// Sets the Dapper storage context that represents the physical storage to work with. + /// + /// The Dapper storage context to set. + public void SetStorageContext(IStorageContext storageContext) + { + this.storageContext = storageContext; + this.connectionString = (storageContext as StorageContextBase).ConnectionString; + } + } +} \ No newline at end of file diff --git a/src/ExtCore.Data.Dapper/Storage.cs b/src/ExtCore.Data.Dapper/Storage.cs new file mode 100644 index 0000000..e018c76 --- /dev/null +++ b/src/ExtCore.Data.Dapper/Storage.cs @@ -0,0 +1,48 @@ +// Copyright © 2017 Dmitry Sikorsky. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using ExtCore.Data.Abstractions; +using ExtCore.Infrastructure; + +namespace ExtCore.Data.Dapper +{ + /// + /// Implements the IStorage interface and represents implementation of the + /// Unit of Work design pattern with the mechanism of getting the repositories to work with the underlying + /// Dapper storage context and committing the changes made by all the repositories. + /// + public class Storage : IStorage + { + /// + /// Gets the Dapper storage context. + /// + public IStorageContext StorageContext { get; private set; } + + public Storage(IStorageContext storageContext) + { + this.StorageContext = storageContext; + } + + /// + /// Gets a repository of the given type. + /// + /// The type parameter to find implementation of. + /// + public TRepository GetRepository() where TRepository : IRepository + { + TRepository repository = ExtensionManager.GetInstance(); + + if (repository != null) + repository.SetStorageContext(this.StorageContext); + + return repository; + } + + /// + /// Commits the changes made by all the repositories. + /// + public void Save() + { + } + } +} \ No newline at end of file diff --git a/src/ExtCore.Data.Dapper/StorageContextBase.cs b/src/ExtCore.Data.Dapper/StorageContextBase.cs new file mode 100644 index 0000000..d8677bc --- /dev/null +++ b/src/ExtCore.Data.Dapper/StorageContextBase.cs @@ -0,0 +1,29 @@ +// Copyright © 2017 Dmitry Sikorsky. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using ExtCore.Data.Abstractions; +using Microsoft.Extensions.Options; + +namespace ExtCore.Data.Dapper +{ + /// + /// Implements the IStorageContext interface and represents the physical storage + /// with the Dapper Core as the ORM. + /// + public abstract class StorageContextBase : IStorageContext + { + /// + /// The connection string that is used to connect to the physical storage. + /// + public string ConnectionString { get; private set; } + + /// + /// Initializes a new instance of the StorageContext class. + /// + /// The connection string that is used to connect to the physical storage. + public StorageContextBase(IOptions options) + { + this.ConnectionString = options.Value.ConnectionString; + } + } +} \ No newline at end of file diff --git a/src/ExtCore.Data.Dapper/StorageContextOptions.cs b/src/ExtCore.Data.Dapper/StorageContextOptions.cs new file mode 100644 index 0000000..e22b924 --- /dev/null +++ b/src/ExtCore.Data.Dapper/StorageContextOptions.cs @@ -0,0 +1,16 @@ +// Copyright © 2017 Dmitry Sikorsky. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +namespace ExtCore.Data.Dapper +{ + /// + /// Represents Dapper storage context options. + /// + public class StorageContextOptions + { + /// + /// The connection string that is used to connect to the physical storage. + /// + public string ConnectionString { get; set; } + } +} \ No newline at end of file diff --git a/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj b/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj index 250c5f4..90fc635 100644 --- a/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj +++ b/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data extension component. Based on the ExtCore framework. - 3.1.0 + 3.2.0-beta1 netcoreapp2.0 ExtCore.Data.Entities.Abstractions ExtCore.Data.Entities.Abstractions @@ -13,7 +13,7 @@ - + diff --git a/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj b/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj index 60674a9..fa8689e 100644 --- a/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj +++ b/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 3.1.0 + 3.2.0-beta1 netcoreapp2.0 ExtCore.Data.EntityFramework.MySql ExtCore.Data.EntityFramework.MySql @@ -13,7 +13,7 @@ - + diff --git a/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj b/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj index 04c5b04..6f530cb 100644 --- a/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj +++ b/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 3.1.0 + 3.2.0-beta1 netcoreapp2.0 ExtCore.Data.EntityFramework.PostgreSql ExtCore.Data.EntityFramework.PostgreSql diff --git a/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj b/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj index a0369e4..1cb9e1e 100644 --- a/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj +++ b/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 3.1.0 + 3.2.0-beta1 netcoreapp2.0 ExtCore.Data.EntityFramework.SqlServer ExtCore.Data.EntityFramework.SqlServer diff --git a/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj b/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj index 340eef9..35f48c1 100644 --- a/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj +++ b/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 3.1.0 + 3.2.0-beta1 netcoreapp2.0 ExtCore.Data.EntityFramework.Sqlite ExtCore.Data.EntityFramework.Sqlite diff --git a/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj b/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj index db99c98..bf22a24 100644 --- a/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj +++ b/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 3.1.0 + 3.2.0-beta1 netcoreapp2.0 ExtCore.Data.EntityFramework ExtCore.Data.EntityFramework diff --git a/src/ExtCore.Data.EntityFramework/Extension.cs b/src/ExtCore.Data.EntityFramework/Extension.cs index cf62bf0..3d5041d 100644 --- a/src/ExtCore.Data.EntityFramework/Extension.cs +++ b/src/ExtCore.Data.EntityFramework/Extension.cs @@ -24,7 +24,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "3.1.0"; + public override string Version => "3.2.0-beta1"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Data/ExtCore.Data.csproj b/src/ExtCore.Data/ExtCore.Data.csproj index 12d031b..8e9e360 100644 --- a/src/ExtCore.Data/ExtCore.Data.csproj +++ b/src/ExtCore.Data/ExtCore.Data.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data extension component. Based on the ExtCore framework. - 3.1.0 + 3.2.0-beta1 netcoreapp2.0 ExtCore.Data ExtCore.Data diff --git a/src/ExtCore.Data/Extension.cs b/src/ExtCore.Data/Extension.cs index dff9860..e3b6e03 100644 --- a/src/ExtCore.Data/Extension.cs +++ b/src/ExtCore.Data/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "3.1.0"; + public override string Version => "3.2.0-beta1"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Events/ExtCore.Events.csproj b/src/ExtCore.Events/ExtCore.Events.csproj index 30832c5..49035ef 100644 --- a/src/ExtCore.Events/ExtCore.Events.csproj +++ b/src/ExtCore.Events/ExtCore.Events.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Events extension component. Based on the ExtCore framework. - 3.1.0 + 3.2.0-beta1 netcoreapp2.0 ExtCore.Events ExtCore.Events diff --git a/src/ExtCore.Events/Extension.cs b/src/ExtCore.Events/Extension.cs index 39ce13c..01f8c76 100644 --- a/src/ExtCore.Events/Extension.cs +++ b/src/ExtCore.Events/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "3.1.0"; + public override string Version => "3.2.0-beta1"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj b/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj index f2e160a..e673c47 100644 --- a/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj +++ b/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky Free, open source and cross-platform framework for creating modular and extendable web applications based on ASP.NET Core. - 3.1.0 + 3.2.0-beta1 netcoreapp2.0 ExtCore.Infrastructure ExtCore.Infrastructure @@ -13,7 +13,7 @@ - + diff --git a/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj b/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj index 4bbd902..2dd5aeb 100644 --- a/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj +++ b/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Mvc extension component. Based on the ExtCore framework. - 3.1.0 + 3.2.0-beta1 netcoreapp2.0 ExtCore.Mvc.Infrastructure ExtCore.Mvc.Infrastructure diff --git a/src/ExtCore.Mvc/ExtCore.Mvc.csproj b/src/ExtCore.Mvc/ExtCore.Mvc.csproj index cc190ab..02e3026 100644 --- a/src/ExtCore.Mvc/ExtCore.Mvc.csproj +++ b/src/ExtCore.Mvc/ExtCore.Mvc.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Mvc extension component. Based on the ExtCore framework. - 3.1.0 + 3.2.0-beta1 netcoreapp2.0 ExtCore.Mvc ExtCore.Mvc diff --git a/src/ExtCore.Mvc/Extension.cs b/src/ExtCore.Mvc/Extension.cs index 8357dd1..1e6a9c9 100644 --- a/src/ExtCore.Mvc/Extension.cs +++ b/src/ExtCore.Mvc/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "3.1.0"; + public override string Version => "3.2.0-beta1"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj b/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj index 7ca5d47..dd62aa0 100644 --- a/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj +++ b/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky Free, open source and cross-platform framework for creating modular and extendable web applications based on ASP.NET Core. - 3.1.0 + 3.2.0-beta1 netcoreapp2.0 ExtCore.WebApplication ExtCore.WebApplication From 287cdd8b64bc681143db29234539811cabc19f31 Mon Sep 17 00:00:00 2001 From: Dmitry Sikorsky Date: Fri, 29 Dec 2017 18:27:01 +0200 Subject: [PATCH 36/81] Changed version to 3.2.0-beta2 --- .../ExtCore.Data.Abstractions.csproj | 2 +- .../ExtCore.Data.Dapper.MySql.csproj | 2 +- .../ExtCore.Data.Dapper.PostgreSql.csproj | 2 +- .../ExtCore.Data.Dapper.SqlServer.csproj | 2 +- .../ExtCore.Data.Dapper.Sqlite.csproj | 2 +- src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj | 8 ++++---- src/ExtCore.Data.Dapper/Extension.cs | 2 +- .../ExtCore.Data.Entities.Abstractions.csproj | 2 +- .../ExtCore.Data.EntityFramework.MySql.csproj | 2 +- .../ExtCore.Data.EntityFramework.PostgreSql.csproj | 2 +- .../ExtCore.Data.EntityFramework.SqlServer.csproj | 2 +- .../ExtCore.Data.EntityFramework.Sqlite.csproj | 2 +- .../ExtCore.Data.EntityFramework.csproj | 2 +- src/ExtCore.Data.EntityFramework/Extension.cs | 2 +- src/ExtCore.Data/ExtCore.Data.csproj | 2 +- src/ExtCore.Data/Extension.cs | 2 +- src/ExtCore.Events/ExtCore.Events.csproj | 2 +- src/ExtCore.Events/Extension.cs | 2 +- src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj | 2 +- .../ExtCore.Mvc.Infrastructure.csproj | 2 +- src/ExtCore.Mvc/ExtCore.Mvc.csproj | 2 +- src/ExtCore.Mvc/Extension.cs | 2 +- src/ExtCore.WebApplication/ExtCore.WebApplication.csproj | 2 +- 23 files changed, 26 insertions(+), 26 deletions(-) diff --git a/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj b/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj index 221bc64..f331da0 100644 --- a/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj +++ b/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data extension component. Based on the ExtCore framework. - 3.2.0-beta1 + 3.2.0-beta2 netcoreapp2.0 ExtCore.Data.Abstractions ExtCore.Data.Abstractions diff --git a/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj b/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj index 306a7ee..72c0930 100644 --- a/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj +++ b/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 3.2.0-beta1 + 3.2.0-beta2 netcoreapp2.0 ExtCore.Data.Dapper.MySql ExtCore.Data.Dapper.MySql diff --git a/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj b/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj index 39eca69..021ad88 100644 --- a/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj +++ b/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 3.2.0-beta1 + 3.2.0-beta2 netcoreapp2.0 ExtCore.Data.Dapper.PostgreSql ExtCore.Data.Dapper.PostgreSql diff --git a/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj b/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj index fde4158..b991474 100644 --- a/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj +++ b/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 3.2.0-beta1 + 3.2.0-beta2 netcoreapp2.0 ExtCore.Data.Dapper.SqlServer ExtCore.Data.Dapper.SqlServer diff --git a/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj b/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj index c4ae7fc..9fd8d05 100644 --- a/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj +++ b/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 3.2.0-beta1 + 3.2.0-beta2 netcoreapp2.0 ExtCore.Data.Dapper.Sqlite ExtCore.Data.Dapper.Sqlite diff --git a/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj b/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj index 0e0730c..b744d8d 100644 --- a/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj +++ b/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj @@ -3,11 +3,11 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky - The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 3.2.0-beta1 + The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. + 3.2.0-beta2 netcoreapp2.0 - ExtCore.Data.EntityFramework - ExtCore.Data.EntityFramework + ExtCore.Data.Dapper + ExtCore.Data.Dapper http://extcore.net/extcore_nuget_icon.png http://extcore.net/ diff --git a/src/ExtCore.Data.Dapper/Extension.cs b/src/ExtCore.Data.Dapper/Extension.cs index 5062410..274f613 100644 --- a/src/ExtCore.Data.Dapper/Extension.cs +++ b/src/ExtCore.Data.Dapper/Extension.cs @@ -24,7 +24,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "3.2.0-beta1"; + public override string Version => "3.2.0-beta2"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj b/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj index 90fc635..2ae22fe 100644 --- a/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj +++ b/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data extension component. Based on the ExtCore framework. - 3.2.0-beta1 + 3.2.0-beta2 netcoreapp2.0 ExtCore.Data.Entities.Abstractions ExtCore.Data.Entities.Abstractions diff --git a/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj b/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj index fa8689e..ab29a6d 100644 --- a/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj +++ b/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 3.2.0-beta1 + 3.2.0-beta2 netcoreapp2.0 ExtCore.Data.EntityFramework.MySql ExtCore.Data.EntityFramework.MySql diff --git a/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj b/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj index 6f530cb..6e7892f 100644 --- a/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj +++ b/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 3.2.0-beta1 + 3.2.0-beta2 netcoreapp2.0 ExtCore.Data.EntityFramework.PostgreSql ExtCore.Data.EntityFramework.PostgreSql diff --git a/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj b/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj index 1cb9e1e..b499a1a 100644 --- a/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj +++ b/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 3.2.0-beta1 + 3.2.0-beta2 netcoreapp2.0 ExtCore.Data.EntityFramework.SqlServer ExtCore.Data.EntityFramework.SqlServer diff --git a/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj b/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj index 35f48c1..6f8ed6b 100644 --- a/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj +++ b/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 3.2.0-beta1 + 3.2.0-beta2 netcoreapp2.0 ExtCore.Data.EntityFramework.Sqlite ExtCore.Data.EntityFramework.Sqlite diff --git a/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj b/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj index bf22a24..8efcc79 100644 --- a/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj +++ b/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 3.2.0-beta1 + 3.2.0-beta2 netcoreapp2.0 ExtCore.Data.EntityFramework ExtCore.Data.EntityFramework diff --git a/src/ExtCore.Data.EntityFramework/Extension.cs b/src/ExtCore.Data.EntityFramework/Extension.cs index 3d5041d..6864181 100644 --- a/src/ExtCore.Data.EntityFramework/Extension.cs +++ b/src/ExtCore.Data.EntityFramework/Extension.cs @@ -24,7 +24,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "3.2.0-beta1"; + public override string Version => "3.2.0-beta2"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Data/ExtCore.Data.csproj b/src/ExtCore.Data/ExtCore.Data.csproj index 8e9e360..bf4887a 100644 --- a/src/ExtCore.Data/ExtCore.Data.csproj +++ b/src/ExtCore.Data/ExtCore.Data.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data extension component. Based on the ExtCore framework. - 3.2.0-beta1 + 3.2.0-beta2 netcoreapp2.0 ExtCore.Data ExtCore.Data diff --git a/src/ExtCore.Data/Extension.cs b/src/ExtCore.Data/Extension.cs index e3b6e03..05022b7 100644 --- a/src/ExtCore.Data/Extension.cs +++ b/src/ExtCore.Data/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "3.2.0-beta1"; + public override string Version => "3.2.0-beta2"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Events/ExtCore.Events.csproj b/src/ExtCore.Events/ExtCore.Events.csproj index 49035ef..5ecc017 100644 --- a/src/ExtCore.Events/ExtCore.Events.csproj +++ b/src/ExtCore.Events/ExtCore.Events.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Events extension component. Based on the ExtCore framework. - 3.2.0-beta1 + 3.2.0-beta2 netcoreapp2.0 ExtCore.Events ExtCore.Events diff --git a/src/ExtCore.Events/Extension.cs b/src/ExtCore.Events/Extension.cs index 01f8c76..35c5415 100644 --- a/src/ExtCore.Events/Extension.cs +++ b/src/ExtCore.Events/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "3.2.0-beta1"; + public override string Version => "3.2.0-beta2"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj b/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj index e673c47..0e9e5c4 100644 --- a/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj +++ b/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky Free, open source and cross-platform framework for creating modular and extendable web applications based on ASP.NET Core. - 3.2.0-beta1 + 3.2.0-beta2 netcoreapp2.0 ExtCore.Infrastructure ExtCore.Infrastructure diff --git a/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj b/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj index 2dd5aeb..74288c7 100644 --- a/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj +++ b/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Mvc extension component. Based on the ExtCore framework. - 3.2.0-beta1 + 3.2.0-beta2 netcoreapp2.0 ExtCore.Mvc.Infrastructure ExtCore.Mvc.Infrastructure diff --git a/src/ExtCore.Mvc/ExtCore.Mvc.csproj b/src/ExtCore.Mvc/ExtCore.Mvc.csproj index 02e3026..5d9dd54 100644 --- a/src/ExtCore.Mvc/ExtCore.Mvc.csproj +++ b/src/ExtCore.Mvc/ExtCore.Mvc.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Mvc extension component. Based on the ExtCore framework. - 3.2.0-beta1 + 3.2.0-beta2 netcoreapp2.0 ExtCore.Mvc ExtCore.Mvc diff --git a/src/ExtCore.Mvc/Extension.cs b/src/ExtCore.Mvc/Extension.cs index 1e6a9c9..15298c7 100644 --- a/src/ExtCore.Mvc/Extension.cs +++ b/src/ExtCore.Mvc/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "3.2.0-beta1"; + public override string Version => "3.2.0-beta2"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj b/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj index dd62aa0..344aa59 100644 --- a/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj +++ b/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky Free, open source and cross-platform framework for creating modular and extendable web applications based on ASP.NET Core. - 3.2.0-beta1 + 3.2.0-beta2 netcoreapp2.0 ExtCore.WebApplication ExtCore.WebApplication From 5e5eaa436b503c71e65a91093e1373931b694c82 Mon Sep 17 00:00:00 2001 From: Dmitry Sikorsky Date: Mon, 15 Jan 2018 19:00:06 +0200 Subject: [PATCH 37/81] Fixed #104 --- src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj | 2 +- src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj | 2 +- .../ExtCore.Data.Dapper.PostgreSql.csproj | 2 +- .../ExtCore.Data.Dapper.SqlServer.csproj | 2 +- .../ExtCore.Data.Dapper.Sqlite.csproj | 2 +- src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj | 2 +- src/ExtCore.Data.Dapper/Extension.cs | 2 +- .../ExtCore.Data.Entities.Abstractions.csproj | 2 +- .../ExtCore.Data.EntityFramework.MySql.csproj | 2 +- .../ExtCore.Data.EntityFramework.PostgreSql.csproj | 2 +- .../ExtCore.Data.EntityFramework.SqlServer.csproj | 2 +- .../ExtCore.Data.EntityFramework.Sqlite.csproj | 2 +- .../ExtCore.Data.EntityFramework.csproj | 2 +- src/ExtCore.Data.EntityFramework/Extension.cs | 2 +- src/ExtCore.Data.EntityFramework/Storage.cs | 2 +- src/ExtCore.Data/ExtCore.Data.csproj | 2 +- src/ExtCore.Data/Extension.cs | 2 +- src/ExtCore.Events/ExtCore.Events.csproj | 2 +- src/ExtCore.Events/Extension.cs | 2 +- src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj | 2 +- .../ExtCore.Mvc.Infrastructure.csproj | 2 +- src/ExtCore.Mvc/ExtCore.Mvc.csproj | 2 +- src/ExtCore.Mvc/Extension.cs | 2 +- src/ExtCore.WebApplication/ExtCore.WebApplication.csproj | 2 +- 24 files changed, 24 insertions(+), 24 deletions(-) diff --git a/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj b/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj index f331da0..1be553f 100644 --- a/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj +++ b/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data extension component. Based on the ExtCore framework. - 3.2.0-beta2 + 3.2.0-beta3 netcoreapp2.0 ExtCore.Data.Abstractions ExtCore.Data.Abstractions diff --git a/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj b/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj index 72c0930..9ec0876 100644 --- a/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj +++ b/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 3.2.0-beta2 + 3.2.0-beta3 netcoreapp2.0 ExtCore.Data.Dapper.MySql ExtCore.Data.Dapper.MySql diff --git a/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj b/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj index 021ad88..f8538b1 100644 --- a/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj +++ b/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 3.2.0-beta2 + 3.2.0-beta3 netcoreapp2.0 ExtCore.Data.Dapper.PostgreSql ExtCore.Data.Dapper.PostgreSql diff --git a/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj b/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj index b991474..08958eb 100644 --- a/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj +++ b/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 3.2.0-beta2 + 3.2.0-beta3 netcoreapp2.0 ExtCore.Data.Dapper.SqlServer ExtCore.Data.Dapper.SqlServer diff --git a/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj b/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj index 9fd8d05..6ba0eaa 100644 --- a/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj +++ b/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 3.2.0-beta2 + 3.2.0-beta3 netcoreapp2.0 ExtCore.Data.Dapper.Sqlite ExtCore.Data.Dapper.Sqlite diff --git a/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj b/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj index b744d8d..fcec5d3 100644 --- a/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj +++ b/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 3.2.0-beta2 + 3.2.0-beta3 netcoreapp2.0 ExtCore.Data.Dapper ExtCore.Data.Dapper diff --git a/src/ExtCore.Data.Dapper/Extension.cs b/src/ExtCore.Data.Dapper/Extension.cs index 274f613..fff4673 100644 --- a/src/ExtCore.Data.Dapper/Extension.cs +++ b/src/ExtCore.Data.Dapper/Extension.cs @@ -24,7 +24,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "3.2.0-beta2"; + public override string Version => "3.2.0-beta3"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj b/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj index 2ae22fe..4f83faf 100644 --- a/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj +++ b/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data extension component. Based on the ExtCore framework. - 3.2.0-beta2 + 3.2.0-beta3 netcoreapp2.0 ExtCore.Data.Entities.Abstractions ExtCore.Data.Entities.Abstractions diff --git a/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj b/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj index ab29a6d..430948e 100644 --- a/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj +++ b/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 3.2.0-beta2 + 3.2.0-beta3 netcoreapp2.0 ExtCore.Data.EntityFramework.MySql ExtCore.Data.EntityFramework.MySql diff --git a/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj b/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj index 6e7892f..f54d7fe 100644 --- a/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj +++ b/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 3.2.0-beta2 + 3.2.0-beta3 netcoreapp2.0 ExtCore.Data.EntityFramework.PostgreSql ExtCore.Data.EntityFramework.PostgreSql diff --git a/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj b/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj index b499a1a..4947238 100644 --- a/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj +++ b/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 3.2.0-beta2 + 3.2.0-beta3 netcoreapp2.0 ExtCore.Data.EntityFramework.SqlServer ExtCore.Data.EntityFramework.SqlServer diff --git a/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj b/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj index 6f8ed6b..bb00206 100644 --- a/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj +++ b/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 3.2.0-beta2 + 3.2.0-beta3 netcoreapp2.0 ExtCore.Data.EntityFramework.Sqlite ExtCore.Data.EntityFramework.Sqlite diff --git a/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj b/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj index 8efcc79..84f64f0 100644 --- a/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj +++ b/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 3.2.0-beta2 + 3.2.0-beta3 netcoreapp2.0 ExtCore.Data.EntityFramework ExtCore.Data.EntityFramework diff --git a/src/ExtCore.Data.EntityFramework/Extension.cs b/src/ExtCore.Data.EntityFramework/Extension.cs index 6864181..669ca45 100644 --- a/src/ExtCore.Data.EntityFramework/Extension.cs +++ b/src/ExtCore.Data.EntityFramework/Extension.cs @@ -24,7 +24,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "3.2.0-beta2"; + public override string Version => "3.2.0-beta3"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Data.EntityFramework/Storage.cs b/src/ExtCore.Data.EntityFramework/Storage.cs index 4f240dc..267e010 100644 --- a/src/ExtCore.Data.EntityFramework/Storage.cs +++ b/src/ExtCore.Data.EntityFramework/Storage.cs @@ -48,7 +48,7 @@ public TRepository GetRepository() where TRepository : IRepository /// public void Save() { - (this.StorageContext as StorageContextBase).SaveChanges(); + (this.StorageContext as DbContext).SaveChanges(); } } } \ No newline at end of file diff --git a/src/ExtCore.Data/ExtCore.Data.csproj b/src/ExtCore.Data/ExtCore.Data.csproj index bf4887a..bbeb90a 100644 --- a/src/ExtCore.Data/ExtCore.Data.csproj +++ b/src/ExtCore.Data/ExtCore.Data.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data extension component. Based on the ExtCore framework. - 3.2.0-beta2 + 3.2.0-beta3 netcoreapp2.0 ExtCore.Data ExtCore.Data diff --git a/src/ExtCore.Data/Extension.cs b/src/ExtCore.Data/Extension.cs index 05022b7..8495256 100644 --- a/src/ExtCore.Data/Extension.cs +++ b/src/ExtCore.Data/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "3.2.0-beta2"; + public override string Version => "3.2.0-beta3"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Events/ExtCore.Events.csproj b/src/ExtCore.Events/ExtCore.Events.csproj index 5ecc017..6fec398 100644 --- a/src/ExtCore.Events/ExtCore.Events.csproj +++ b/src/ExtCore.Events/ExtCore.Events.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Events extension component. Based on the ExtCore framework. - 3.2.0-beta2 + 3.2.0-beta3 netcoreapp2.0 ExtCore.Events ExtCore.Events diff --git a/src/ExtCore.Events/Extension.cs b/src/ExtCore.Events/Extension.cs index 35c5415..4537e50 100644 --- a/src/ExtCore.Events/Extension.cs +++ b/src/ExtCore.Events/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "3.2.0-beta2"; + public override string Version => "3.2.0-beta3"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj b/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj index 0e9e5c4..44f8fbb 100644 --- a/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj +++ b/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky Free, open source and cross-platform framework for creating modular and extendable web applications based on ASP.NET Core. - 3.2.0-beta2 + 3.2.0-beta3 netcoreapp2.0 ExtCore.Infrastructure ExtCore.Infrastructure diff --git a/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj b/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj index 74288c7..c41546f 100644 --- a/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj +++ b/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Mvc extension component. Based on the ExtCore framework. - 3.2.0-beta2 + 3.2.0-beta3 netcoreapp2.0 ExtCore.Mvc.Infrastructure ExtCore.Mvc.Infrastructure diff --git a/src/ExtCore.Mvc/ExtCore.Mvc.csproj b/src/ExtCore.Mvc/ExtCore.Mvc.csproj index 5d9dd54..77b2c21 100644 --- a/src/ExtCore.Mvc/ExtCore.Mvc.csproj +++ b/src/ExtCore.Mvc/ExtCore.Mvc.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Mvc extension component. Based on the ExtCore framework. - 3.2.0-beta2 + 3.2.0-beta3 netcoreapp2.0 ExtCore.Mvc ExtCore.Mvc diff --git a/src/ExtCore.Mvc/Extension.cs b/src/ExtCore.Mvc/Extension.cs index 15298c7..214e52b 100644 --- a/src/ExtCore.Mvc/Extension.cs +++ b/src/ExtCore.Mvc/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "3.2.0-beta2"; + public override string Version => "3.2.0-beta3"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj b/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj index 344aa59..04c427c 100644 --- a/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj +++ b/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky Free, open source and cross-platform framework for creating modular and extendable web applications based on ASP.NET Core. - 3.2.0-beta2 + 3.2.0-beta3 netcoreapp2.0 ExtCore.WebApplication ExtCore.WebApplication From c11eedb681bdef9c4cc231ca51be4042efced596 Mon Sep 17 00:00:00 2001 From: Dmitry Sikorsky Date: Sat, 3 Mar 2018 20:47:19 +0200 Subject: [PATCH 38/81] Changed version to 3.2.0, updated other packages --- README.md | 28 +++++++++---------- .../ExtCore.Data.Abstractions.csproj | 4 +-- .../ExtCore.Data.Dapper.MySql.csproj | 4 +-- .../ExtCore.Data.Dapper.PostgreSql.csproj | 4 +-- .../ExtCore.Data.Dapper.SqlServer.csproj | 2 +- .../ExtCore.Data.Dapper.Sqlite.csproj | 2 +- .../ExtCore.Data.Dapper.csproj | 2 +- src/ExtCore.Data.Dapper/Extension.cs | 2 +- .../ExtCore.Data.Entities.Abstractions.csproj | 4 +-- .../ExtCore.Data.EntityFramework.MySql.csproj | 4 +-- .../StorageContext.cs | 1 - ...ore.Data.EntityFramework.PostgreSql.csproj | 4 +-- ...Core.Data.EntityFramework.SqlServer.csproj | 2 +- ...ExtCore.Data.EntityFramework.Sqlite.csproj | 2 +- .../ExtCore.Data.EntityFramework.csproj | 2 +- src/ExtCore.Data.EntityFramework/Extension.cs | 2 +- src/ExtCore.Data/ExtCore.Data.csproj | 2 +- src/ExtCore.Data/Extension.cs | 2 +- src/ExtCore.Events/ExtCore.Events.csproj | 2 +- src/ExtCore.Events/Extension.cs | 2 +- .../ExtCore.Infrastructure.csproj | 4 +-- .../ExtCore.Mvc.Infrastructure.csproj | 2 +- src/ExtCore.Mvc/ExtCore.Mvc.csproj | 2 +- src/ExtCore.Mvc/Extension.cs | 2 +- .../ExtCore.WebApplication.csproj | 2 +- 25 files changed, 44 insertions(+), 45 deletions(-) diff --git a/README.md b/README.md index 8311225..9befd69 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# ExtCore 3.1.0 +# ExtCore 3.2.0 [![Join the chat at https://gitter.im/ExtCore/ExtCore](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/ExtCore/ExtCore?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) @@ -95,19 +95,19 @@ in order to execute some code inside the ConfigureServices and Configure methods Please take a look at our samples on GitHub: -* [Full-featured ExtCore 3.1.0 framework sample web application](https://github.com/ExtCore/ExtCore-Sample); -* [ExtCore framework 3.1.0 sample simplest web application](https://github.com/ExtCore/ExtCore-Sample-Simplest); -* [ExtCore framework 3.1.0 sample MVC web application](https://github.com/ExtCore/ExtCore-Sample-Mvc); -* [ExtCore framework 3.1.0 sample web application that uses a database](https://github.com/ExtCore/ExtCore-Sample-Data); -* [ExtCore framework 3.1.0 sample web application that uses Identity](https://github.com/ExtCore/ExtCore-Sample-Identity); -* [ExtCore framework 3.1.0 sample web application with modular UI](https://github.com/ExtCore/ExtCore-Sample-Modular-Ui); -* [ExtCore framework 3.1.0 advanced sample web application with modular UI](https://github.com/ExtCore/ExtCore-Sample-Modular-Ui-Adv); -* [ExtCore framework 3.1.0 advanced sample accounting web application](https://github.com/ExtCore/ExtCore-Sample-Accounting); -* [ExtCore framework 3.1.0 sample web application that registers a service inside the extension](https://github.com/ExtCore/ExtCore-Sample-Service); -* [ExtCore framework 3.1.0 sample web application that uses the events](https://github.com/ExtCore/ExtCore-Sample-Events); -* [ExtCore framework 3.1.0 sample API web application](https://github.com/ExtCore/ExtCore-Sample-Api). - -You can also download our [ready to use full-featured sample](http://extcore.net/files/ExtCore-Sample-3.1.0.zip). +* [Full-featured ExtCore 3.2.0 framework sample web application](https://github.com/ExtCore/ExtCore-Sample); +* [ExtCore framework 3.2.0 sample simplest web application](https://github.com/ExtCore/ExtCore-Sample-Simplest); +* [ExtCore framework 3.2.0 sample MVC web application](https://github.com/ExtCore/ExtCore-Sample-Mvc); +* [ExtCore framework 3.2.0 sample web application that uses a database](https://github.com/ExtCore/ExtCore-Sample-Data); +* [ExtCore framework 3.2.0 sample web application that uses Identity](https://github.com/ExtCore/ExtCore-Sample-Identity); +* [ExtCore framework 3.2.0 sample web application with modular UI](https://github.com/ExtCore/ExtCore-Sample-Modular-Ui); +* [ExtCore framework 3.2.0 advanced sample web application with modular UI](https://github.com/ExtCore/ExtCore-Sample-Modular-Ui-Adv); +* [ExtCore framework 3.2.0 advanced sample accounting web application](https://github.com/ExtCore/ExtCore-Sample-Accounting); +* [ExtCore framework 3.2.0 sample web application that registers a service inside the extension](https://github.com/ExtCore/ExtCore-Sample-Service); +* [ExtCore framework 3.2.0 sample web application that uses the events](https://github.com/ExtCore/ExtCore-Sample-Events); +* [ExtCore framework 3.2.0 sample API web application](https://github.com/ExtCore/ExtCore-Sample-Api). + +You can also download our [ready to use full-featured sample](http://extcore.net/files/ExtCore-Sample-3.2.0.zip). It contains everything you need to run ExtCore-based web application from Visual Studio 2017, including SQLite database with the test data. diff --git a/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj b/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj index 1be553f..8708957 100644 --- a/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj +++ b/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data extension component. Based on the ExtCore framework. - 3.2.0-beta3 + 3.2.0 netcoreapp2.0 ExtCore.Data.Abstractions ExtCore.Data.Abstractions @@ -13,7 +13,7 @@ - + diff --git a/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj b/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj index 9ec0876..385ddc6 100644 --- a/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj +++ b/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 3.2.0-beta3 + 3.2.0 netcoreapp2.0 ExtCore.Data.Dapper.MySql ExtCore.Data.Dapper.MySql @@ -13,7 +13,7 @@ - + diff --git a/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj b/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj index f8538b1..7a9362a 100644 --- a/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj +++ b/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 3.2.0-beta3 + 3.2.0 netcoreapp2.0 ExtCore.Data.Dapper.PostgreSql ExtCore.Data.Dapper.PostgreSql @@ -13,7 +13,7 @@ - + diff --git a/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj b/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj index 08958eb..0386ad0 100644 --- a/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj +++ b/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 3.2.0-beta3 + 3.2.0 netcoreapp2.0 ExtCore.Data.Dapper.SqlServer ExtCore.Data.Dapper.SqlServer diff --git a/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj b/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj index 6ba0eaa..33757c2 100644 --- a/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj +++ b/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 3.2.0-beta3 + 3.2.0 netcoreapp2.0 ExtCore.Data.Dapper.Sqlite ExtCore.Data.Dapper.Sqlite diff --git a/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj b/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj index fcec5d3..893eff6 100644 --- a/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj +++ b/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 3.2.0-beta3 + 3.2.0 netcoreapp2.0 ExtCore.Data.Dapper ExtCore.Data.Dapper diff --git a/src/ExtCore.Data.Dapper/Extension.cs b/src/ExtCore.Data.Dapper/Extension.cs index fff4673..b4badee 100644 --- a/src/ExtCore.Data.Dapper/Extension.cs +++ b/src/ExtCore.Data.Dapper/Extension.cs @@ -24,7 +24,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "3.2.0-beta3"; + public override string Version => "3.2.0"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj b/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj index 4f83faf..3e83c66 100644 --- a/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj +++ b/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data extension component. Based on the ExtCore framework. - 3.2.0-beta3 + 3.2.0 netcoreapp2.0 ExtCore.Data.Entities.Abstractions ExtCore.Data.Entities.Abstractions @@ -13,7 +13,7 @@ - + diff --git a/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj b/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj index 430948e..91a6cfa 100644 --- a/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj +++ b/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 3.2.0-beta3 + 3.2.0 netcoreapp2.0 ExtCore.Data.EntityFramework.MySql ExtCore.Data.EntityFramework.MySql @@ -13,7 +13,7 @@ - + diff --git a/src/ExtCore.Data.EntityFramework.MySql/StorageContext.cs b/src/ExtCore.Data.EntityFramework.MySql/StorageContext.cs index 2c4212a..af4d89a 100644 --- a/src/ExtCore.Data.EntityFramework.MySql/StorageContext.cs +++ b/src/ExtCore.Data.EntityFramework.MySql/StorageContext.cs @@ -3,7 +3,6 @@ using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Options; -using MySQL.Data.EntityFrameworkCore.Extensions; namespace ExtCore.Data.EntityFramework.MySql { diff --git a/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj b/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj index f54d7fe..2bd49b5 100644 --- a/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj +++ b/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 3.2.0-beta3 + 3.2.0 netcoreapp2.0 ExtCore.Data.EntityFramework.PostgreSql ExtCore.Data.EntityFramework.PostgreSql @@ -13,7 +13,7 @@ - + diff --git a/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj b/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj index 4947238..98fee49 100644 --- a/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj +++ b/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 3.2.0-beta3 + 3.2.0 netcoreapp2.0 ExtCore.Data.EntityFramework.SqlServer ExtCore.Data.EntityFramework.SqlServer diff --git a/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj b/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj index bb00206..7ca0716 100644 --- a/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj +++ b/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 3.2.0-beta3 + 3.2.0 netcoreapp2.0 ExtCore.Data.EntityFramework.Sqlite ExtCore.Data.EntityFramework.Sqlite diff --git a/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj b/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj index 84f64f0..335f44b 100644 --- a/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj +++ b/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 3.2.0-beta3 + 3.2.0 netcoreapp2.0 ExtCore.Data.EntityFramework ExtCore.Data.EntityFramework diff --git a/src/ExtCore.Data.EntityFramework/Extension.cs b/src/ExtCore.Data.EntityFramework/Extension.cs index 669ca45..1a766b5 100644 --- a/src/ExtCore.Data.EntityFramework/Extension.cs +++ b/src/ExtCore.Data.EntityFramework/Extension.cs @@ -24,7 +24,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "3.2.0-beta3"; + public override string Version => "3.2.0"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Data/ExtCore.Data.csproj b/src/ExtCore.Data/ExtCore.Data.csproj index bbeb90a..a687e00 100644 --- a/src/ExtCore.Data/ExtCore.Data.csproj +++ b/src/ExtCore.Data/ExtCore.Data.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data extension component. Based on the ExtCore framework. - 3.2.0-beta3 + 3.2.0 netcoreapp2.0 ExtCore.Data ExtCore.Data diff --git a/src/ExtCore.Data/Extension.cs b/src/ExtCore.Data/Extension.cs index 8495256..b57f929 100644 --- a/src/ExtCore.Data/Extension.cs +++ b/src/ExtCore.Data/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "3.2.0-beta3"; + public override string Version => "3.2.0"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Events/ExtCore.Events.csproj b/src/ExtCore.Events/ExtCore.Events.csproj index 6fec398..4c465b1 100644 --- a/src/ExtCore.Events/ExtCore.Events.csproj +++ b/src/ExtCore.Events/ExtCore.Events.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Events extension component. Based on the ExtCore framework. - 3.2.0-beta3 + 3.2.0 netcoreapp2.0 ExtCore.Events ExtCore.Events diff --git a/src/ExtCore.Events/Extension.cs b/src/ExtCore.Events/Extension.cs index 4537e50..9373dc0 100644 --- a/src/ExtCore.Events/Extension.cs +++ b/src/ExtCore.Events/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "3.2.0-beta3"; + public override string Version => "3.2.0"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj b/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj index 44f8fbb..1f62536 100644 --- a/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj +++ b/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky Free, open source and cross-platform framework for creating modular and extendable web applications based on ASP.NET Core. - 3.2.0-beta3 + 3.2.0 netcoreapp2.0 ExtCore.Infrastructure ExtCore.Infrastructure @@ -13,7 +13,7 @@ - + diff --git a/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj b/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj index c41546f..18ad116 100644 --- a/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj +++ b/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Mvc extension component. Based on the ExtCore framework. - 3.2.0-beta3 + 3.2.0 netcoreapp2.0 ExtCore.Mvc.Infrastructure ExtCore.Mvc.Infrastructure diff --git a/src/ExtCore.Mvc/ExtCore.Mvc.csproj b/src/ExtCore.Mvc/ExtCore.Mvc.csproj index 77b2c21..2fa96e1 100644 --- a/src/ExtCore.Mvc/ExtCore.Mvc.csproj +++ b/src/ExtCore.Mvc/ExtCore.Mvc.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Mvc extension component. Based on the ExtCore framework. - 3.2.0-beta3 + 3.2.0 netcoreapp2.0 ExtCore.Mvc ExtCore.Mvc diff --git a/src/ExtCore.Mvc/Extension.cs b/src/ExtCore.Mvc/Extension.cs index 214e52b..5469baf 100644 --- a/src/ExtCore.Mvc/Extension.cs +++ b/src/ExtCore.Mvc/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "3.2.0-beta3"; + public override string Version => "3.2.0"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj b/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj index 04c427c..a6e1ffc 100644 --- a/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj +++ b/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky Free, open source and cross-platform framework for creating modular and extendable web applications based on ASP.NET Core. - 3.2.0-beta3 + 3.2.0 netcoreapp2.0 ExtCore.WebApplication ExtCore.WebApplication From 287ef003d3e368b7fe468dc044bcf396a95268d8 Mon Sep 17 00:00:00 2001 From: Dmitry Sikorsky Date: Fri, 8 Jun 2018 13:53:48 +0300 Subject: [PATCH 39/81] Updated to use ASP.NET Core 2.1, fixed #123 --- ExtCore.sln | 2 +- README.md | 2 +- .../ExtCore.Data.Abstractions.csproj | 6 +++--- .../ExtCore.Data.Dapper.MySql.csproj | 6 +++--- .../ExtCore.Data.Dapper.PostgreSql.csproj | 6 +++--- .../ExtCore.Data.Dapper.SqlServer.csproj | 4 ++-- .../ExtCore.Data.Dapper.Sqlite.csproj | 8 ++++++-- src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj | 6 +++--- .../ExtCore.Data.Entities.Abstractions.csproj | 6 +++--- .../ExtCore.Data.EntityFramework.MySql.csproj | 6 +++--- .../ExtCore.Data.EntityFramework.PostgreSql.csproj | 6 +++--- .../ExtCore.Data.EntityFramework.SqlServer.csproj | 4 ++-- .../ExtCore.Data.EntityFramework.Sqlite.csproj | 8 ++++++-- .../ExtCore.Data.EntityFramework.csproj | 4 ++-- src/ExtCore.Data/ExtCore.Data.csproj | 4 ++-- src/ExtCore.Events/ExtCore.Events.csproj | 4 ++-- src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj | 6 +++--- src/ExtCore.Infrastructure/ExtensionManager.cs | 7 ++++--- .../ExtCore.Mvc.Infrastructure.csproj | 4 ++-- src/ExtCore.Mvc/ExtCore.Mvc.csproj | 4 ++-- src/ExtCore.WebApplication/ExtCore.WebApplication.csproj | 4 ++-- 21 files changed, 58 insertions(+), 49 deletions(-) diff --git a/ExtCore.sln b/ExtCore.sln index 1ff55e2..06d2279 100644 --- a/ExtCore.sln +++ b/ExtCore.sln @@ -1,7 +1,7 @@  Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 15 -VisualStudioVersion = 15.0.27130.2010 +VisualStudioVersion = 15.0.27703.2026 MinimumVisualStudioVersion = 10.0.40219.1 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{0D7AEFA3-ABB0-4AF1-A4C1-F8E05C241753}" EndProject diff --git a/README.md b/README.md index 9befd69..79d9314 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# ExtCore 3.2.0 +# ExtCore 3.3.0-beta1 [![Join the chat at https://gitter.im/ExtCore/ExtCore](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/ExtCore/ExtCore?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) diff --git a/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj b/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj index 8708957..72c5cb0 100644 --- a/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj +++ b/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj @@ -4,8 +4,8 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data extension component. Based on the ExtCore framework. - 3.2.0 - netcoreapp2.0 + 3.3.0-beta1 + netcoreapp2.1 ExtCore.Data.Abstractions ExtCore.Data.Abstractions http://extcore.net/extcore_nuget_icon.png @@ -13,7 +13,7 @@ - + diff --git a/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj b/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj index 385ddc6..ac43760 100644 --- a/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj +++ b/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj @@ -4,8 +4,8 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 3.2.0 - netcoreapp2.0 + 3.3.0-beta1 + netcoreapp2.1 ExtCore.Data.Dapper.MySql ExtCore.Data.Dapper.MySql http://extcore.net/extcore_nuget_icon.png @@ -13,7 +13,7 @@ - + diff --git a/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj b/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj index 7a9362a..53971c2 100644 --- a/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj +++ b/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj @@ -4,8 +4,8 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 3.2.0 - netcoreapp2.0 + 3.3.0-beta1 + netcoreapp2.1 ExtCore.Data.Dapper.PostgreSql ExtCore.Data.Dapper.PostgreSql http://extcore.net/extcore_nuget_icon.png @@ -13,7 +13,7 @@ - + diff --git a/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj b/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj index 0386ad0..4e39ea3 100644 --- a/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj +++ b/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj @@ -4,8 +4,8 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 3.2.0 - netcoreapp2.0 + 3.3.0-beta1 + netcoreapp2.1 ExtCore.Data.Dapper.SqlServer ExtCore.Data.Dapper.SqlServer http://extcore.net/extcore_nuget_icon.png diff --git a/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj b/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj index 33757c2..d35ed19 100644 --- a/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj +++ b/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj @@ -4,14 +4,18 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 3.2.0 - netcoreapp2.0 + 3.3.0-beta1 + netcoreapp2.1 ExtCore.Data.Dapper.Sqlite ExtCore.Data.Dapper.Sqlite http://extcore.net/extcore_nuget_icon.png http://extcore.net/ + + + + diff --git a/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj b/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj index 893eff6..3584eaa 100644 --- a/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj +++ b/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj @@ -4,8 +4,8 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 3.2.0 - netcoreapp2.0 + 3.3.0-beta1 + netcoreapp2.1 ExtCore.Data.Dapper ExtCore.Data.Dapper http://extcore.net/extcore_nuget_icon.png @@ -13,7 +13,7 @@ - + diff --git a/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj b/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj index 3e83c66..8b22aba 100644 --- a/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj +++ b/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj @@ -4,8 +4,8 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data extension component. Based on the ExtCore framework. - 3.2.0 - netcoreapp2.0 + 3.3.0-beta1 + netcoreapp2.1 ExtCore.Data.Entities.Abstractions ExtCore.Data.Entities.Abstractions http://extcore.net/extcore_nuget_icon.png @@ -13,7 +13,7 @@ - + diff --git a/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj b/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj index 91a6cfa..0142ddf 100644 --- a/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj +++ b/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj @@ -4,8 +4,8 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 3.2.0 - netcoreapp2.0 + 3.3.0-beta1 + netcoreapp2.1 ExtCore.Data.EntityFramework.MySql ExtCore.Data.EntityFramework.MySql http://extcore.net/extcore_nuget_icon.png @@ -13,7 +13,7 @@ - + diff --git a/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj b/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj index 2bd49b5..89324a1 100644 --- a/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj +++ b/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj @@ -4,8 +4,8 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 3.2.0 - netcoreapp2.0 + 3.3.0-beta1 + netcoreapp2.1 ExtCore.Data.EntityFramework.PostgreSql ExtCore.Data.EntityFramework.PostgreSql http://extcore.net/extcore_nuget_icon.png @@ -13,7 +13,7 @@ - + diff --git a/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj b/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj index 98fee49..e3ab809 100644 --- a/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj +++ b/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj @@ -4,8 +4,8 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 3.2.0 - netcoreapp2.0 + 3.3.0-beta1 + netcoreapp2.1 ExtCore.Data.EntityFramework.SqlServer ExtCore.Data.EntityFramework.SqlServer http://extcore.net/extcore_nuget_icon.png diff --git a/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj b/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj index 7ca0716..3e00594 100644 --- a/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj +++ b/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj @@ -4,14 +4,18 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 3.2.0 - netcoreapp2.0 + 3.3.0-beta1 + netcoreapp2.1 ExtCore.Data.EntityFramework.Sqlite ExtCore.Data.EntityFramework.Sqlite http://extcore.net/extcore_nuget_icon.png http://extcore.net/ + + + + diff --git a/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj b/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj index 335f44b..78304bd 100644 --- a/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj +++ b/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj @@ -4,8 +4,8 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 3.2.0 - netcoreapp2.0 + 3.3.0-beta1 + netcoreapp2.1 ExtCore.Data.EntityFramework ExtCore.Data.EntityFramework http://extcore.net/extcore_nuget_icon.png diff --git a/src/ExtCore.Data/ExtCore.Data.csproj b/src/ExtCore.Data/ExtCore.Data.csproj index a687e00..60219dd 100644 --- a/src/ExtCore.Data/ExtCore.Data.csproj +++ b/src/ExtCore.Data/ExtCore.Data.csproj @@ -4,8 +4,8 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data extension component. Based on the ExtCore framework. - 3.2.0 - netcoreapp2.0 + 3.3.0-beta1 + netcoreapp2.1 ExtCore.Data ExtCore.Data http://extcore.net/extcore_nuget_icon.png diff --git a/src/ExtCore.Events/ExtCore.Events.csproj b/src/ExtCore.Events/ExtCore.Events.csproj index 4c465b1..fc15625 100644 --- a/src/ExtCore.Events/ExtCore.Events.csproj +++ b/src/ExtCore.Events/ExtCore.Events.csproj @@ -4,8 +4,8 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Events extension component. Based on the ExtCore framework. - 3.2.0 - netcoreapp2.0 + 3.3.0-beta1 + netcoreapp2.1 ExtCore.Events ExtCore.Events http://extcore.net/extcore_nuget_icon.png diff --git a/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj b/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj index 1f62536..b34dda2 100644 --- a/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj +++ b/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj @@ -4,8 +4,8 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky Free, open source and cross-platform framework for creating modular and extendable web applications based on ASP.NET Core. - 3.2.0 - netcoreapp2.0 + 3.3.0-beta1 + netcoreapp2.1 ExtCore.Infrastructure ExtCore.Infrastructure http://extcore.net/extcore_nuget_icon.png @@ -13,7 +13,7 @@ - + diff --git a/src/ExtCore.Infrastructure/ExtensionManager.cs b/src/ExtCore.Infrastructure/ExtensionManager.cs index f818719..9b48ab6 100644 --- a/src/ExtCore.Infrastructure/ExtensionManager.cs +++ b/src/ExtCore.Infrastructure/ExtensionManager.cs @@ -2,6 +2,7 @@ // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System; +using System.Collections.Concurrent; using System.Collections.Generic; using System.Linq; using System.Reflection; @@ -15,7 +16,7 @@ namespace ExtCore.Infrastructure public static class ExtensionManager { private static IEnumerable assemblies; - private static IDictionary> types; + private static ConcurrentDictionary> types; /// /// Gets the cached assemblies that have been set by the SetAssemblies method. @@ -35,7 +36,7 @@ public static IEnumerable Assemblies public static void SetAssemblies(IEnumerable assemblies) { ExtensionManager.assemblies = assemblies; - ExtensionManager.types = new Dictionary>(); + ExtensionManager.types = new ConcurrentDictionary>(); } /// @@ -108,7 +109,7 @@ public static IEnumerable GetImplementations(Func predi implementations.Add(exportedType); if (useCaching) - ExtensionManager.types.Add(type, implementations); + ExtensionManager.types[type] = implementations; return implementations; } diff --git a/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj b/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj index 18ad116..340e2e7 100644 --- a/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj +++ b/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj @@ -4,8 +4,8 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Mvc extension component. Based on the ExtCore framework. - 3.2.0 - netcoreapp2.0 + 3.3.0-beta1 + netcoreapp2.1 ExtCore.Mvc.Infrastructure ExtCore.Mvc.Infrastructure http://extcore.net/extcore_nuget_icon.png diff --git a/src/ExtCore.Mvc/ExtCore.Mvc.csproj b/src/ExtCore.Mvc/ExtCore.Mvc.csproj index 2fa96e1..884b578 100644 --- a/src/ExtCore.Mvc/ExtCore.Mvc.csproj +++ b/src/ExtCore.Mvc/ExtCore.Mvc.csproj @@ -4,8 +4,8 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Mvc extension component. Based on the ExtCore framework. - 3.2.0 - netcoreapp2.0 + 3.3.0-beta1 + netcoreapp2.1 ExtCore.Mvc ExtCore.Mvc http://extcore.net/extcore_nuget_icon.png diff --git a/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj b/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj index a6e1ffc..143f57e 100644 --- a/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj +++ b/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj @@ -4,8 +4,8 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky Free, open source and cross-platform framework for creating modular and extendable web applications based on ASP.NET Core. - 3.2.0 - netcoreapp2.0 + 3.3.0-beta1 + netcoreapp2.1 ExtCore.WebApplication ExtCore.WebApplication http://extcore.net/extcore_nuget_icon.png From 3e555fc149bc6fa54960eb57b1dd7d9160d1f77e Mon Sep 17 00:00:00 2001 From: Dmitry Sikorsky Date: Fri, 8 Jun 2018 17:12:03 +0300 Subject: [PATCH 40/81] Fixed dependencies version --- .../ExtCore.Data.Abstractions.csproj | 4 ++-- .../ExtCore.Data.Dapper.MySql.csproj | 2 +- .../ExtCore.Data.Dapper.PostgreSql.csproj | 2 +- .../ExtCore.Data.Dapper.SqlServer.csproj | 2 +- .../ExtCore.Data.Dapper.Sqlite.csproj | 2 +- src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj | 2 +- .../ExtCore.Data.Entities.Abstractions.csproj | 4 ++-- .../ExtCore.Data.EntityFramework.MySql.csproj | 2 +- .../ExtCore.Data.EntityFramework.PostgreSql.csproj | 2 +- .../ExtCore.Data.EntityFramework.SqlServer.csproj | 2 +- .../ExtCore.Data.EntityFramework.Sqlite.csproj | 2 +- .../ExtCore.Data.EntityFramework.csproj | 2 +- src/ExtCore.Data/ExtCore.Data.csproj | 2 +- src/ExtCore.Events/ExtCore.Events.csproj | 2 +- src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj | 4 ++-- .../ExtCore.Mvc.Infrastructure.csproj | 2 +- src/ExtCore.Mvc/ExtCore.Mvc.csproj | 2 +- src/ExtCore.WebApplication/ExtCore.WebApplication.csproj | 2 +- 18 files changed, 21 insertions(+), 21 deletions(-) diff --git a/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj b/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj index 72c5cb0..29105d5 100644 --- a/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj +++ b/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data extension component. Based on the ExtCore framework. - 3.3.0-beta1 + 3.3.0-beta2 netcoreapp2.1 ExtCore.Data.Abstractions ExtCore.Data.Abstractions @@ -13,7 +13,7 @@ - + diff --git a/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj b/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj index ac43760..d9017e7 100644 --- a/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj +++ b/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 3.3.0-beta1 + 3.3.0-beta2 netcoreapp2.1 ExtCore.Data.Dapper.MySql ExtCore.Data.Dapper.MySql diff --git a/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj b/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj index 53971c2..b74ab8f 100644 --- a/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj +++ b/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 3.3.0-beta1 + 3.3.0-beta2 netcoreapp2.1 ExtCore.Data.Dapper.PostgreSql ExtCore.Data.Dapper.PostgreSql diff --git a/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj b/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj index 4e39ea3..a30141c 100644 --- a/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj +++ b/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 3.3.0-beta1 + 3.3.0-beta2 netcoreapp2.1 ExtCore.Data.Dapper.SqlServer ExtCore.Data.Dapper.SqlServer diff --git a/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj b/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj index d35ed19..42281a5 100644 --- a/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj +++ b/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 3.3.0-beta1 + 3.3.0-beta2 netcoreapp2.1 ExtCore.Data.Dapper.Sqlite ExtCore.Data.Dapper.Sqlite diff --git a/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj b/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj index 3584eaa..ab37315 100644 --- a/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj +++ b/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 3.3.0-beta1 + 3.3.0-beta2 netcoreapp2.1 ExtCore.Data.Dapper ExtCore.Data.Dapper diff --git a/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj b/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj index 8b22aba..6676059 100644 --- a/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj +++ b/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data extension component. Based on the ExtCore framework. - 3.3.0-beta1 + 3.3.0-beta2 netcoreapp2.1 ExtCore.Data.Entities.Abstractions ExtCore.Data.Entities.Abstractions @@ -13,7 +13,7 @@ - + diff --git a/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj b/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj index 0142ddf..fe3d741 100644 --- a/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj +++ b/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 3.3.0-beta1 + 3.3.0-beta2 netcoreapp2.1 ExtCore.Data.EntityFramework.MySql ExtCore.Data.EntityFramework.MySql diff --git a/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj b/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj index 89324a1..ee67c37 100644 --- a/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj +++ b/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 3.3.0-beta1 + 3.3.0-beta2 netcoreapp2.1 ExtCore.Data.EntityFramework.PostgreSql ExtCore.Data.EntityFramework.PostgreSql diff --git a/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj b/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj index e3ab809..7900f3a 100644 --- a/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj +++ b/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 3.3.0-beta1 + 3.3.0-beta2 netcoreapp2.1 ExtCore.Data.EntityFramework.SqlServer ExtCore.Data.EntityFramework.SqlServer diff --git a/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj b/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj index 3e00594..c33221e 100644 --- a/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj +++ b/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 3.3.0-beta1 + 3.3.0-beta2 netcoreapp2.1 ExtCore.Data.EntityFramework.Sqlite ExtCore.Data.EntityFramework.Sqlite diff --git a/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj b/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj index 78304bd..f1c0f12 100644 --- a/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj +++ b/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 3.3.0-beta1 + 3.3.0-beta2 netcoreapp2.1 ExtCore.Data.EntityFramework ExtCore.Data.EntityFramework diff --git a/src/ExtCore.Data/ExtCore.Data.csproj b/src/ExtCore.Data/ExtCore.Data.csproj index 60219dd..62116cd 100644 --- a/src/ExtCore.Data/ExtCore.Data.csproj +++ b/src/ExtCore.Data/ExtCore.Data.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data extension component. Based on the ExtCore framework. - 3.3.0-beta1 + 3.3.0-beta2 netcoreapp2.1 ExtCore.Data ExtCore.Data diff --git a/src/ExtCore.Events/ExtCore.Events.csproj b/src/ExtCore.Events/ExtCore.Events.csproj index fc15625..5f63621 100644 --- a/src/ExtCore.Events/ExtCore.Events.csproj +++ b/src/ExtCore.Events/ExtCore.Events.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Events extension component. Based on the ExtCore framework. - 3.3.0-beta1 + 3.3.0-beta2 netcoreapp2.1 ExtCore.Events ExtCore.Events diff --git a/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj b/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj index b34dda2..bf02e82 100644 --- a/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj +++ b/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky Free, open source and cross-platform framework for creating modular and extendable web applications based on ASP.NET Core. - 3.3.0-beta1 + 3.3.0-beta2 netcoreapp2.1 ExtCore.Infrastructure ExtCore.Infrastructure @@ -13,7 +13,7 @@ - + diff --git a/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj b/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj index 340e2e7..2643f63 100644 --- a/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj +++ b/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Mvc extension component. Based on the ExtCore framework. - 3.3.0-beta1 + 3.3.0-beta2 netcoreapp2.1 ExtCore.Mvc.Infrastructure ExtCore.Mvc.Infrastructure diff --git a/src/ExtCore.Mvc/ExtCore.Mvc.csproj b/src/ExtCore.Mvc/ExtCore.Mvc.csproj index 884b578..ec54c9f 100644 --- a/src/ExtCore.Mvc/ExtCore.Mvc.csproj +++ b/src/ExtCore.Mvc/ExtCore.Mvc.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Mvc extension component. Based on the ExtCore framework. - 3.3.0-beta1 + 3.3.0-beta2 netcoreapp2.1 ExtCore.Mvc ExtCore.Mvc diff --git a/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj b/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj index 143f57e..612c308 100644 --- a/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj +++ b/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky Free, open source and cross-platform framework for creating modular and extendable web applications based on ASP.NET Core. - 3.3.0-beta1 + 3.3.0-beta2 netcoreapp2.1 ExtCore.WebApplication ExtCore.WebApplication From 415304e145c113ea60519112ade1c46b84242e88 Mon Sep 17 00:00:00 2001 From: Dmitry Sikorsky Date: Fri, 8 Jun 2018 17:12:24 +0300 Subject: [PATCH 41/81] Updated README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 79d9314..abf3ff8 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# ExtCore 3.3.0-beta1 +# ExtCore 3.3.0-beta2 [![Join the chat at https://gitter.im/ExtCore/ExtCore](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/ExtCore/ExtCore?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) From e9bfe3cf596d2f91b8794ab8ea25298670b3a71c Mon Sep 17 00:00:00 2001 From: xarkam Date: Tue, 19 Jun 2018 09:47:33 +0200 Subject: [PATCH 42/81] Update to .NET Core/ASP.NET Core 2.1.1 --- README.md | 2 +- .../ExtCore.Data.Abstractions.csproj | 4 ++-- .../ExtCore.Data.Dapper.MySql.csproj | 2 +- .../ExtCore.Data.Dapper.PostgreSql.csproj | 2 +- .../ExtCore.Data.Dapper.SqlServer.csproj | 2 +- .../ExtCore.Data.Dapper.Sqlite.csproj | 2 +- src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj | 2 +- .../ExtCore.Data.Entities.Abstractions.csproj | 4 ++-- .../ExtCore.Data.EntityFramework.MySql.csproj | 2 +- .../ExtCore.Data.EntityFramework.PostgreSql.csproj | 2 +- .../ExtCore.Data.EntityFramework.SqlServer.csproj | 2 +- .../ExtCore.Data.EntityFramework.Sqlite.csproj | 4 ++-- .../ExtCore.Data.EntityFramework.csproj | 2 +- src/ExtCore.Data/ExtCore.Data.csproj | 2 +- src/ExtCore.Events/ExtCore.Events.csproj | 2 +- src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj | 4 ++-- .../ExtCore.Mvc.Infrastructure.csproj | 2 +- src/ExtCore.Mvc/ExtCore.Mvc.csproj | 2 +- src/ExtCore.WebApplication/ExtCore.WebApplication.csproj | 2 +- 19 files changed, 23 insertions(+), 23 deletions(-) diff --git a/README.md b/README.md index abf3ff8..dbb4200 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# ExtCore 3.3.0-beta2 +# ExtCore 3.3.0-beta3 [![Join the chat at https://gitter.im/ExtCore/ExtCore](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/ExtCore/ExtCore?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) diff --git a/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj b/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj index 29105d5..f77ae30 100644 --- a/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj +++ b/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data extension component. Based on the ExtCore framework. - 3.3.0-beta2 + 3.3.0-beta3 netcoreapp2.1 ExtCore.Data.Abstractions ExtCore.Data.Abstractions @@ -13,7 +13,7 @@ - + diff --git a/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj b/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj index d9017e7..3d73a44 100644 --- a/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj +++ b/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 3.3.0-beta2 + 3.3.0-beta3 netcoreapp2.1 ExtCore.Data.Dapper.MySql ExtCore.Data.Dapper.MySql diff --git a/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj b/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj index b74ab8f..e5d1bad 100644 --- a/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj +++ b/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 3.3.0-beta2 + 3.3.0-beta3 netcoreapp2.1 ExtCore.Data.Dapper.PostgreSql ExtCore.Data.Dapper.PostgreSql diff --git a/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj b/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj index a30141c..16f8996 100644 --- a/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj +++ b/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 3.3.0-beta2 + 3.3.0-beta3 netcoreapp2.1 ExtCore.Data.Dapper.SqlServer ExtCore.Data.Dapper.SqlServer diff --git a/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj b/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj index 42281a5..e762212 100644 --- a/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj +++ b/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 3.3.0-beta2 + 3.3.0-beta3 netcoreapp2.1 ExtCore.Data.Dapper.Sqlite ExtCore.Data.Dapper.Sqlite diff --git a/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj b/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj index ab37315..d5d18b9 100644 --- a/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj +++ b/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 3.3.0-beta2 + 3.3.0-beta3 netcoreapp2.1 ExtCore.Data.Dapper ExtCore.Data.Dapper diff --git a/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj b/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj index 6676059..8d90df1 100644 --- a/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj +++ b/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data extension component. Based on the ExtCore framework. - 3.3.0-beta2 + 3.3.0-beta3 netcoreapp2.1 ExtCore.Data.Entities.Abstractions ExtCore.Data.Entities.Abstractions @@ -13,7 +13,7 @@ - + diff --git a/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj b/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj index fe3d741..665e237 100644 --- a/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj +++ b/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 3.3.0-beta2 + 3.3.0-beta3 netcoreapp2.1 ExtCore.Data.EntityFramework.MySql ExtCore.Data.EntityFramework.MySql diff --git a/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj b/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj index ee67c37..ca492e4 100644 --- a/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj +++ b/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 3.3.0-beta2 + 3.3.0-beta3 netcoreapp2.1 ExtCore.Data.EntityFramework.PostgreSql ExtCore.Data.EntityFramework.PostgreSql diff --git a/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj b/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj index 7900f3a..a094e6f 100644 --- a/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj +++ b/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 3.3.0-beta2 + 3.3.0-beta3 netcoreapp2.1 ExtCore.Data.EntityFramework.SqlServer ExtCore.Data.EntityFramework.SqlServer diff --git a/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj b/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj index c33221e..de1b35f 100644 --- a/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj +++ b/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 3.3.0-beta2 + 3.3.0-beta3 netcoreapp2.1 ExtCore.Data.EntityFramework.Sqlite ExtCore.Data.EntityFramework.Sqlite @@ -13,7 +13,7 @@ - + diff --git a/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj b/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj index f1c0f12..a3fb4a2 100644 --- a/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj +++ b/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 3.3.0-beta2 + 3.3.0-beta3 netcoreapp2.1 ExtCore.Data.EntityFramework ExtCore.Data.EntityFramework diff --git a/src/ExtCore.Data/ExtCore.Data.csproj b/src/ExtCore.Data/ExtCore.Data.csproj index 62116cd..d01574c 100644 --- a/src/ExtCore.Data/ExtCore.Data.csproj +++ b/src/ExtCore.Data/ExtCore.Data.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data extension component. Based on the ExtCore framework. - 3.3.0-beta2 + 3.3.0-beta3 netcoreapp2.1 ExtCore.Data ExtCore.Data diff --git a/src/ExtCore.Events/ExtCore.Events.csproj b/src/ExtCore.Events/ExtCore.Events.csproj index 5f63621..2f6fb43 100644 --- a/src/ExtCore.Events/ExtCore.Events.csproj +++ b/src/ExtCore.Events/ExtCore.Events.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Events extension component. Based on the ExtCore framework. - 3.3.0-beta2 + 3.3.0-beta3 netcoreapp2.1 ExtCore.Events ExtCore.Events diff --git a/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj b/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj index bf02e82..7945ad3 100644 --- a/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj +++ b/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky Free, open source and cross-platform framework for creating modular and extendable web applications based on ASP.NET Core. - 3.3.0-beta2 + 3.3.0-beta3 netcoreapp2.1 ExtCore.Infrastructure ExtCore.Infrastructure @@ -13,7 +13,7 @@ - + diff --git a/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj b/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj index 2643f63..271287d 100644 --- a/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj +++ b/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Mvc extension component. Based on the ExtCore framework. - 3.3.0-beta2 + 3.3.0-beta3 netcoreapp2.1 ExtCore.Mvc.Infrastructure ExtCore.Mvc.Infrastructure diff --git a/src/ExtCore.Mvc/ExtCore.Mvc.csproj b/src/ExtCore.Mvc/ExtCore.Mvc.csproj index ec54c9f..f82a2ce 100644 --- a/src/ExtCore.Mvc/ExtCore.Mvc.csproj +++ b/src/ExtCore.Mvc/ExtCore.Mvc.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Mvc extension component. Based on the ExtCore framework. - 3.3.0-beta2 + 3.3.0-beta3 netcoreapp2.1 ExtCore.Mvc ExtCore.Mvc diff --git a/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj b/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj index 612c308..6453f54 100644 --- a/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj +++ b/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky Free, open source and cross-platform framework for creating modular and extendable web applications based on ASP.NET Core. - 3.3.0-beta2 + 3.3.0-beta3 netcoreapp2.1 ExtCore.WebApplication ExtCore.WebApplication From 76c0716136ce49132cd32241a1c9b87249525e68 Mon Sep 17 00:00:00 2001 From: Dmitry Sikorsky Date: Sat, 21 Jul 2018 20:36:41 +0300 Subject: [PATCH 43/81] Changed version to 3.3.0 --- README.md | 28 +++++++++---------- .../ExtCore.Data.Abstractions.csproj | 2 +- .../ExtCore.Data.Dapper.MySql.csproj | 2 +- .../ExtCore.Data.Dapper.PostgreSql.csproj | 2 +- .../ExtCore.Data.Dapper.SqlServer.csproj | 2 +- .../ExtCore.Data.Dapper.Sqlite.csproj | 2 +- .../ExtCore.Data.Dapper.csproj | 2 +- .../ExtCore.Data.Entities.Abstractions.csproj | 2 +- .../ExtCore.Data.EntityFramework.MySql.csproj | 2 +- ...ore.Data.EntityFramework.PostgreSql.csproj | 2 +- ...Core.Data.EntityFramework.SqlServer.csproj | 2 +- ...ExtCore.Data.EntityFramework.Sqlite.csproj | 2 +- .../ExtCore.Data.EntityFramework.csproj | 2 +- src/ExtCore.Data/ExtCore.Data.csproj | 2 +- src/ExtCore.Events/ExtCore.Events.csproj | 2 +- .../ExtCore.Infrastructure.csproj | 2 +- .../ExtCore.Mvc.Infrastructure.csproj | 2 +- src/ExtCore.Mvc/ExtCore.Mvc.csproj | 2 +- .../ExtCore.WebApplication.csproj | 2 +- 19 files changed, 32 insertions(+), 32 deletions(-) diff --git a/README.md b/README.md index dbb4200..9c204eb 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# ExtCore 3.3.0-beta3 +# ExtCore 3.3.0 [![Join the chat at https://gitter.im/ExtCore/ExtCore](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/ExtCore/ExtCore?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) @@ -95,19 +95,19 @@ in order to execute some code inside the ConfigureServices and Configure methods Please take a look at our samples on GitHub: -* [Full-featured ExtCore 3.2.0 framework sample web application](https://github.com/ExtCore/ExtCore-Sample); -* [ExtCore framework 3.2.0 sample simplest web application](https://github.com/ExtCore/ExtCore-Sample-Simplest); -* [ExtCore framework 3.2.0 sample MVC web application](https://github.com/ExtCore/ExtCore-Sample-Mvc); -* [ExtCore framework 3.2.0 sample web application that uses a database](https://github.com/ExtCore/ExtCore-Sample-Data); -* [ExtCore framework 3.2.0 sample web application that uses Identity](https://github.com/ExtCore/ExtCore-Sample-Identity); -* [ExtCore framework 3.2.0 sample web application with modular UI](https://github.com/ExtCore/ExtCore-Sample-Modular-Ui); -* [ExtCore framework 3.2.0 advanced sample web application with modular UI](https://github.com/ExtCore/ExtCore-Sample-Modular-Ui-Adv); -* [ExtCore framework 3.2.0 advanced sample accounting web application](https://github.com/ExtCore/ExtCore-Sample-Accounting); -* [ExtCore framework 3.2.0 sample web application that registers a service inside the extension](https://github.com/ExtCore/ExtCore-Sample-Service); -* [ExtCore framework 3.2.0 sample web application that uses the events](https://github.com/ExtCore/ExtCore-Sample-Events); -* [ExtCore framework 3.2.0 sample API web application](https://github.com/ExtCore/ExtCore-Sample-Api). - -You can also download our [ready to use full-featured sample](http://extcore.net/files/ExtCore-Sample-3.2.0.zip). +* [Full-featured ExtCore 3.3.0 framework sample web application](https://github.com/ExtCore/ExtCore-Sample); +* [ExtCore framework 3.3.0 sample simplest web application](https://github.com/ExtCore/ExtCore-Sample-Simplest); +* [ExtCore framework 3.3.0 sample MVC web application](https://github.com/ExtCore/ExtCore-Sample-Mvc); +* [ExtCore framework 3.3.0 sample web application that uses a database](https://github.com/ExtCore/ExtCore-Sample-Data); +* [ExtCore framework 3.3.0 sample web application that uses Identity](https://github.com/ExtCore/ExtCore-Sample-Identity); +* [ExtCore framework 3.3.0 sample web application with modular UI](https://github.com/ExtCore/ExtCore-Sample-Modular-Ui); +* [ExtCore framework 3.3.0 advanced sample web application with modular UI](https://github.com/ExtCore/ExtCore-Sample-Modular-Ui-Adv); +* [ExtCore framework 3.3.0 advanced sample accounting web application](https://github.com/ExtCore/ExtCore-Sample-Accounting); +* [ExtCore framework 3.3.0 sample web application that registers a service inside the extension](https://github.com/ExtCore/ExtCore-Sample-Service); +* [ExtCore framework 3.3.0 sample web application that uses the events](https://github.com/ExtCore/ExtCore-Sample-Events); +* [ExtCore framework 3.3.0 sample API web application](https://github.com/ExtCore/ExtCore-Sample-Api). + +You can also download our [ready to use full-featured sample](http://extcore.net/files/ExtCore-Sample-3.3.0.zip). It contains everything you need to run ExtCore-based web application from Visual Studio 2017, including SQLite database with the test data. diff --git a/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj b/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj index f77ae30..95a2f05 100644 --- a/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj +++ b/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data extension component. Based on the ExtCore framework. - 3.3.0-beta3 + 3.3.0 netcoreapp2.1 ExtCore.Data.Abstractions ExtCore.Data.Abstractions diff --git a/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj b/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj index 3d73a44..bb4ed65 100644 --- a/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj +++ b/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 3.3.0-beta3 + 3.3.0 netcoreapp2.1 ExtCore.Data.Dapper.MySql ExtCore.Data.Dapper.MySql diff --git a/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj b/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj index e5d1bad..a8f1422 100644 --- a/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj +++ b/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 3.3.0-beta3 + 3.3.0 netcoreapp2.1 ExtCore.Data.Dapper.PostgreSql ExtCore.Data.Dapper.PostgreSql diff --git a/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj b/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj index 16f8996..140b255 100644 --- a/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj +++ b/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 3.3.0-beta3 + 3.3.0 netcoreapp2.1 ExtCore.Data.Dapper.SqlServer ExtCore.Data.Dapper.SqlServer diff --git a/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj b/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj index e762212..313dc88 100644 --- a/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj +++ b/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 3.3.0-beta3 + 3.3.0 netcoreapp2.1 ExtCore.Data.Dapper.Sqlite ExtCore.Data.Dapper.Sqlite diff --git a/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj b/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj index d5d18b9..a3c8a80 100644 --- a/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj +++ b/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 3.3.0-beta3 + 3.3.0 netcoreapp2.1 ExtCore.Data.Dapper ExtCore.Data.Dapper diff --git a/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj b/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj index 8d90df1..8eda616 100644 --- a/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj +++ b/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data extension component. Based on the ExtCore framework. - 3.3.0-beta3 + 3.3.0 netcoreapp2.1 ExtCore.Data.Entities.Abstractions ExtCore.Data.Entities.Abstractions diff --git a/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj b/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj index 665e237..95fe888 100644 --- a/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj +++ b/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 3.3.0-beta3 + 3.3.0 netcoreapp2.1 ExtCore.Data.EntityFramework.MySql ExtCore.Data.EntityFramework.MySql diff --git a/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj b/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj index ca492e4..900bc54 100644 --- a/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj +++ b/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 3.3.0-beta3 + 3.3.0 netcoreapp2.1 ExtCore.Data.EntityFramework.PostgreSql ExtCore.Data.EntityFramework.PostgreSql diff --git a/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj b/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj index a094e6f..f7668bf 100644 --- a/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj +++ b/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 3.3.0-beta3 + 3.3.0 netcoreapp2.1 ExtCore.Data.EntityFramework.SqlServer ExtCore.Data.EntityFramework.SqlServer diff --git a/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj b/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj index de1b35f..0982283 100644 --- a/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj +++ b/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 3.3.0-beta3 + 3.3.0 netcoreapp2.1 ExtCore.Data.EntityFramework.Sqlite ExtCore.Data.EntityFramework.Sqlite diff --git a/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj b/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj index a3fb4a2..4be2c4c 100644 --- a/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj +++ b/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 3.3.0-beta3 + 3.3.0 netcoreapp2.1 ExtCore.Data.EntityFramework ExtCore.Data.EntityFramework diff --git a/src/ExtCore.Data/ExtCore.Data.csproj b/src/ExtCore.Data/ExtCore.Data.csproj index d01574c..827442e 100644 --- a/src/ExtCore.Data/ExtCore.Data.csproj +++ b/src/ExtCore.Data/ExtCore.Data.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data extension component. Based on the ExtCore framework. - 3.3.0-beta3 + 3.3.0 netcoreapp2.1 ExtCore.Data ExtCore.Data diff --git a/src/ExtCore.Events/ExtCore.Events.csproj b/src/ExtCore.Events/ExtCore.Events.csproj index 2f6fb43..b5146a1 100644 --- a/src/ExtCore.Events/ExtCore.Events.csproj +++ b/src/ExtCore.Events/ExtCore.Events.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Events extension component. Based on the ExtCore framework. - 3.3.0-beta3 + 3.3.0 netcoreapp2.1 ExtCore.Events ExtCore.Events diff --git a/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj b/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj index 7945ad3..f37092d 100644 --- a/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj +++ b/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky Free, open source and cross-platform framework for creating modular and extendable web applications based on ASP.NET Core. - 3.3.0-beta3 + 3.3.0 netcoreapp2.1 ExtCore.Infrastructure ExtCore.Infrastructure diff --git a/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj b/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj index 271287d..3372a8d 100644 --- a/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj +++ b/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Mvc extension component. Based on the ExtCore framework. - 3.3.0-beta3 + 3.3.0 netcoreapp2.1 ExtCore.Mvc.Infrastructure ExtCore.Mvc.Infrastructure diff --git a/src/ExtCore.Mvc/ExtCore.Mvc.csproj b/src/ExtCore.Mvc/ExtCore.Mvc.csproj index f82a2ce..9f6b899 100644 --- a/src/ExtCore.Mvc/ExtCore.Mvc.csproj +++ b/src/ExtCore.Mvc/ExtCore.Mvc.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Mvc extension component. Based on the ExtCore framework. - 3.3.0-beta3 + 3.3.0 netcoreapp2.1 ExtCore.Mvc ExtCore.Mvc diff --git a/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj b/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj index 6453f54..25f8b1d 100644 --- a/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj +++ b/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky Free, open source and cross-platform framework for creating modular and extendable web applications based on ASP.NET Core. - 3.3.0-beta3 + 3.3.0 netcoreapp2.1 ExtCore.WebApplication ExtCore.WebApplication From 84bceca61ad061f71583b98739a2f22451a28370 Mon Sep 17 00:00:00 2001 From: Benjamin Nolmans Date: Wed, 10 Oct 2018 13:13:32 +0200 Subject: [PATCH 44/81] Updating nuget packages dependencies version --- src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj | 2 +- src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj | 2 +- .../ExtCore.Data.Dapper.PostgreSql.csproj | 2 +- .../ExtCore.Data.Entities.Abstractions.csproj | 2 +- .../ExtCore.Data.EntityFramework.MySql.csproj | 2 +- .../ExtCore.Data.EntityFramework.PostgreSql.csproj | 2 +- .../ExtCore.Data.EntityFramework.Sqlite.csproj | 2 +- src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj b/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj index 95a2f05..23e53d4 100644 --- a/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj +++ b/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj @@ -13,7 +13,7 @@ - + diff --git a/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj b/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj index bb4ed65..b52a0e6 100644 --- a/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj +++ b/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj @@ -13,7 +13,7 @@ - + diff --git a/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj b/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj index a8f1422..72b6352 100644 --- a/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj +++ b/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj @@ -13,7 +13,7 @@ - + diff --git a/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj b/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj index 8eda616..53c2e57 100644 --- a/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj +++ b/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj @@ -13,7 +13,7 @@ - + diff --git a/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj b/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj index 95fe888..d529fcd 100644 --- a/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj +++ b/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj @@ -13,7 +13,7 @@ - + diff --git a/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj b/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj index 900bc54..fe7a7f4 100644 --- a/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj +++ b/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj @@ -13,7 +13,7 @@ - + diff --git a/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj b/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj index 0982283..f4c5355 100644 --- a/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj +++ b/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj @@ -13,7 +13,7 @@ - + diff --git a/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj b/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj index f37092d..61c013e 100644 --- a/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj +++ b/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj @@ -13,7 +13,7 @@ - + From a295b35192d99a9e4c1953edd4f7760462c3b907 Mon Sep 17 00:00:00 2001 From: Dmitry Sikorsky Date: Thu, 18 Oct 2018 20:56:34 +0300 Subject: [PATCH 45/81] Updated to target netstandard2.0, fixed #103, fixed #135 --- .../ExtCore.Data.Abstractions.csproj | 8 ++------ .../ExtCore.Data.Dapper.MySql.csproj | 4 ++-- .../ExtCore.Data.Dapper.PostgreSql.csproj | 4 ++-- .../ExtCore.Data.Dapper.SqlServer.csproj | 4 ++-- .../ExtCore.Data.Dapper.Sqlite.csproj | 4 ++-- src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj | 4 ++-- src/ExtCore.Data.Dapper/Extension.cs | 2 +- .../ExtCore.Data.Entities.Abstractions.csproj | 8 ++------ .../ExtCore.Data.EntityFramework.MySql.csproj | 4 ++-- .../ExtCore.Data.EntityFramework.PostgreSql.csproj | 4 ++-- .../ExtCore.Data.EntityFramework.SqlServer.csproj | 8 ++++++-- .../ExtCore.Data.EntityFramework.Sqlite.csproj | 4 ++-- .../ExtCore.Data.EntityFramework.csproj | 8 ++++++-- src/ExtCore.Data.EntityFramework/Extension.cs | 2 +- src/ExtCore.Data/ExtCore.Data.csproj | 4 ++-- src/ExtCore.Data/Extension.cs | 2 +- src/ExtCore.Events/ExtCore.Events.csproj | 4 ++-- src/ExtCore.Events/Extension.cs | 2 +- src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj | 6 +++--- .../ExtCore.Mvc.Infrastructure.csproj | 8 ++++++-- src/ExtCore.Mvc/ExtCore.Mvc.csproj | 9 +++++++-- src/ExtCore.Mvc/Extension.cs | 2 +- src/ExtCore.WebApplication/ExtCore.WebApplication.csproj | 9 +++++++-- 23 files changed, 64 insertions(+), 50 deletions(-) diff --git a/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj b/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj index 23e53d4..8c50359 100644 --- a/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj +++ b/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj @@ -4,16 +4,12 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data extension component. Based on the ExtCore framework. - 3.3.0 - netcoreapp2.1 + 4.0.0-alpha1 + netstandard2.0 ExtCore.Data.Abstractions ExtCore.Data.Abstractions http://extcore.net/extcore_nuget_icon.png http://extcore.net/ - - - - diff --git a/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj b/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj index b52a0e6..de53560 100644 --- a/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj +++ b/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj @@ -4,8 +4,8 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 3.3.0 - netcoreapp2.1 + 4.0.0-alpha1 + netstandard2.0 ExtCore.Data.Dapper.MySql ExtCore.Data.Dapper.MySql http://extcore.net/extcore_nuget_icon.png diff --git a/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj b/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj index 72b6352..f69d691 100644 --- a/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj +++ b/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj @@ -4,8 +4,8 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 3.3.0 - netcoreapp2.1 + 4.0.0-alpha1 + netstandard2.0 ExtCore.Data.Dapper.PostgreSql ExtCore.Data.Dapper.PostgreSql http://extcore.net/extcore_nuget_icon.png diff --git a/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj b/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj index 140b255..3d57897 100644 --- a/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj +++ b/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj @@ -4,8 +4,8 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 3.3.0 - netcoreapp2.1 + 4.0.0-alpha1 + netstandard2.0 ExtCore.Data.Dapper.SqlServer ExtCore.Data.Dapper.SqlServer http://extcore.net/extcore_nuget_icon.png diff --git a/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj b/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj index 313dc88..1b76fe4 100644 --- a/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj +++ b/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj @@ -4,8 +4,8 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 3.3.0 - netcoreapp2.1 + 4.0.0-alpha1 + netstandard2.0 ExtCore.Data.Dapper.Sqlite ExtCore.Data.Dapper.Sqlite http://extcore.net/extcore_nuget_icon.png diff --git a/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj b/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj index a3c8a80..e386174 100644 --- a/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj +++ b/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj @@ -4,8 +4,8 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 3.3.0 - netcoreapp2.1 + 4.0.0-alpha1 + netstandard2.0 ExtCore.Data.Dapper ExtCore.Data.Dapper http://extcore.net/extcore_nuget_icon.png diff --git a/src/ExtCore.Data.Dapper/Extension.cs b/src/ExtCore.Data.Dapper/Extension.cs index b4badee..7c15002 100644 --- a/src/ExtCore.Data.Dapper/Extension.cs +++ b/src/ExtCore.Data.Dapper/Extension.cs @@ -24,7 +24,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "3.2.0"; + public override string Version => "4.0.0-alpha1"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj b/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj index 53c2e57..ca2341c 100644 --- a/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj +++ b/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj @@ -4,16 +4,12 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data extension component. Based on the ExtCore framework. - 3.3.0 - netcoreapp2.1 + 4.0.0-alpha1 + netstandard2.0 ExtCore.Data.Entities.Abstractions ExtCore.Data.Entities.Abstractions http://extcore.net/extcore_nuget_icon.png http://extcore.net/ - - - - diff --git a/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj b/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj index d529fcd..68f5885 100644 --- a/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj +++ b/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj @@ -4,8 +4,8 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 3.3.0 - netcoreapp2.1 + 4.0.0-alpha1 + netstandard2.0 ExtCore.Data.EntityFramework.MySql ExtCore.Data.EntityFramework.MySql http://extcore.net/extcore_nuget_icon.png diff --git a/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj b/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj index fe7a7f4..45297e1 100644 --- a/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj +++ b/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj @@ -4,8 +4,8 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 3.3.0 - netcoreapp2.1 + 4.0.0-alpha1 + netstandard2.0 ExtCore.Data.EntityFramework.PostgreSql ExtCore.Data.EntityFramework.PostgreSql http://extcore.net/extcore_nuget_icon.png diff --git a/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj b/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj index f7668bf..5318337 100644 --- a/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj +++ b/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj @@ -4,14 +4,18 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 3.3.0 - netcoreapp2.1 + 4.0.0-alpha1 + netstandard2.0 ExtCore.Data.EntityFramework.SqlServer ExtCore.Data.EntityFramework.SqlServer http://extcore.net/extcore_nuget_icon.png http://extcore.net/ + + + + diff --git a/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj b/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj index f4c5355..3279a60 100644 --- a/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj +++ b/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj @@ -4,8 +4,8 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 3.3.0 - netcoreapp2.1 + 4.0.0-alpha1 + netstandard2.0 ExtCore.Data.EntityFramework.Sqlite ExtCore.Data.EntityFramework.Sqlite http://extcore.net/extcore_nuget_icon.png diff --git a/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj b/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj index 4be2c4c..833d602 100644 --- a/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj +++ b/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj @@ -4,14 +4,18 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 3.3.0 - netcoreapp2.1 + 4.0.0-alpha1 + netstandard2.0 ExtCore.Data.EntityFramework ExtCore.Data.EntityFramework http://extcore.net/extcore_nuget_icon.png http://extcore.net/ + + + + diff --git a/src/ExtCore.Data.EntityFramework/Extension.cs b/src/ExtCore.Data.EntityFramework/Extension.cs index 1a766b5..7d51e4a 100644 --- a/src/ExtCore.Data.EntityFramework/Extension.cs +++ b/src/ExtCore.Data.EntityFramework/Extension.cs @@ -24,7 +24,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "3.2.0"; + public override string Version => "4.0.0-alpha1"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Data/ExtCore.Data.csproj b/src/ExtCore.Data/ExtCore.Data.csproj index 827442e..bf128d7 100644 --- a/src/ExtCore.Data/ExtCore.Data.csproj +++ b/src/ExtCore.Data/ExtCore.Data.csproj @@ -4,8 +4,8 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data extension component. Based on the ExtCore framework. - 3.3.0 - netcoreapp2.1 + 4.0.0-alpha1 + netstandard2.0 ExtCore.Data ExtCore.Data http://extcore.net/extcore_nuget_icon.png diff --git a/src/ExtCore.Data/Extension.cs b/src/ExtCore.Data/Extension.cs index b57f929..87fab38 100644 --- a/src/ExtCore.Data/Extension.cs +++ b/src/ExtCore.Data/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "3.2.0"; + public override string Version => "4.0.0-alpha1"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Events/ExtCore.Events.csproj b/src/ExtCore.Events/ExtCore.Events.csproj index b5146a1..9ba569b 100644 --- a/src/ExtCore.Events/ExtCore.Events.csproj +++ b/src/ExtCore.Events/ExtCore.Events.csproj @@ -4,8 +4,8 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Events extension component. Based on the ExtCore framework. - 3.3.0 - netcoreapp2.1 + 4.0.0-alpha1 + netstandard2.0 ExtCore.Events ExtCore.Events http://extcore.net/extcore_nuget_icon.png diff --git a/src/ExtCore.Events/Extension.cs b/src/ExtCore.Events/Extension.cs index 9373dc0..86a6d15 100644 --- a/src/ExtCore.Events/Extension.cs +++ b/src/ExtCore.Events/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "3.2.0"; + public override string Version => "4.0.0-alpha1"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj b/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj index 61c013e..aedb794 100644 --- a/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj +++ b/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj @@ -4,8 +4,8 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky Free, open source and cross-platform framework for creating modular and extendable web applications based on ASP.NET Core. - 3.3.0 - netcoreapp2.1 + 4.0.0-alpha1 + netstandard2.0 ExtCore.Infrastructure ExtCore.Infrastructure http://extcore.net/extcore_nuget_icon.png @@ -13,7 +13,7 @@ - + diff --git a/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj b/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj index 3372a8d..1fda1f9 100644 --- a/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj +++ b/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj @@ -4,14 +4,18 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Mvc extension component. Based on the ExtCore framework. - 3.3.0 - netcoreapp2.1 + 4.0.0-alpha1 + netstandard2.0 ExtCore.Mvc.Infrastructure ExtCore.Mvc.Infrastructure http://extcore.net/extcore_nuget_icon.png http://extcore.net/ + + + + diff --git a/src/ExtCore.Mvc/ExtCore.Mvc.csproj b/src/ExtCore.Mvc/ExtCore.Mvc.csproj index 9f6b899..74e4d2c 100644 --- a/src/ExtCore.Mvc/ExtCore.Mvc.csproj +++ b/src/ExtCore.Mvc/ExtCore.Mvc.csproj @@ -4,14 +4,19 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Mvc extension component. Based on the ExtCore framework. - 3.3.0 - netcoreapp2.1 + 4.0.0-alpha1 + netstandard2.0 ExtCore.Mvc ExtCore.Mvc http://extcore.net/extcore_nuget_icon.png http://extcore.net/ + + + + + diff --git a/src/ExtCore.Mvc/Extension.cs b/src/ExtCore.Mvc/Extension.cs index 5469baf..f501e23 100644 --- a/src/ExtCore.Mvc/Extension.cs +++ b/src/ExtCore.Mvc/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "3.2.0"; + public override string Version => "4.0.0-alpha1"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj b/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj index 25f8b1d..45b9155 100644 --- a/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj +++ b/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj @@ -4,14 +4,19 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky Free, open source and cross-platform framework for creating modular and extendable web applications based on ASP.NET Core. - 3.3.0 - netcoreapp2.1 + 4.0.0-alpha1 + netstandard2.0 ExtCore.WebApplication ExtCore.WebApplication http://extcore.net/extcore_nuget_icon.png http://extcore.net/ + + + + + From 12f4673d2c964d58fdb7f7faff106f02797186fc Mon Sep 17 00:00:00 2001 From: Dmitry Sikorsky Date: Mon, 26 Nov 2018 12:58:07 +0200 Subject: [PATCH 46/81] Fixed #144 --- ExtCore.sln | 31 ++ .../ExtCore.Data.Dapper.MySql.csproj | 2 +- .../StorageContext.cs | 2 +- .../StorageContext.cs | 2 +- .../StorageContext.cs | 2 +- .../StorageContext.cs | 2 +- .../StorageContext.cs | 2 +- .../StorageContext.cs | 2 +- .../StorageContext.cs | 2 +- .../StorageContext.cs | 2 +- .../Exceptions/AccessDeniedException.cs | 17 + .../Exceptions/DirectoryNotFoundException.cs | 17 + .../Exceptions/FileNotFoundException.cs | 17 + .../Exceptions/FileStorageException.cs | 17 + .../Exceptions/PathTooLongException.cs | 17 + .../ExtCore.FileStorage.Abstractions.csproj | 15 + .../FileStorageOptions.cs | 31 ++ .../IDirectoryProxy.cs | 77 ++++ .../IFileProxy.cs | 107 +++++ .../IFileStorage.cs | 26 ++ .../DirectoryProxy.cs | 247 +++++++++++ .../ExtCore.FileStorage.Dropbox.csproj | 24 ++ src/ExtCore.FileStorage.Dropbox/FileProxy.cs | 283 +++++++++++++ .../FileStorage.cs | 48 +++ .../RelativeUrl.cs | 21 + .../DirectoryProxy.cs | 272 ++++++++++++ .../ExtCore.FileStorage.FileSystem.csproj | 23 + .../FileProxy.cs | 395 ++++++++++++++++++ .../FileStorage.cs | 46 ++ .../Actions/AddDirectoryProxyAction.cs | 50 +++ .../Actions/AddFileProxyAction.cs | 50 +++ .../Actions/AddFileStorageAction.cs | 50 +++ .../ExtCore.FileStorage.csproj | 20 + src/ExtCore.FileStorage/Extension.cs | 33 ++ 34 files changed, 1943 insertions(+), 9 deletions(-) create mode 100644 src/ExtCore.FileStorage.Abstractions/Exceptions/AccessDeniedException.cs create mode 100644 src/ExtCore.FileStorage.Abstractions/Exceptions/DirectoryNotFoundException.cs create mode 100644 src/ExtCore.FileStorage.Abstractions/Exceptions/FileNotFoundException.cs create mode 100644 src/ExtCore.FileStorage.Abstractions/Exceptions/FileStorageException.cs create mode 100644 src/ExtCore.FileStorage.Abstractions/Exceptions/PathTooLongException.cs create mode 100644 src/ExtCore.FileStorage.Abstractions/ExtCore.FileStorage.Abstractions.csproj create mode 100644 src/ExtCore.FileStorage.Abstractions/FileStorageOptions.cs create mode 100644 src/ExtCore.FileStorage.Abstractions/IDirectoryProxy.cs create mode 100644 src/ExtCore.FileStorage.Abstractions/IFileProxy.cs create mode 100644 src/ExtCore.FileStorage.Abstractions/IFileStorage.cs create mode 100644 src/ExtCore.FileStorage.Dropbox/DirectoryProxy.cs create mode 100644 src/ExtCore.FileStorage.Dropbox/ExtCore.FileStorage.Dropbox.csproj create mode 100644 src/ExtCore.FileStorage.Dropbox/FileProxy.cs create mode 100644 src/ExtCore.FileStorage.Dropbox/FileStorage.cs create mode 100644 src/ExtCore.FileStorage.Dropbox/RelativeUrl.cs create mode 100644 src/ExtCore.FileStorage.FileSystem/DirectoryProxy.cs create mode 100644 src/ExtCore.FileStorage.FileSystem/ExtCore.FileStorage.FileSystem.csproj create mode 100644 src/ExtCore.FileStorage.FileSystem/FileProxy.cs create mode 100644 src/ExtCore.FileStorage.FileSystem/FileStorage.cs create mode 100644 src/ExtCore.FileStorage/Actions/AddDirectoryProxyAction.cs create mode 100644 src/ExtCore.FileStorage/Actions/AddFileProxyAction.cs create mode 100644 src/ExtCore.FileStorage/Actions/AddFileStorageAction.cs create mode 100644 src/ExtCore.FileStorage/ExtCore.FileStorage.csproj create mode 100644 src/ExtCore.FileStorage/Extension.cs diff --git a/ExtCore.sln b/ExtCore.sln index 06d2279..a5744f8 100644 --- a/ExtCore.sln +++ b/ExtCore.sln @@ -51,6 +51,16 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ExtCore.Data.Dapper.Sqlite" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Data.Dapper", "Data.Dapper", "{8C720480-750C-44C1-945B-961599088853}" EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "FileStorage", "FileStorage", "{2093A913-AB5F-4597-839E-A472E25D37D8}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ExtCore.FileStorage", "src\ExtCore.FileStorage\ExtCore.FileStorage.csproj", "{AD4DB805-D932-4C5F-9559-B4704340F8CA}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ExtCore.FileStorage.Abstractions", "src\ExtCore.FileStorage.Abstractions\ExtCore.FileStorage.Abstractions.csproj", "{EED241F9-4900-4FB0-91FD-432A5F40983D}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ExtCore.FileStorage.Dropbox", "src\ExtCore.FileStorage.Dropbox\ExtCore.FileStorage.Dropbox.csproj", "{D9FA3F92-D638-434D-9C0C-E74A6BCFDE7A}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ExtCore.FileStorage.FileSystem", "src\ExtCore.FileStorage.FileSystem\ExtCore.FileStorage.FileSystem.csproj", "{2031A605-DB91-4998-94DB-8012C590152B}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -129,6 +139,22 @@ Global {693AB050-3305-471C-90C3-816BD694A930}.Debug|Any CPU.Build.0 = Debug|Any CPU {693AB050-3305-471C-90C3-816BD694A930}.Release|Any CPU.ActiveCfg = Release|Any CPU {693AB050-3305-471C-90C3-816BD694A930}.Release|Any CPU.Build.0 = Release|Any CPU + {AD4DB805-D932-4C5F-9559-B4704340F8CA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {AD4DB805-D932-4C5F-9559-B4704340F8CA}.Debug|Any CPU.Build.0 = Debug|Any CPU + {AD4DB805-D932-4C5F-9559-B4704340F8CA}.Release|Any CPU.ActiveCfg = Release|Any CPU + {AD4DB805-D932-4C5F-9559-B4704340F8CA}.Release|Any CPU.Build.0 = Release|Any CPU + {EED241F9-4900-4FB0-91FD-432A5F40983D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {EED241F9-4900-4FB0-91FD-432A5F40983D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {EED241F9-4900-4FB0-91FD-432A5F40983D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {EED241F9-4900-4FB0-91FD-432A5F40983D}.Release|Any CPU.Build.0 = Release|Any CPU + {D9FA3F92-D638-434D-9C0C-E74A6BCFDE7A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D9FA3F92-D638-434D-9C0C-E74A6BCFDE7A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D9FA3F92-D638-434D-9C0C-E74A6BCFDE7A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D9FA3F92-D638-434D-9C0C-E74A6BCFDE7A}.Release|Any CPU.Build.0 = Release|Any CPU + {2031A605-DB91-4998-94DB-8012C590152B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2031A605-DB91-4998-94DB-8012C590152B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2031A605-DB91-4998-94DB-8012C590152B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {2031A605-DB91-4998-94DB-8012C590152B}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -157,6 +183,11 @@ Global {E588921B-5E74-45E8-841B-2654D2416D9F} = {8C720480-750C-44C1-945B-961599088853} {693AB050-3305-471C-90C3-816BD694A930} = {8C720480-750C-44C1-945B-961599088853} {8C720480-750C-44C1-945B-961599088853} = {0D7AEFA3-ABB0-4AF1-A4C1-F8E05C241753} + {2093A913-AB5F-4597-839E-A472E25D37D8} = {0D7AEFA3-ABB0-4AF1-A4C1-F8E05C241753} + {AD4DB805-D932-4C5F-9559-B4704340F8CA} = {2093A913-AB5F-4597-839E-A472E25D37D8} + {EED241F9-4900-4FB0-91FD-432A5F40983D} = {2093A913-AB5F-4597-839E-A472E25D37D8} + {D9FA3F92-D638-434D-9C0C-E74A6BCFDE7A} = {2093A913-AB5F-4597-839E-A472E25D37D8} + {2031A605-DB91-4998-94DB-8012C590152B} = {2093A913-AB5F-4597-839E-A472E25D37D8} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {DF807CB9-3F57-4CF4-B501-26F9D4BB417C} diff --git a/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj b/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj index de53560..8c179d5 100644 --- a/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj +++ b/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj @@ -13,7 +13,7 @@ - + diff --git a/src/ExtCore.Data.Dapper.MySql/StorageContext.cs b/src/ExtCore.Data.Dapper.MySql/StorageContext.cs index 5f5b3bb..c02edcd 100644 --- a/src/ExtCore.Data.Dapper.MySql/StorageContext.cs +++ b/src/ExtCore.Data.Dapper.MySql/StorageContext.cs @@ -14,7 +14,7 @@ public class StorageContext : StorageContextBase /// /// Initializes a new instance of the StorageContext class. /// - /// The connection string that is used to connect to the MySQL database. + /// The options that are used to connect to the MySQL database. public StorageContext(IOptions options) : base(options) { diff --git a/src/ExtCore.Data.Dapper.PostgreSql/StorageContext.cs b/src/ExtCore.Data.Dapper.PostgreSql/StorageContext.cs index f5c25ed..64bb69e 100644 --- a/src/ExtCore.Data.Dapper.PostgreSql/StorageContext.cs +++ b/src/ExtCore.Data.Dapper.PostgreSql/StorageContext.cs @@ -14,7 +14,7 @@ public class StorageContext : StorageContextBase /// /// Initializes a new instance of the StorageContext class. /// - /// The connection string that is used to connect to the PostgreSQL database. + /// The options that are used to connect to the PostgreSQL database. public StorageContext(IOptions options) : base(options) { diff --git a/src/ExtCore.Data.Dapper.SqlServer/StorageContext.cs b/src/ExtCore.Data.Dapper.SqlServer/StorageContext.cs index 83381cb..ef7d86f 100644 --- a/src/ExtCore.Data.Dapper.SqlServer/StorageContext.cs +++ b/src/ExtCore.Data.Dapper.SqlServer/StorageContext.cs @@ -14,7 +14,7 @@ public class StorageContext : StorageContextBase /// /// Initializes a new instance of the StorageContext class. /// - /// The connection string that is used to connect to the SQL Server database. + /// The options that are used to connect to the SQL Server database. public StorageContext(IOptions options) : base(options) { diff --git a/src/ExtCore.Data.Dapper.Sqlite/StorageContext.cs b/src/ExtCore.Data.Dapper.Sqlite/StorageContext.cs index 8364d39..2ea1293 100644 --- a/src/ExtCore.Data.Dapper.Sqlite/StorageContext.cs +++ b/src/ExtCore.Data.Dapper.Sqlite/StorageContext.cs @@ -14,7 +14,7 @@ public class StorageContext : StorageContextBase /// /// Initializes a new instance of the StorageContext class. /// - /// The connection string that is used to connect to the SQLite database. + /// The options that are used to connect to the SQLite database. public StorageContext(IOptions options) : base(options) { diff --git a/src/ExtCore.Data.EntityFramework.MySql/StorageContext.cs b/src/ExtCore.Data.EntityFramework.MySql/StorageContext.cs index af4d89a..38fba6e 100644 --- a/src/ExtCore.Data.EntityFramework.MySql/StorageContext.cs +++ b/src/ExtCore.Data.EntityFramework.MySql/StorageContext.cs @@ -15,7 +15,7 @@ public class StorageContext : StorageContextBase /// /// Initializes a new instance of the StorageContext class. /// - /// The connection string that is used to connect to the MySQL database. + /// The options that are used to connect to the MySQL database. public StorageContext(IOptions options) : base(options) { } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) diff --git a/src/ExtCore.Data.EntityFramework.PostgreSql/StorageContext.cs b/src/ExtCore.Data.EntityFramework.PostgreSql/StorageContext.cs index 8153652..9656f21 100644 --- a/src/ExtCore.Data.EntityFramework.PostgreSql/StorageContext.cs +++ b/src/ExtCore.Data.EntityFramework.PostgreSql/StorageContext.cs @@ -15,7 +15,7 @@ public class StorageContext : StorageContextBase /// /// Initializes a new instance of the StorageContext class. /// - /// The connection string that is used to connect to the PostgreSQL database. + /// The options that are used to connect to the PostgreSQL database. public StorageContext(IOptions options) : base(options) { } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) diff --git a/src/ExtCore.Data.EntityFramework.SqlServer/StorageContext.cs b/src/ExtCore.Data.EntityFramework.SqlServer/StorageContext.cs index 83b3632..0852b03 100644 --- a/src/ExtCore.Data.EntityFramework.SqlServer/StorageContext.cs +++ b/src/ExtCore.Data.EntityFramework.SqlServer/StorageContext.cs @@ -15,7 +15,7 @@ public class StorageContext : StorageContextBase /// /// Initializes a new instance of the StorageContext class. /// - /// The connection string that is used to connect to the SQL Server database. + /// The options that are used to connect to the SQL Server database. public StorageContext(IOptions options) : base(options) { } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) diff --git a/src/ExtCore.Data.EntityFramework.Sqlite/StorageContext.cs b/src/ExtCore.Data.EntityFramework.Sqlite/StorageContext.cs index 758b29a..d288f0d 100644 --- a/src/ExtCore.Data.EntityFramework.Sqlite/StorageContext.cs +++ b/src/ExtCore.Data.EntityFramework.Sqlite/StorageContext.cs @@ -15,7 +15,7 @@ public class StorageContext : StorageContextBase /// /// Initializes a new instance of the StorageContext class. /// - /// The connection string that is used to connect to the SQLite database. + /// The options that are used to connect to the SQLite database. public StorageContext(IOptions options) : base(options) { diff --git a/src/ExtCore.FileStorage.Abstractions/Exceptions/AccessDeniedException.cs b/src/ExtCore.FileStorage.Abstractions/Exceptions/AccessDeniedException.cs new file mode 100644 index 0000000..16bde33 --- /dev/null +++ b/src/ExtCore.FileStorage.Abstractions/Exceptions/AccessDeniedException.cs @@ -0,0 +1,17 @@ +// Copyright © 2018 Dmitry Sikorsky. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; + +namespace ExtCore.FileStorage +{ + /// + /// Represents an access denied file storage exception. + /// + public class AccessDeniedException : FileStorageException + { + public AccessDeniedException() : base() { } + public AccessDeniedException(string message) : base(message) { } + public AccessDeniedException(string message, Exception innerException) : base(message, innerException) { } + } +} \ No newline at end of file diff --git a/src/ExtCore.FileStorage.Abstractions/Exceptions/DirectoryNotFoundException.cs b/src/ExtCore.FileStorage.Abstractions/Exceptions/DirectoryNotFoundException.cs new file mode 100644 index 0000000..8a925b4 --- /dev/null +++ b/src/ExtCore.FileStorage.Abstractions/Exceptions/DirectoryNotFoundException.cs @@ -0,0 +1,17 @@ +// Copyright © 2018 Dmitry Sikorsky. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; + +namespace ExtCore.FileStorage +{ + /// + /// Represents a directory not found file storage exception. + /// + public class DirectoryNotFoundException : FileStorageException + { + public DirectoryNotFoundException() : base() { } + public DirectoryNotFoundException(string message) : base(message) { } + public DirectoryNotFoundException(string message, Exception innerException) : base(message, innerException) { } + } +} \ No newline at end of file diff --git a/src/ExtCore.FileStorage.Abstractions/Exceptions/FileNotFoundException.cs b/src/ExtCore.FileStorage.Abstractions/Exceptions/FileNotFoundException.cs new file mode 100644 index 0000000..6d5c4d0 --- /dev/null +++ b/src/ExtCore.FileStorage.Abstractions/Exceptions/FileNotFoundException.cs @@ -0,0 +1,17 @@ +// Copyright © 2018 Dmitry Sikorsky. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; + +namespace ExtCore.FileStorage +{ + /// + /// Represents a directory not found file storage exception. + /// + public class FileNotFoundException : FileStorageException + { + public FileNotFoundException() : base() { } + public FileNotFoundException(string message) : base(message) { } + public FileNotFoundException(string message, Exception innerException) : base(message, innerException) { } + } +} \ No newline at end of file diff --git a/src/ExtCore.FileStorage.Abstractions/Exceptions/FileStorageException.cs b/src/ExtCore.FileStorage.Abstractions/Exceptions/FileStorageException.cs new file mode 100644 index 0000000..c0d203a --- /dev/null +++ b/src/ExtCore.FileStorage.Abstractions/Exceptions/FileStorageException.cs @@ -0,0 +1,17 @@ +// Copyright © 2018 Dmitry Sikorsky. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; + +namespace ExtCore.FileStorage +{ + /// + /// Represents a generic file storage exception. + /// + public class FileStorageException : Exception + { + public FileStorageException() : base() { } + public FileStorageException(string message) : base(message) { } + public FileStorageException(string message, Exception innerException) : base(message, innerException) { } + } +} \ No newline at end of file diff --git a/src/ExtCore.FileStorage.Abstractions/Exceptions/PathTooLongException.cs b/src/ExtCore.FileStorage.Abstractions/Exceptions/PathTooLongException.cs new file mode 100644 index 0000000..bf360fe --- /dev/null +++ b/src/ExtCore.FileStorage.Abstractions/Exceptions/PathTooLongException.cs @@ -0,0 +1,17 @@ +// Copyright © 2018 Dmitry Sikorsky. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; + +namespace ExtCore.FileStorage +{ + /// + /// Represents a path too long file storage exception. + /// + public class PathTooLongException : FileStorageException + { + public PathTooLongException() : base() { } + public PathTooLongException(string message) : base(message) { } + public PathTooLongException(string message, Exception innerException) : base(message, innerException) { } + } +} \ No newline at end of file diff --git a/src/ExtCore.FileStorage.Abstractions/ExtCore.FileStorage.Abstractions.csproj b/src/ExtCore.FileStorage.Abstractions/ExtCore.FileStorage.Abstractions.csproj new file mode 100644 index 0000000..ae098bc --- /dev/null +++ b/src/ExtCore.FileStorage.Abstractions/ExtCore.FileStorage.Abstractions.csproj @@ -0,0 +1,15 @@ + + + + Dmitry Sikorsky + Copyright © 2018 Dmitry Sikorsky + The ExtCore.FileStorage extension component. Based on the ExtCore framework. + 4.0.0-alpha1 + netstandard2.0 + ExtCore.FileStorage.Abstractions + ExtCore.FileStorage.Abstractions + http://extcore.net/extcore_nuget_icon.png + http://extcore.net/ + + + diff --git a/src/ExtCore.FileStorage.Abstractions/FileStorageOptions.cs b/src/ExtCore.FileStorage.Abstractions/FileStorageOptions.cs new file mode 100644 index 0000000..b480954 --- /dev/null +++ b/src/ExtCore.FileStorage.Abstractions/FileStorageOptions.cs @@ -0,0 +1,31 @@ +// Copyright © 2018 Dmitry Sikorsky. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +namespace ExtCore.FileStorage +{ + /// + /// Represents generic file storage options. + /// + public class FileStorageOptions + { + /// + /// The origin that is used to connect to the file storage. Might be used to provide an API base URL. + /// + public string Origin { get; set; } + + /// + /// The identifier that is used to connect to the file storage. Might be used to provide a username or an application identifier. + /// + public string Identifier { get; set; } + + /// + /// The secret that is used to connect to the file storage. Might be used to provide a password, an application secret, or an API key. + /// + public string Secret { get; set; } + + /// + /// The root path that is used by the file storage. + /// + public string RootPath { get; set; } + } +} \ No newline at end of file diff --git a/src/ExtCore.FileStorage.Abstractions/IDirectoryProxy.cs b/src/ExtCore.FileStorage.Abstractions/IDirectoryProxy.cs new file mode 100644 index 0000000..501ac60 --- /dev/null +++ b/src/ExtCore.FileStorage.Abstractions/IDirectoryProxy.cs @@ -0,0 +1,77 @@ +// Copyright © 2018 Dmitry Sikorsky. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Collections.Generic; +using System.Threading.Tasks; + +namespace ExtCore.FileStorage.Abstractions +{ + /// + /// Describes a generic directory proxy to manipulate an underlying directory with a specified relative path. + /// + public interface IDirectoryProxy + { + /// + /// The path of the underlying directory relatively to the root one. + /// + string RelativePath { get; } + + /// + /// Checks if the underlying directory exists. + /// + /// Returns a flag indicating if the underlying directory exists. + Task ExistsAsync(); + + /// + /// Creates the underlying directory. + /// + /// + /// + /// + /// + Task CreateAsync(); + + /// + /// Moves the underlying directory. + /// + /// + /// + /// + /// + /// + /// + /// + Task MoveAsync(string destinationRelativePath); + + /// + /// Deletes the underlying directory. + /// + /// Pass true to remove all the underlying directory content recursively; otherwise false. + /// + /// + /// + /// + Task DeleteAsync(bool recursive); + + /// + /// Gets the directory proxies for the directories inside the underlying one. + /// + /// The directory proxies for the directories inside the underlying one + /// + /// + /// + /// + Task> GetDirectoryProxiesAsync(); + + /// + /// Gets the file proxies for the files inside the underlying one. + /// + /// The file proxies for the files inside the underlying directory. + /// + /// + /// + /// + Task> GetFileProxiesAsync(); + } +} \ No newline at end of file diff --git a/src/ExtCore.FileStorage.Abstractions/IFileProxy.cs b/src/ExtCore.FileStorage.Abstractions/IFileProxy.cs new file mode 100644 index 0000000..059392a --- /dev/null +++ b/src/ExtCore.FileStorage.Abstractions/IFileProxy.cs @@ -0,0 +1,107 @@ +// Copyright © 2018 Dmitry Sikorsky. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.IO; +using System.Threading.Tasks; + +namespace ExtCore.FileStorage.Abstractions +{ + /// + /// Describes a generic file proxy to manipulate an underlying file with a specified relative path and a filename. + /// + public interface IFileProxy + { + /// + /// The path of the underlying file relatively to the root one. + /// + string RelativePath { get; } + + /// + /// The filename of the underlying file. + /// + string Filename { get; } + + /// + /// Checks if the underlying file exists. + /// + /// Returns a flag indicating if the underlying file exists. + Task ExistsAsync(); + + /// + /// Reads content of the underlying file as a stream. + /// + /// Content of the underlying file as a stream. + /// + /// + /// + /// + /// + Task ReadStreamAsync(); + + /// + /// Reads content of the underlying file as a byte array. + /// + /// Content of the underlying file as a byte array. + /// + /// + /// + /// + /// + Task ReadBytesAsync(); + + /// + /// Reads content of the underlying file as a text string. + /// + /// Content of the underlying file as a text string. + /// + /// + /// + /// + /// + Task ReadTextAsync(); + + /// + /// Writes content to the underlying file as a stream. + /// + /// Content to write to the underlying file as a stream. + /// + /// + /// + /// + /// + Task WriteStreamAsync(Stream inputStream); + + /// + /// Writes content to the underlying file as a byte array. + /// + /// Content to write to the underlying file as a byte array. + /// + /// + /// + /// + /// + Task WriteBytesAsync(byte[] bytes); + + /// + /// Writes content to the underlying file as a text string. + /// + /// Content to write to the underlying file as a text string. + /// + /// + /// + /// + /// + Task WriteTextAsync(string text); + + /// + /// Deletes the underlying file. + /// + /// + /// + /// + /// + /// + Task DeleteAsync(); + } +} \ No newline at end of file diff --git a/src/ExtCore.FileStorage.Abstractions/IFileStorage.cs b/src/ExtCore.FileStorage.Abstractions/IFileStorage.cs new file mode 100644 index 0000000..72b4cc8 --- /dev/null +++ b/src/ExtCore.FileStorage.Abstractions/IFileStorage.cs @@ -0,0 +1,26 @@ +// Copyright © 2018 Dmitry Sikorsky. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +namespace ExtCore.FileStorage.Abstractions +{ + /// + /// Describes a generic file storage that allows to manipulate directories and files via proxies. + /// + public interface IFileStorage + { + /// + /// Creates a directory proxy which allows to manipulate an underlying directory with a specified relative path. + /// + /// The path of the underlying directory relatively to the root one. + /// Created directory proxy. + IDirectoryProxy CreateDirectoryProxy(string relativePath); + + /// + /// Creates a file proxy which allows to manipulate an underlying file with a specified relative path and a filename. + /// + /// The path of the underlying file relatively to the root one. + /// The filename of the underlying file. + /// Created file proxy. + IFileProxy CreateFileProxy(string relativePath, string filename); + } +} \ No newline at end of file diff --git a/src/ExtCore.FileStorage.Dropbox/DirectoryProxy.cs b/src/ExtCore.FileStorage.Dropbox/DirectoryProxy.cs new file mode 100644 index 0000000..89b7401 --- /dev/null +++ b/src/ExtCore.FileStorage.Dropbox/DirectoryProxy.cs @@ -0,0 +1,247 @@ +// Copyright © 2018 Dmitry Sikorsky. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using Dropbox.Api; +using Dropbox.Api.Files; +using ExtCore.FileStorage.Abstractions; + +namespace ExtCore.FileStorage.Dropbox +{ + /// + /// Implements the IDirectoryProxy interface and represents a directory in a Dropbox account. + /// + public class DirectoryProxy : IDirectoryProxy + { + private readonly string accessToken; + private readonly string rootPath; + private readonly string path; + + /// + /// The path of the underlying directory relatively to the root one. + /// + public string RelativePath { get; private set; } + + /// + /// Initializes a new instance of the DirectoryProxy class. + /// + /// The Dropbox's account access token. + /// The root path of the underlying directory's relative one. + /// The path of the underlying directory relatively to the root one. + /// + /// + public DirectoryProxy(string accessToken, string rootPath, string relativePath) + { + if (accessToken == string.Empty) + throw new ArgumentException($"Value can't be empty. Parameter name: accessToken."); + + if (accessToken == null) + throw new ArgumentNullException($"Value can't be null. Parameter name: accessToken.", default(Exception)); + + if (relativePath == string.Empty) + throw new ArgumentException($"Value can't be empty. Parameter name: relativePath."); + + if (relativePath == null) + throw new ArgumentNullException($"Value can't be null. Parameter name: relativePath.", default(Exception)); + + this.accessToken = accessToken; + this.rootPath = rootPath; + this.RelativePath = relativePath; + this.path = RelativeUrl.Combine(this.rootPath, this.RelativePath); + + if (string.Equals(this.path, "/")) + this.path = string.Empty; + } + + /// + /// Checks if the underlying directory exists. + /// + /// Returns a flag indicating if the underlying directory exists. + public async Task ExistsAsync() + { + try + { + using (DropboxClient dropboxClient = new DropboxClient(this.accessToken)) + { + Metadata metadata = await dropboxClient.Files.GetMetadataAsync(this.path); + + return metadata.IsFolder; + } + } + + catch { return false; } + } + + /// + /// Creates the underlying directory. + /// + /// + /// + /// + /// + public async Task CreateAsync() + { + try + { + using (DropboxClient dropboxClient = new DropboxClient(this.accessToken)) + await dropboxClient.Files.CreateFolderV2Async(this.path); + } + + catch (Exception e) + { + throw new FileStorageException($"Generic file storage exception: \"{this.path}\". See inner exception for details.", e); + } + } + + /// + /// Moves the underlying directory. + /// + /// + /// + /// + /// + /// + /// + /// + public async Task MoveAsync(string destinationRelativePath) + { + if (destinationRelativePath == string.Empty) + throw new ArgumentException($"Value can't be empty. Parameter name: destinationRelativePath."); + + if (destinationRelativePath == null) + throw new ArgumentNullException($"Value can't be null. Parameter name: destinationRelativePath.", default(Exception)); + + try + { + using (DropboxClient dropboxClient = new DropboxClient(this.accessToken)) + await dropboxClient.Files.MoveV2Async(this.path, RelativeUrl.Combine(this.rootPath, destinationRelativePath)); + } + + catch (ApiException e) + { + if (e.ErrorResponse.IsFromLookup) + throw new DirectoryNotFoundException($"Directory not found: \"{this.path}\". See inner exception for details.", e); + + throw new FileStorageException($"Generic file storage exception: \"{this.path}\". See inner exception for details.", e); + } + + catch (Exception e) + { + throw new FileStorageException($"Generic file storage exception: \"{this.path}\". See inner exception for details.", e); + } + } + + /// + /// Deletes the underlying directory. + /// + /// Pass true to remove all the underlying directory content recursively; otherwise false. + /// + /// + /// + /// + public async Task DeleteAsync(bool recursive) + { + try + { + using (DropboxClient dropboxClient = new DropboxClient(this.accessToken)) + await dropboxClient.Files.DeleteV2Async(this.path); + } + + catch (ApiException e) + { + if (e.ErrorResponse.IsPathLookup) + throw new DirectoryNotFoundException($"Directory not found: \"{this.path}\". See inner exception for details.", e); + + throw new FileStorageException($"Generic file storage exception: \"{this.path}\". See inner exception for details.", e); + } + + catch (Exception e) + { + throw new FileStorageException($"Generic file storage exception: \"{this.path}\". See inner exception for details.", e); + } + } + + /// + /// Gets the directory proxies for the directories inside the underlying one. + /// + /// The directory proxies for the directories inside the underlying one + /// + /// + /// + /// + public async Task> GetDirectoryProxiesAsync() + { + using (DropboxClient dropboxClient = new DropboxClient(this.accessToken)) + { + IList directoryProxies = new List(); + + try + { + foreach (Metadata metadata in (await dropboxClient.Files.ListFolderAsync(this.path)).Entries.Where(m => m.IsFolder)) + directoryProxies.Add(new DirectoryProxy(this.accessToken, this.rootPath, metadata.PathDisplay.Substring(this.rootPath.Length))); + } + + catch (ApiException e) + { + if (e.ErrorResponse.IsPath) + throw new DirectoryNotFoundException($"Directory not found: \"{this.path}\". See inner exception for details.", e); + + throw new FileStorageException($"Generic file storage exception: \"{this.path}\". See inner exception for details.", e); + } + + catch (Exception e) + { + throw new FileStorageException($"Generic file storage exception: \"{this.path}\". See inner exception for details.", e); + } + + return directoryProxies; + } + } + + /// + /// Gets the file proxies for the files inside the underlying one. + /// + /// The file proxies for the files inside the underlying directory. + /// + /// + /// + /// + public async Task> GetFileProxiesAsync() + { + using (DropboxClient dropboxClient = new DropboxClient(this.accessToken)) + { + IList fileProxies = new List(); + + try + { + foreach (Metadata metadata in (await dropboxClient.Files.ListFolderAsync(this.path)).Entries.Where(m => m.IsFile)) + { + string relativePath = metadata.PathDisplay; + + relativePath = relativePath.Substring(this.rootPath.Length); + relativePath = relativePath.Remove(relativePath.LastIndexOf("/")); + fileProxies.Add(new FileProxy(this.accessToken, this.rootPath, relativePath, metadata.Name)); + } + } + + catch (ApiException e) + { + if (e.ErrorResponse.IsPath) + throw new DirectoryNotFoundException($"Directory not found: \"{this.path}\". See inner exception for details.", e); + + throw new FileStorageException($"Generic file storage exception: \"{this.path}\". See inner exception for details.", e); + } + + catch (Exception e) + { + throw new FileStorageException($"Generic file storage exception: \"{this.path}\". See inner exception for details.", e); + } + + return fileProxies; + } + } + } +} \ No newline at end of file diff --git a/src/ExtCore.FileStorage.Dropbox/ExtCore.FileStorage.Dropbox.csproj b/src/ExtCore.FileStorage.Dropbox/ExtCore.FileStorage.Dropbox.csproj new file mode 100644 index 0000000..7922579 --- /dev/null +++ b/src/ExtCore.FileStorage.Dropbox/ExtCore.FileStorage.Dropbox.csproj @@ -0,0 +1,24 @@ + + + + Dmitry Sikorsky + Copyright © 2018 Dmitry Sikorsky + The ExtCore.FileStorage extension component. Based on the ExtCore framework. + 4.0.0-alpha1 + netstandard2.0 + ExtCore.FileStorage.Dropbox + ExtCore.FileStorage.Dropbox + http://extcore.net/extcore_nuget_icon.png + http://extcore.net/ + + + + + + + + + + + + diff --git a/src/ExtCore.FileStorage.Dropbox/FileProxy.cs b/src/ExtCore.FileStorage.Dropbox/FileProxy.cs new file mode 100644 index 0000000..ae8cf57 --- /dev/null +++ b/src/ExtCore.FileStorage.Dropbox/FileProxy.cs @@ -0,0 +1,283 @@ +// Copyright © 2018 Dmitry Sikorsky. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.IO; +using System.Text; +using System.Threading.Tasks; +using Dropbox.Api; +using Dropbox.Api.Files; +using Dropbox.Api.Stone; +using ExtCore.FileStorage.Abstractions; + +namespace ExtCore.FileStorage.Dropbox +{ + /// + /// Implements the IDirectoryProxy interface and represents a file in a Dropbox account. + /// + public class FileProxy : IFileProxy + { + private readonly string accessToken; + private readonly string rootPath; + private readonly string filepath; + + /// + /// The path of the underlying file relatively to the root one. + /// + public string RelativePath { get; private set; } + + /// + /// The filename of the underlying file. + /// + public string Filename { get; private set; } + + /// + /// Initializes a new instance of the FileProxy class. + /// + /// The Dropbox's account access token. + /// The root path of the underlying file's relative one. + /// The path of the underlying file relatively to the root one. + /// The filename of the underlying file. + /// + /// + public FileProxy(string accessToken, string rootPath, string relativePath, string filename) + { + if (accessToken == string.Empty) + throw new ArgumentException($"Value can't be empty. Parameter name: accessToken."); + + if (accessToken == null) + throw new ArgumentNullException($"Value can't be null. Parameter name: accessToken.", default(Exception)); + + if (relativePath == string.Empty) + throw new ArgumentException($"Value can't be empty. Parameter name: relativePath."); + + if (relativePath == null) + throw new ArgumentNullException($"Value can't be null. Parameter name: relativePath.", default(Exception)); + + if (filename == string.Empty) + throw new ArgumentException($"Value can't be empty. Parameter name: filename."); + + if (filename == null) + throw new ArgumentNullException($"Value can't be null. Parameter name: filename.", default(Exception)); + + this.accessToken = accessToken; + this.rootPath = rootPath; + this.RelativePath = relativePath; + this.Filename = filename; + this.filepath = RelativeUrl.Combine(this.rootPath, this.RelativePath, this.Filename); + } + + /// + /// Checks if the underlying file exists. + /// + /// Returns a flag indicating if the underlying file exists. + public async Task ExistsAsync() + { + try + { + using (DropboxClient dropboxClient = new DropboxClient(this.accessToken)) + { + Metadata metadata = await dropboxClient.Files.GetMetadataAsync(this.filepath); + + return metadata.IsFile; + } + } + + catch { return false; } + } + + /// + /// Reads content of the underlying file as a byte array. + /// + /// Content of the underlying file as a byte array. + /// + /// + /// + /// + /// + public async Task ReadStreamAsync() + { + try + { + using (DropboxClient dropboxClient = new DropboxClient(this.accessToken)) + using (IDownloadResponse response = await dropboxClient.Files.DownloadAsync(this.filepath)) + return await response.GetContentAsStreamAsync(); + } + + catch (ApiException e) + { + if (e.ErrorResponse.IsPath) + throw new DirectoryNotFoundException($"Directory not found: \"{this.filepath}\". See inner exception for details.", e); + + throw new FileStorageException($"Generic file storage exception: \"{this.filepath}\". See inner exception for details.", e); + } + + catch (Exception e) + { + throw new FileStorageException($"Generic file storage exception: \"{this.filepath}\". See inner exception for details.", e); + } + } + + /// + /// Reads content of the underlying file as a byte array. + /// + /// Content of the underlying file as a byte array. + /// + /// + /// + /// + /// + public async Task ReadBytesAsync() + { + try + { + using (DropboxClient dropboxClient = new DropboxClient(this.accessToken)) + using (IDownloadResponse response = await dropboxClient.Files.DownloadAsync(this.filepath)) + return await response.GetContentAsByteArrayAsync(); + } + + catch (ApiException e) + { + if (e.ErrorResponse.IsPath) + throw new DirectoryNotFoundException($"Directory not found: \"{this.filepath}\". See inner exception for details.", e); + + throw new FileStorageException($"Generic file storage exception: \"{this.filepath}\". See inner exception for details.", e); + } + + catch (Exception e) + { + throw new FileStorageException($"Generic file storage exception: \"{this.filepath}\". See inner exception for details.", e); + } + } + + /// + /// Reads content of the underlying file as a text string. + /// + /// Content of the underlying file as a text string. + /// + /// + /// + /// + /// + public async Task ReadTextAsync() + { + try + { + using (DropboxClient dropboxClient = new DropboxClient(this.accessToken)) + using (IDownloadResponse response = await dropboxClient.Files.DownloadAsync(this.filepath)) + return await response.GetContentAsStringAsync(); + } + + catch (ApiException e) + { + if (e.ErrorResponse.IsPath) + throw new DirectoryNotFoundException($"Directory not found: \"{this.filepath}\". See inner exception for details.", e); + + throw new FileStorageException($"Generic file storage exception: \"{this.filepath}\". See inner exception for details.", e); + } + + catch (Exception e) + { + throw new FileStorageException($"Generic file storage exception: \"{this.filepath}\". See inner exception for details.", e); + } + } + + /// + /// Writes content to the underlying file as a stream. + /// + /// Content to write to the underlying file as a stream. + /// + /// + /// + /// + /// + public async Task WriteStreamAsync(Stream inputStream) + { + try + { + using (DropboxClient dropboxClient = new DropboxClient(this.accessToken)) + await dropboxClient.Files.UploadAsync(this.filepath, WriteMode.Overwrite.Instance, body: inputStream); + } + + catch (Exception e) + { + throw new FileStorageException($"Generic file storage exception: \"{this.filepath}\". See inner exception for details.", e); + } + } + + /// + /// Writes content to the underlying file as a byte array. + /// + /// Content to write to the underlying file as a byte array. + /// + /// + /// + /// + /// + public async Task WriteBytesAsync(byte[] bytes) + { + try + { + using (MemoryStream inputStream = new MemoryStream(bytes)) + await this.WriteStreamAsync(inputStream); + } + + catch (Exception e) + { + throw new FileStorageException($"Generic file storage exception: \"{this.filepath}\". See inner exception for details.", e); + } + } + + /// + /// Writes content to the underlying file as a text string. + /// + /// Content to write to the underlying file as a text string. + /// + /// + /// + /// + /// + public async Task WriteTextAsync(string text) + { + try + { + await this.WriteBytesAsync(Encoding.UTF8.GetBytes(text)); + } + + catch (Exception e) + { + throw new FileStorageException($"Generic file storage exception: \"{this.filepath}\". See inner exception for details.", e); + } + } + + /// + /// Deletes the underlying file. + /// + /// + /// + /// + /// + /// + public async Task DeleteAsync() + { + try + { + using (DropboxClient dropboxClient = new DropboxClient(this.accessToken)) + await dropboxClient.Files.DeleteV2Async(this.filepath); + } + + catch (ApiException e) + { + if (e.ErrorResponse.IsPath) + throw new DirectoryNotFoundException($"Directory not found: \"{this.filepath}\". See inner exception for details.", e); + + throw new FileStorageException($"Generic file storage exception: \"{this.filepath}\". See inner exception for details.", e); + } + + catch (Exception e) + { + throw new FileStorageException($"Generic file storage exception: \"{this.filepath}\". See inner exception for details.", e); + } + } + } +} \ No newline at end of file diff --git a/src/ExtCore.FileStorage.Dropbox/FileStorage.cs b/src/ExtCore.FileStorage.Dropbox/FileStorage.cs new file mode 100644 index 0000000..4df55ab --- /dev/null +++ b/src/ExtCore.FileStorage.Dropbox/FileStorage.cs @@ -0,0 +1,48 @@ +// Copyright © 2018 Dmitry Sikorsky. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using ExtCore.FileStorage.Abstractions; +using Microsoft.Extensions.Options; + +namespace ExtCore.FileStorage.Dropbox +{ + /// + /// Implements the IFileStorage interface and represents a file storage in a Dropbox account. + /// + public class FileStorage : IFileStorage + { + private readonly string secret; + private readonly string rootPath; + + /// + /// Initializes a new instance of the FileStorage class. + /// + /// The options that are used to configure the file storage root path. + public FileStorage(IOptions options) + { + this.secret = options.Value.Secret; + this.rootPath = options.Value.RootPath; + } + + /// + /// Creates a directory proxy which allows to manipulate an underlying directory with a specified relative path. + /// + /// The path of the underlying directory relatively to the root one. + /// Created directory proxy. + public IDirectoryProxy CreateDirectoryProxy(string relativePath) + { + return new DirectoryProxy(this.secret, this.rootPath, relativePath); + } + + /// + /// Creates a file proxy which allows to manipulate an underlying file with a specified relative path and a filename. + /// + /// The path of the underlying file relatively to the root one. + /// The filename of the underlying file. + /// Created file proxy. + public IFileProxy CreateFileProxy(string relativePath, string filename) + { + return new FileProxy(this.secret, this.rootPath, relativePath, filename); + } + } +} \ No newline at end of file diff --git a/src/ExtCore.FileStorage.Dropbox/RelativeUrl.cs b/src/ExtCore.FileStorage.Dropbox/RelativeUrl.cs new file mode 100644 index 0000000..4deceeb --- /dev/null +++ b/src/ExtCore.FileStorage.Dropbox/RelativeUrl.cs @@ -0,0 +1,21 @@ +// Copyright © 2018 Dmitry Sikorsky. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System.Text; + +namespace ExtCore.FileStorage.Dropbox +{ + public class RelativeUrl + { + public static string Combine(params string[] segments) + { + StringBuilder result = new StringBuilder(); + + foreach (string segment in segments) + if (!string.IsNullOrEmpty(segment)) + result.Append((segment.StartsWith("/") ? null : "/") + segment.TrimEnd('/')); + + return result.ToString(); + } + } +} \ No newline at end of file diff --git a/src/ExtCore.FileStorage.FileSystem/DirectoryProxy.cs b/src/ExtCore.FileStorage.FileSystem/DirectoryProxy.cs new file mode 100644 index 0000000..5b1924e --- /dev/null +++ b/src/ExtCore.FileStorage.FileSystem/DirectoryProxy.cs @@ -0,0 +1,272 @@ +// Copyright © 2018 Dmitry Sikorsky. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Threading.Tasks; +using ExtCore.FileStorage.Abstractions; + +namespace ExtCore.FileStorage.FileSystem +{ + /// + /// Implements the IDirectoryProxy interface and represents a directory in a file system. + /// + public class DirectoryProxy : IDirectoryProxy + { + private readonly string rootPath; + private readonly string path; + + /// + /// The path of the underlying directory relatively to the root one. + /// + public string RelativePath { get; private set; } + + /// + /// Initializes a new instance of the DirectoryProxy class. + /// + /// The root path of the underlying directory's relative one. + /// The path of the underlying directory relatively to the root one. + /// + /// + public DirectoryProxy(string rootPath, string relativePath) + { + if (relativePath == string.Empty) + throw new ArgumentException($"Value can't be empty. Parameter name: relativePath."); + + if (relativePath == null) + throw new ArgumentNullException($"Value can't be null. Parameter name: relativePath.", default(Exception)); + + this.rootPath = rootPath; + this.RelativePath = relativePath; + this.path = this.rootPath + this.RelativePath; + } + + /// + /// Checks if the underlying directory exists. + /// + /// Returns a flag indicating if the underlying directory exists. + public async Task ExistsAsync() + { + return await Task.Factory.StartNew(() => Directory.Exists(this.path)); + } + + /// + /// Creates the underlying directory. + /// + /// + /// + /// + /// + public async Task CreateAsync() + { + await Task.Factory.StartNew(() => + { + try + { + Directory.CreateDirectory(this.path); + } + + catch (UnauthorizedAccessException e) + { + throw new AccessDeniedException($"Access denied: \"{this.path}\". See inner exception for details.", e); + } + + catch (System.IO.DirectoryNotFoundException e) + { + throw new DirectoryNotFoundException($"Directory not found: \"{this.path}\". See inner exception for details.", e); + } + + catch (System.IO.PathTooLongException e) + { + throw new PathTooLongException($"Path too long: \"{this.path}\". See inner exception for details.", e); + } + + catch (Exception e) + { + throw new FileStorageException($"Generic file storage exception: \"{this.path}\". See inner exception for details.", e); + } + }); + } + + /// + /// Moves the underlying directory. + /// + /// + /// + /// + /// + /// + /// + /// + public async Task MoveAsync(string destinationRelativePath) + { + if (destinationRelativePath == string.Empty) + throw new ArgumentException($"Value can't be empty. Parameter name: destinationRelativePath."); + + if (destinationRelativePath == null) + throw new ArgumentNullException($"Value can't be null. Parameter name: destinationRelativePath.", default(Exception)); + + await Task.Factory.StartNew(() => + { + try + { + Directory.Move(this.path, this.rootPath + destinationRelativePath); + } + + catch (UnauthorizedAccessException e) + { + throw new AccessDeniedException($"Access denied: \"{this.path}\". See inner exception for details.", e); + } + + catch (System.IO.DirectoryNotFoundException e) + { + throw new DirectoryNotFoundException($"Directory not found: \"{this.path}\". See inner exception for details.", e); + } + + catch (System.IO.PathTooLongException e) + { + throw new PathTooLongException($"Path too long: \"{this.path}\". See inner exception for details.", e); + } + + catch (Exception e) + { + throw new FileStorageException($"Generic file storage exception: \"{this.path}\". See inner exception for details.", e); + } + }); + } + + /// + /// Deletes the underlying directory. + /// + /// Pass true to remove all the underlying directory content recursively; otherwise false. + /// + /// + /// + /// + public async Task DeleteAsync(bool recursive) + { + await Task.Factory.StartNew(() => + { + try + { + Directory.Delete(this.path, recursive); + } + + catch (UnauthorizedAccessException e) + { + throw new AccessDeniedException($"Access denied: \"{this.path}\". See inner exception for details.", e); + } + + catch (System.IO.DirectoryNotFoundException e) + { + throw new DirectoryNotFoundException($"Directory not found: \"{this.path}\". See inner exception for details.", e); + } + + catch (System.IO.PathTooLongException e) + { + throw new PathTooLongException($"Path too long: \"{this.path}\". See inner exception for details.", e); + } + + catch (Exception e) + { + throw new FileStorageException($"Generic file storage exception: \"{this.path}\". See inner exception for details.", e); + } + }); + } + + /// + /// Gets the directory proxies for the directories inside the underlying one. + /// + /// The directory proxies for the directories inside the underlying one + /// + /// + /// + /// + public async Task> GetDirectoryProxiesAsync() + { + return await Task>.Factory.StartNew( + () => + { + try + { + return Directory.GetDirectories(this.path).Select( + d => new DirectoryProxy(this.rootPath, d.Substring(this.rootPath.Length)) + ); + } + + catch (UnauthorizedAccessException e) + { + throw new AccessDeniedException($"Access denied: \"{this.path}\". See inner exception for details.", e); + } + + catch (System.IO.DirectoryNotFoundException e) + { + throw new DirectoryNotFoundException($"Directory not found: \"{this.path}\". See inner exception for details.", e); + } + + catch (System.IO.PathTooLongException e) + { + throw new PathTooLongException($"Path too long: \"{this.path}\". See inner exception for details.", e); + } + + catch (Exception e) + { + throw new FileStorageException($"Generic file storage exception: \"{this.path}\". See inner exception for details.", e); + } + } + ); + } + + /// + /// Gets the file proxies for the files inside the underlying one. + /// + /// The file proxies for the files inside the underlying directory. + /// + /// + /// + /// + public async Task> GetFileProxiesAsync() + { + return await Task>.Factory.StartNew( + () => + { + try + { + return Directory.GetFiles(this.path).Select( + f => + { + string relativePath = f; + + relativePath = relativePath.Substring(this.rootPath.Length); + relativePath = relativePath.Remove(relativePath.LastIndexOf(@"\")); + return new FileProxy(this.rootPath, relativePath, f.Substring(f.LastIndexOf(@"\") + 1)); + } + ); + } + + catch (UnauthorizedAccessException e) + { + throw new AccessDeniedException($"Access denied: \"{this.path}\". See inner exception for details.", e); + } + + catch (System.IO.DirectoryNotFoundException e) + { + throw new DirectoryNotFoundException($"Directory not found: \"{this.path}\". See inner exception for details.", e); + } + + catch (System.IO.PathTooLongException e) + { + throw new PathTooLongException($"Path too long: \"{this.path}\". See inner exception for details.", e); + } + + catch (Exception e) + { + throw new FileStorageException($"Generic file storage exception: \"{this.path}\". See inner exception for details.", e); + } + } + ); + } + } +} \ No newline at end of file diff --git a/src/ExtCore.FileStorage.FileSystem/ExtCore.FileStorage.FileSystem.csproj b/src/ExtCore.FileStorage.FileSystem/ExtCore.FileStorage.FileSystem.csproj new file mode 100644 index 0000000..005084f --- /dev/null +++ b/src/ExtCore.FileStorage.FileSystem/ExtCore.FileStorage.FileSystem.csproj @@ -0,0 +1,23 @@ + + + + Dmitry Sikorsky + Copyright © 2018 Dmitry Sikorsky + The ExtCore.FileStorage extension component. Based on the ExtCore framework. + 4.0.0-alpha1 + netstandard2.0 + ExtCore.FileStorage.FileSystem + ExtCore.FileStorage.FileSystem + http://extcore.net/extcore_nuget_icon.png + http://extcore.net/ + + + + + + + + + + + diff --git a/src/ExtCore.FileStorage.FileSystem/FileProxy.cs b/src/ExtCore.FileStorage.FileSystem/FileProxy.cs new file mode 100644 index 0000000..680b914 --- /dev/null +++ b/src/ExtCore.FileStorage.FileSystem/FileProxy.cs @@ -0,0 +1,395 @@ +// Copyright © 2018 Dmitry Sikorsky. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.IO; +using System.Security; +using System.Threading.Tasks; +using ExtCore.FileStorage.Abstractions; + +namespace ExtCore.FileStorage.FileSystem +{ + /// + /// Implements the IDirectoryProxy interface and represents a file in a file system. + /// + public class FileProxy : IFileProxy + { + private readonly string rootPath; + private readonly string filepath; + + /// + /// The path of the underlying file relatively to the root one. + /// + public string RelativePath { get; private set; } + + /// + /// The filename of the underlying file. + /// + public string Filename { get; private set; } + + /// + /// Initializes a new instance of the FileProxy class. + /// + /// The root path of the underlying file's relative one. + /// The path of the underlying file relatively to the root one. + /// The filename of the underlying file. + /// + /// + public FileProxy(string rootPath, string relativePath, string filename) + { + if (relativePath == string.Empty) + throw new ArgumentException($"Value can't be empty. Parameter name: relativePath."); + + if (relativePath == null) + throw new ArgumentNullException($"Value can't be null. Parameter name: relativePath.", default(Exception)); + + if (filename == string.Empty) + throw new ArgumentException($"Value can't be empty. Parameter name: filename."); + + if (filename == null) + throw new ArgumentNullException($"Value can't be null. Parameter name: filename.", default(Exception)); + + + this.rootPath = rootPath; + this.RelativePath = relativePath; + this.Filename = filename; + this.filepath = this.rootPath + this.RelativePath + this.Filename; + } + + /// + /// Checks if the underlying file exists. + /// + /// Returns a flag indicating if the underlying file exists. + public async Task ExistsAsync() + { + return await Task.Factory.StartNew(() => File.Exists(this.filepath)); + } + + /// + /// Reads content of the underlying file as a stream. + /// + /// Content of the underlying file as a stream. + /// + /// + /// + /// + /// + public async Task ReadStreamAsync() + { + return await Task.Factory.StartNew(() => + { + try + { + return File.Open(this.filepath, FileMode.Open); + } + + catch (UnauthorizedAccessException e) + { + throw new AccessDeniedException($"Access denied: \"{this.filepath}\". See inner exception for details.", e); + } + + catch (System.IO.DirectoryNotFoundException e) + { + throw new DirectoryNotFoundException($"Directory not found: \"{this.filepath}\". See inner exception for details.", e); + } + + catch (System.IO.FileNotFoundException e) + { + throw new FileNotFoundException($"File not found: \"{this.filepath}\". See inner exception for details.", e); + } + + catch (System.IO.PathTooLongException e) + { + throw new PathTooLongException($"Path too long: \"{this.filepath}\". See inner exception for details.", e); + } + + catch (Exception e) + { + throw new FileStorageException($"Generic file storage exception: \"{this.filepath}\". See inner exception for details.", e); + } + }); + } + + /// + /// Reads content of the underlying file as a byte array. + /// + /// Content of the underlying file as a byte array. + /// + /// + /// + /// + /// + public async Task ReadBytesAsync() + { + return await Task.Factory.StartNew(() => + { + try + { + return File.ReadAllBytes(this.filepath); + } + + catch (UnauthorizedAccessException e) + { + throw new AccessDeniedException($"Access denied: \"{this.filepath}\". See inner exception for details.", e); + } + + catch (SecurityException e) + { + throw new AccessDeniedException($"Access denied: \"{this.filepath}\". See inner exception for details.", e); + } + + catch (System.IO.DirectoryNotFoundException e) + { + throw new DirectoryNotFoundException($"Directory not found: \"{this.filepath}\". See inner exception for details.", e); + } + + catch (System.IO.FileNotFoundException e) + { + throw new FileNotFoundException($"File not found: \"{this.filepath}\". See inner exception for details.", e); + } + + catch (System.IO.PathTooLongException e) + { + throw new PathTooLongException($"Path too long: \"{this.filepath}\". See inner exception for details.", e); + } + + catch (Exception e) + { + throw new FileStorageException($"Generic file storage exception: \"{this.filepath}\". See inner exception for details.", e); + } + }); + } + + /// + /// Reads content of the underlying file as a text string. + /// + /// Content of the underlying file as a text string. + /// + /// + /// + /// + /// + public async Task ReadTextAsync() + { + return await Task.Factory.StartNew(() => + { + try + { + return File.ReadAllText(this.filepath); + } + + catch (UnauthorizedAccessException e) + { + throw new AccessDeniedException($"Access denied: \"{this.filepath}\". See inner exception for details.", e); + } + + catch (SecurityException e) + { + throw new AccessDeniedException($"Access denied: \"{this.filepath}\". See inner exception for details.", e); + } + + catch (System.IO.DirectoryNotFoundException e) + { + throw new DirectoryNotFoundException($"Directory not found: \"{this.filepath}\". See inner exception for details.", e); + } + + catch (System.IO.FileNotFoundException e) + { + throw new FileNotFoundException($"File not found: \"{this.filepath}\". See inner exception for details.", e); + } + + catch (System.IO.PathTooLongException e) + { + throw new PathTooLongException($"Path too long: \"{this.filepath}\". See inner exception for details.", e); + } + + catch (Exception e) + { + throw new FileStorageException($"Generic file storage exception: \"{this.filepath}\". See inner exception for details.", e); + } + }); + } + + /// + /// Writes content to the underlying file as a stream. + /// + /// Content to write to the underlying file as a stream. + /// + /// + /// + /// + /// + public async Task WriteStreamAsync(Stream inputStream) + { + if (inputStream == null) + throw new ArgumentNullException($"Value can't be null. Parameter name: inputStream.", default(Exception)); + + await Task.Factory.StartNew(() => + { + try + { + using (Stream outputStream = File.Create(this.filepath)) + inputStream.CopyTo(outputStream); + } + + catch (UnauthorizedAccessException e) + { + throw new AccessDeniedException($"Access denied: \"{this.filepath}\". See inner exception for details.", e); + } + + catch (System.IO.DirectoryNotFoundException e) + { + throw new DirectoryNotFoundException($"Directory not found: \"{this.filepath}\". See inner exception for details.", e); + } + + catch (System.IO.PathTooLongException e) + { + throw new PathTooLongException($"Path too long: \"{this.filepath}\". See inner exception for details.", e); + } + + catch (Exception e) + { + throw new FileStorageException($"Generic file storage exception: \"{this.filepath}\". See inner exception for details.", e); + } + }); + } + + /// + /// Writes content to the underlying file as a byte array. + /// + /// Content to write to the underlying file as a byte array. + /// + /// + /// + /// + /// + public async Task WriteBytesAsync(byte[] bytes) + { + if (bytes == null) + throw new ArgumentNullException($"Value can't be null. Parameter name: bytes.", default(Exception)); + + await Task.Factory.StartNew(() => + { + try + { + File.WriteAllBytes(this.filepath, bytes); + } + + catch (UnauthorizedAccessException e) + { + throw new AccessDeniedException($"Access denied: \"{this.filepath}\". See inner exception for details.", e); + } + + catch (SecurityException e) + { + throw new AccessDeniedException($"Access denied: \"{this.filepath}\". See inner exception for details.", e); + } + + catch (System.IO.DirectoryNotFoundException e) + { + throw new DirectoryNotFoundException($"Directory not found: \"{this.filepath}\". See inner exception for details.", e); + } + + catch (System.IO.PathTooLongException e) + { + throw new PathTooLongException($"Path too long: \"{this.filepath}\". See inner exception for details.", e); + } + + catch (Exception e) + { + throw new FileStorageException($"Generic file storage exception: \"{this.filepath}\". See inner exception for details.", e); + } + }); + } + + /// + /// Writes content to the underlying file as a text string. + /// + /// Content to write to the underlying file as a text string. + /// + /// + /// + /// + /// + public async Task WriteTextAsync(string text) + { + if (text == null) + throw new ArgumentNullException($"Value can't be null. Parameter name: text.", default(Exception)); + + await Task.Factory.StartNew(() => + { + try + { + File.WriteAllText(this.filepath, text); + } + + catch (UnauthorizedAccessException e) + { + throw new AccessDeniedException($"Access denied: \"{this.filepath}\". See inner exception for details.", e); + } + + catch (SecurityException e) + { + throw new AccessDeniedException($"Access denied: \"{this.filepath}\". See inner exception for details.", e); + } + + catch (System.IO.DirectoryNotFoundException e) + { + throw new DirectoryNotFoundException($"Directory not found: \"{this.filepath}\". See inner exception for details.", e); + } + + catch (System.IO.PathTooLongException e) + { + throw new PathTooLongException($"Path too long: \"{this.filepath}\". See inner exception for details.", e); + } + + catch (Exception e) + { + throw new FileStorageException($"Generic file storage exception: \"{this.filepath}\". See inner exception for details.", e); + } + }); + } + + /// + /// Deletes the underlying file. + /// + /// + /// + /// + /// + /// + public async Task DeleteAsync() + { + await Task.Factory.StartNew(() => + { + if (!File.Exists(this.filepath)) + throw new FileNotFoundException($"File not found: \"{this.filepath}\".", null); + + try + { + File.Delete(this.filepath); + } + + catch (UnauthorizedAccessException e) + { + throw new AccessDeniedException($"Access denied: \"{this.filepath}\". See inner exception for details.", e); + } + + catch (System.IO.DirectoryNotFoundException e) + { + throw new DirectoryNotFoundException($"Directory not found: \"{this.filepath}\". See inner exception for details.", e); + } + + catch (System.IO.PathTooLongException e) + { + throw new PathTooLongException($"Path too long: \"{this.filepath}\". See inner exception for details.", e); + } + + catch (Exception e) + { + throw new FileStorageException($"Generic file storage exception: \"{this.filepath}\". See inner exception for details.", e); + } + }); + } + } +} \ No newline at end of file diff --git a/src/ExtCore.FileStorage.FileSystem/FileStorage.cs b/src/ExtCore.FileStorage.FileSystem/FileStorage.cs new file mode 100644 index 0000000..72692f4 --- /dev/null +++ b/src/ExtCore.FileStorage.FileSystem/FileStorage.cs @@ -0,0 +1,46 @@ +// Copyright © 2018 Dmitry Sikorsky. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using ExtCore.FileStorage.Abstractions; +using Microsoft.Extensions.Options; + +namespace ExtCore.FileStorage.FileSystem +{ + /// + /// Implements the IFileStorage interface and represents a file storage in a file system. + /// + public class FileStorage : IFileStorage + { + private readonly string rootPath; + + /// + /// Initializes a new instance of the FileStorage class. + /// + /// The options that are used to configure the file storage root path. + public FileStorage(IOptions options) + { + this.rootPath = options.Value.RootPath; + } + + /// + /// Creates a directory proxy which allows to manipulate an underlying directory with a specified relative path. + /// + /// The path of the underlying directory relatively to the root one. + /// Created directory proxy. + public IDirectoryProxy CreateDirectoryProxy(string relativePath) + { + return new DirectoryProxy(this.rootPath, relativePath); + } + + /// + /// Creates a file proxy which allows to manipulate an underlying file with a specified relative path and a filename. + /// + /// The path of the underlying file relatively to the root one. + /// The filename of the underlying file. + /// Created file proxy. + public IFileProxy CreateFileProxy(string relativePath, string filename) + { + return new FileProxy(this.rootPath, relativePath, filename); + } + } +} \ No newline at end of file diff --git a/src/ExtCore.FileStorage/Actions/AddDirectoryProxyAction.cs b/src/ExtCore.FileStorage/Actions/AddDirectoryProxyAction.cs new file mode 100644 index 0000000..c7c388e --- /dev/null +++ b/src/ExtCore.FileStorage/Actions/AddDirectoryProxyAction.cs @@ -0,0 +1,50 @@ +// Copyright © 2018 Dmitry Sikorsky. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Linq; +using System.Reflection; +using ExtCore.FileStorage.Abstractions; +using ExtCore.Infrastructure; +using ExtCore.Infrastructure.Actions; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Logging; + +namespace ExtCore.FileStorage.Actions +{ + /// + /// Implements the IConfigureServicesAction interface and + /// registers found implementation of the IDirectoryProxy interface inside the DI. + /// + public class AddDirectoryProxyAction : IConfigureServicesAction + { + /// + /// Priority of the action. The actions will be executed in the order specified by the priority (from smallest to largest). + /// + public int Priority => 1000; + + /// + /// Registers found implementation of the IDirectoryProxy interface inside the DI. + /// + /// + /// Will be provided by the ExtCore and might be used to register any service inside the DI. + /// + /// + /// Will be provided by the ExtCore and might be used to get any service that is registered inside the DI at this moment. + /// + public void Execute(IServiceCollection services, IServiceProvider serviceProvider) + { + Type type = ExtensionManager.GetImplementations()?.FirstOrDefault(t => !t.GetTypeInfo().IsAbstract); + + if (type == null) + { + ILogger logger = serviceProvider.GetService().CreateLogger("ExtCore.FileStorage"); + + logger.LogError("Implementation of ExtCore.FileStorage.Abstractions.IDirectoryProxy not found"); + return; + } + + services.AddScoped(typeof(IDirectoryProxy), type); + } + } +} \ No newline at end of file diff --git a/src/ExtCore.FileStorage/Actions/AddFileProxyAction.cs b/src/ExtCore.FileStorage/Actions/AddFileProxyAction.cs new file mode 100644 index 0000000..b84e783 --- /dev/null +++ b/src/ExtCore.FileStorage/Actions/AddFileProxyAction.cs @@ -0,0 +1,50 @@ +// Copyright © 2018 Dmitry Sikorsky. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Linq; +using System.Reflection; +using ExtCore.FileStorage.Abstractions; +using ExtCore.Infrastructure; +using ExtCore.Infrastructure.Actions; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Logging; + +namespace ExtCore.FileStorage.Actions +{ + /// + /// Implements the IConfigureServicesAction interface and + /// registers found implementation of the IFileProxy interface inside the DI. + /// + public class AddFileProxyAction : IConfigureServicesAction + { + /// + /// Priority of the action. The actions will be executed in the order specified by the priority (from smallest to largest). + /// + public int Priority => 1000; + + /// + /// Registers found implementation of the IFileProxy interface inside the DI. + /// + /// + /// Will be provided by the ExtCore and might be used to register any service inside the DI. + /// + /// + /// Will be provided by the ExtCore and might be used to get any service that is registered inside the DI at this moment. + /// + public void Execute(IServiceCollection services, IServiceProvider serviceProvider) + { + Type type = ExtensionManager.GetImplementations()?.FirstOrDefault(t => !t.GetTypeInfo().IsAbstract); + + if (type == null) + { + ILogger logger = serviceProvider.GetService().CreateLogger("ExtCore.FileStorage"); + + logger.LogError("Implementation of ExtCore.FileStorage.Abstractions.IFileProxy not found"); + return; + } + + services.AddScoped(typeof(IFileProxy), type); + } + } +} \ No newline at end of file diff --git a/src/ExtCore.FileStorage/Actions/AddFileStorageAction.cs b/src/ExtCore.FileStorage/Actions/AddFileStorageAction.cs new file mode 100644 index 0000000..89402ae --- /dev/null +++ b/src/ExtCore.FileStorage/Actions/AddFileStorageAction.cs @@ -0,0 +1,50 @@ +// Copyright © 2018 Dmitry Sikorsky. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Linq; +using System.Reflection; +using ExtCore.FileStorage.Abstractions; +using ExtCore.Infrastructure; +using ExtCore.Infrastructure.Actions; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Logging; + +namespace ExtCore.FileStorage.Actions +{ + /// + /// Implements the IConfigureServicesAction interface and + /// registers found implementation of the IFileStorage interface inside the DI. + /// + public class AddFileStorageAction : IConfigureServicesAction + { + /// + /// Priority of the action. The actions will be executed in the order specified by the priority (from smallest to largest). + /// + public int Priority => 1000; + + /// + /// Registers found implementation of the IFileStorage interface inside the DI. + /// + /// + /// Will be provided by the ExtCore and might be used to register any service inside the DI. + /// + /// + /// Will be provided by the ExtCore and might be used to get any service that is registered inside the DI at this moment. + /// + public void Execute(IServiceCollection services, IServiceProvider serviceProvider) + { + Type type = ExtensionManager.GetImplementations()?.FirstOrDefault(t => !t.GetTypeInfo().IsAbstract); + + if (type == null) + { + ILogger logger = serviceProvider.GetService().CreateLogger("ExtCore.FileStorage"); + + logger.LogError("Implementation of ExtCore.FileStorage.Abstractions.IFileStorage not found"); + return; + } + + services.AddScoped(typeof(IFileStorage), type); + } + } +} \ No newline at end of file diff --git a/src/ExtCore.FileStorage/ExtCore.FileStorage.csproj b/src/ExtCore.FileStorage/ExtCore.FileStorage.csproj new file mode 100644 index 0000000..9482ae1 --- /dev/null +++ b/src/ExtCore.FileStorage/ExtCore.FileStorage.csproj @@ -0,0 +1,20 @@ + + + + Dmitry Sikorsky + Copyright © 2018 Dmitry Sikorsky + The ExtCore.FileStorage extension component. Based on the ExtCore framework. + 4.0.0-alpha1 + netstandard2.0 + ExtCore.FileStorage + ExtCore.FileStorage + http://extcore.net/extcore_nuget_icon.png + http://extcore.net/ + + + + + + + + diff --git a/src/ExtCore.FileStorage/Extension.cs b/src/ExtCore.FileStorage/Extension.cs new file mode 100644 index 0000000..8c77f11 --- /dev/null +++ b/src/ExtCore.FileStorage/Extension.cs @@ -0,0 +1,33 @@ +// Copyright © 2018 Dmitry Sikorsky. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using ExtCore.Infrastructure; + +namespace ExtCore.FileStorage +{ + /// + /// Overrides the ExtensionBase class and provides the ExtCore.FileStorage extension information. + /// + public class Extension : ExtensionBase + { + /// + /// Gets the name of the extension. + /// + public override string Name => "ExtCore.FileStorage"; + + /// + /// Gets the URL of the extension. + /// + public override string Url => "http://extcore.net/"; + + /// + /// Gets the version of the extension. + /// + public override string Version => "4.0.0-alpha1"; + + /// + /// Gets the authors of the extension (separated by commas). + /// + public override string Authors => "Dmitry Sikorsky"; + } +} \ No newline at end of file From bc0f9069c124aded4ea0577db9e2e09501a6a5e2 Mon Sep 17 00:00:00 2001 From: Dmitry Sikorsky Date: Mon, 26 Nov 2018 21:15:43 +0200 Subject: [PATCH 47/81] Fixed path combination issues --- README.md | 2 +- .../ExtCore.Data.Abstractions.csproj | 2 +- .../ExtCore.Data.Dapper.MySql.csproj | 2 +- .../ExtCore.Data.Dapper.PostgreSql.csproj | 2 +- .../ExtCore.Data.Dapper.SqlServer.csproj | 2 +- .../ExtCore.Data.Dapper.Sqlite.csproj | 2 +- .../ExtCore.Data.Dapper.csproj | 2 +- src/ExtCore.Data.Dapper/Extension.cs | 2 +- .../ExtCore.Data.Entities.Abstractions.csproj | 2 +- .../ExtCore.Data.EntityFramework.MySql.csproj | 2 +- ...ore.Data.EntityFramework.PostgreSql.csproj | 2 +- ...Core.Data.EntityFramework.SqlServer.csproj | 2 +- ...ExtCore.Data.EntityFramework.Sqlite.csproj | 2 +- .../ExtCore.Data.EntityFramework.csproj | 2 +- src/ExtCore.Data.EntityFramework/Extension.cs | 2 +- src/ExtCore.Data/ExtCore.Data.csproj | 2 +- src/ExtCore.Data/Extension.cs | 2 +- src/ExtCore.Events/ExtCore.Events.csproj | 2 +- src/ExtCore.Events/Extension.cs | 2 +- .../ExtCore.FileStorage.Abstractions.csproj | 2 +- .../DirectoryProxy.cs | 15 +++++-------- .../ExtCore.FileStorage.Dropbox.csproj | 2 +- src/ExtCore.FileStorage.Dropbox/FileProxy.cs | 6 ----- .../RelativeUrl.cs | 18 +++++++-------- .../AbsolutePath.cs | 22 +++++++++++++++++++ .../DirectoryProxy.cs | 18 +++++---------- .../ExtCore.FileStorage.FileSystem.csproj | 2 +- .../FileProxy.cs | 9 +------- .../ExtCore.FileStorage.csproj | 2 +- src/ExtCore.FileStorage/Extension.cs | 2 +- .../ExtCore.Infrastructure.csproj | 2 +- .../ExtCore.Mvc.Infrastructure.csproj | 2 +- src/ExtCore.Mvc/ExtCore.Mvc.csproj | 2 +- src/ExtCore.Mvc/Extension.cs | 2 +- .../ExtCore.WebApplication.csproj | 2 +- 35 files changed, 72 insertions(+), 74 deletions(-) create mode 100644 src/ExtCore.FileStorage.FileSystem/AbsolutePath.cs diff --git a/README.md b/README.md index 9c204eb..91726f2 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# ExtCore 3.3.0 +# ExtCore 4.0.0-alpha2 [![Join the chat at https://gitter.im/ExtCore/ExtCore](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/ExtCore/ExtCore?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) diff --git a/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj b/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj index 8c50359..cb5862b 100644 --- a/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj +++ b/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data extension component. Based on the ExtCore framework. - 4.0.0-alpha1 + 4.0.0-alpha2 netstandard2.0 ExtCore.Data.Abstractions ExtCore.Data.Abstractions diff --git a/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj b/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj index 8c179d5..295d5fe 100644 --- a/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj +++ b/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 4.0.0-alpha1 + 4.0.0-alpha2 netstandard2.0 ExtCore.Data.Dapper.MySql ExtCore.Data.Dapper.MySql diff --git a/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj b/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj index f69d691..825ca90 100644 --- a/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj +++ b/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 4.0.0-alpha1 + 4.0.0-alpha2 netstandard2.0 ExtCore.Data.Dapper.PostgreSql ExtCore.Data.Dapper.PostgreSql diff --git a/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj b/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj index 3d57897..9d796c5 100644 --- a/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj +++ b/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 4.0.0-alpha1 + 4.0.0-alpha2 netstandard2.0 ExtCore.Data.Dapper.SqlServer ExtCore.Data.Dapper.SqlServer diff --git a/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj b/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj index 1b76fe4..06fa5d7 100644 --- a/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj +++ b/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 4.0.0-alpha1 + 4.0.0-alpha2 netstandard2.0 ExtCore.Data.Dapper.Sqlite ExtCore.Data.Dapper.Sqlite diff --git a/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj b/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj index e386174..c852f07 100644 --- a/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj +++ b/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 4.0.0-alpha1 + 4.0.0-alpha2 netstandard2.0 ExtCore.Data.Dapper ExtCore.Data.Dapper diff --git a/src/ExtCore.Data.Dapper/Extension.cs b/src/ExtCore.Data.Dapper/Extension.cs index 7c15002..d12623d 100644 --- a/src/ExtCore.Data.Dapper/Extension.cs +++ b/src/ExtCore.Data.Dapper/Extension.cs @@ -24,7 +24,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "4.0.0-alpha1"; + public override string Version => "4.0.0-alpha2"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj b/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj index ca2341c..7967769 100644 --- a/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj +++ b/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data extension component. Based on the ExtCore framework. - 4.0.0-alpha1 + 4.0.0-alpha2 netstandard2.0 ExtCore.Data.Entities.Abstractions ExtCore.Data.Entities.Abstractions diff --git a/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj b/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj index 68f5885..32fa55c 100644 --- a/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj +++ b/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 4.0.0-alpha1 + 4.0.0-alpha2 netstandard2.0 ExtCore.Data.EntityFramework.MySql ExtCore.Data.EntityFramework.MySql diff --git a/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj b/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj index 45297e1..4c55890 100644 --- a/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj +++ b/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 4.0.0-alpha1 + 4.0.0-alpha2 netstandard2.0 ExtCore.Data.EntityFramework.PostgreSql ExtCore.Data.EntityFramework.PostgreSql diff --git a/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj b/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj index 5318337..2869240 100644 --- a/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj +++ b/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 4.0.0-alpha1 + 4.0.0-alpha2 netstandard2.0 ExtCore.Data.EntityFramework.SqlServer ExtCore.Data.EntityFramework.SqlServer diff --git a/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj b/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj index 3279a60..ad3e669 100644 --- a/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj +++ b/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 4.0.0-alpha1 + 4.0.0-alpha2 netstandard2.0 ExtCore.Data.EntityFramework.Sqlite ExtCore.Data.EntityFramework.Sqlite diff --git a/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj b/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj index 833d602..a53be84 100644 --- a/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj +++ b/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 4.0.0-alpha1 + 4.0.0-alpha2 netstandard2.0 ExtCore.Data.EntityFramework ExtCore.Data.EntityFramework diff --git a/src/ExtCore.Data.EntityFramework/Extension.cs b/src/ExtCore.Data.EntityFramework/Extension.cs index 7d51e4a..c95fe16 100644 --- a/src/ExtCore.Data.EntityFramework/Extension.cs +++ b/src/ExtCore.Data.EntityFramework/Extension.cs @@ -24,7 +24,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "4.0.0-alpha1"; + public override string Version => "4.0.0-alpha2"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Data/ExtCore.Data.csproj b/src/ExtCore.Data/ExtCore.Data.csproj index bf128d7..d6c4110 100644 --- a/src/ExtCore.Data/ExtCore.Data.csproj +++ b/src/ExtCore.Data/ExtCore.Data.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data extension component. Based on the ExtCore framework. - 4.0.0-alpha1 + 4.0.0-alpha2 netstandard2.0 ExtCore.Data ExtCore.Data diff --git a/src/ExtCore.Data/Extension.cs b/src/ExtCore.Data/Extension.cs index 87fab38..107040e 100644 --- a/src/ExtCore.Data/Extension.cs +++ b/src/ExtCore.Data/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "4.0.0-alpha1"; + public override string Version => "4.0.0-alpha2"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Events/ExtCore.Events.csproj b/src/ExtCore.Events/ExtCore.Events.csproj index 9ba569b..8312758 100644 --- a/src/ExtCore.Events/ExtCore.Events.csproj +++ b/src/ExtCore.Events/ExtCore.Events.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Events extension component. Based on the ExtCore framework. - 4.0.0-alpha1 + 4.0.0-alpha2 netstandard2.0 ExtCore.Events ExtCore.Events diff --git a/src/ExtCore.Events/Extension.cs b/src/ExtCore.Events/Extension.cs index 86a6d15..d40c32a 100644 --- a/src/ExtCore.Events/Extension.cs +++ b/src/ExtCore.Events/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "4.0.0-alpha1"; + public override string Version => "4.0.0-alpha2"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.FileStorage.Abstractions/ExtCore.FileStorage.Abstractions.csproj b/src/ExtCore.FileStorage.Abstractions/ExtCore.FileStorage.Abstractions.csproj index ae098bc..5b36755 100644 --- a/src/ExtCore.FileStorage.Abstractions/ExtCore.FileStorage.Abstractions.csproj +++ b/src/ExtCore.FileStorage.Abstractions/ExtCore.FileStorage.Abstractions.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2018 Dmitry Sikorsky The ExtCore.FileStorage extension component. Based on the ExtCore framework. - 4.0.0-alpha1 + 4.0.0-alpha2 netstandard2.0 ExtCore.FileStorage.Abstractions ExtCore.FileStorage.Abstractions diff --git a/src/ExtCore.FileStorage.Dropbox/DirectoryProxy.cs b/src/ExtCore.FileStorage.Dropbox/DirectoryProxy.cs index 89b7401..bfb15f1 100644 --- a/src/ExtCore.FileStorage.Dropbox/DirectoryProxy.cs +++ b/src/ExtCore.FileStorage.Dropbox/DirectoryProxy.cs @@ -41,15 +41,9 @@ public DirectoryProxy(string accessToken, string rootPath, string relativePath) if (accessToken == null) throw new ArgumentNullException($"Value can't be null. Parameter name: accessToken.", default(Exception)); - if (relativePath == string.Empty) - throw new ArgumentException($"Value can't be empty. Parameter name: relativePath."); - - if (relativePath == null) - throw new ArgumentNullException($"Value can't be null. Parameter name: relativePath.", default(Exception)); - this.accessToken = accessToken; - this.rootPath = rootPath; - this.RelativePath = relativePath; + this.rootPath = RelativeUrl.Combine(rootPath); + this.RelativePath = RelativeUrl.Combine(relativePath); this.path = RelativeUrl.Combine(this.rootPath, this.RelativePath); if (string.Equals(this.path, "/")) @@ -222,7 +216,10 @@ public async Task> GetFileProxiesAsync() string relativePath = metadata.PathDisplay; relativePath = relativePath.Substring(this.rootPath.Length); - relativePath = relativePath.Remove(relativePath.LastIndexOf("/")); + + if (relativePath.Contains("/")) + relativePath = relativePath.Remove(relativePath.LastIndexOf("/")); + fileProxies.Add(new FileProxy(this.accessToken, this.rootPath, relativePath, metadata.Name)); } } diff --git a/src/ExtCore.FileStorage.Dropbox/ExtCore.FileStorage.Dropbox.csproj b/src/ExtCore.FileStorage.Dropbox/ExtCore.FileStorage.Dropbox.csproj index 7922579..87dfb49 100644 --- a/src/ExtCore.FileStorage.Dropbox/ExtCore.FileStorage.Dropbox.csproj +++ b/src/ExtCore.FileStorage.Dropbox/ExtCore.FileStorage.Dropbox.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2018 Dmitry Sikorsky The ExtCore.FileStorage extension component. Based on the ExtCore framework. - 4.0.0-alpha1 + 4.0.0-alpha2 netstandard2.0 ExtCore.FileStorage.Dropbox ExtCore.FileStorage.Dropbox diff --git a/src/ExtCore.FileStorage.Dropbox/FileProxy.cs b/src/ExtCore.FileStorage.Dropbox/FileProxy.cs index ae8cf57..2229210 100644 --- a/src/ExtCore.FileStorage.Dropbox/FileProxy.cs +++ b/src/ExtCore.FileStorage.Dropbox/FileProxy.cs @@ -48,12 +48,6 @@ public FileProxy(string accessToken, string rootPath, string relativePath, strin if (accessToken == null) throw new ArgumentNullException($"Value can't be null. Parameter name: accessToken.", default(Exception)); - if (relativePath == string.Empty) - throw new ArgumentException($"Value can't be empty. Parameter name: relativePath."); - - if (relativePath == null) - throw new ArgumentNullException($"Value can't be null. Parameter name: relativePath.", default(Exception)); - if (filename == string.Empty) throw new ArgumentException($"Value can't be empty. Parameter name: filename."); diff --git a/src/ExtCore.FileStorage.Dropbox/RelativeUrl.cs b/src/ExtCore.FileStorage.Dropbox/RelativeUrl.cs index 4deceeb..56303c1 100644 --- a/src/ExtCore.FileStorage.Dropbox/RelativeUrl.cs +++ b/src/ExtCore.FileStorage.Dropbox/RelativeUrl.cs @@ -1,21 +1,21 @@ // Copyright © 2018 Dmitry Sikorsky. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. -using System.Text; +using System; +using System.Linq; namespace ExtCore.FileStorage.Dropbox { - public class RelativeUrl + public static class RelativeUrl { public static string Combine(params string[] segments) { - StringBuilder result = new StringBuilder(); - - foreach (string segment in segments) - if (!string.IsNullOrEmpty(segment)) - result.Append((segment.StartsWith("/") ? null : "/") + segment.TrimEnd('/')); - - return result.ToString(); + return "/" + string.Join( + "/", + segments.Where(s => !string.IsNullOrEmpty(s)).Select( + s => string.Join("/", s.Split(new char[] { '/', '\\' }, StringSplitOptions.RemoveEmptyEntries)) + ).Where(s => !string.IsNullOrEmpty(s)) + ); } } } \ No newline at end of file diff --git a/src/ExtCore.FileStorage.FileSystem/AbsolutePath.cs b/src/ExtCore.FileStorage.FileSystem/AbsolutePath.cs new file mode 100644 index 0000000..cab4a3b --- /dev/null +++ b/src/ExtCore.FileStorage.FileSystem/AbsolutePath.cs @@ -0,0 +1,22 @@ +// Copyright © 2018 Dmitry Sikorsky. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.IO; +using System.Linq; + +namespace ExtCore.FileStorage.FileSystem +{ + public static class AbsolutePath + { + public static string Combine(params string[] segments) + { + return string.Join( + Path.DirectorySeparatorChar.ToString(), + segments.Where(s => !string.IsNullOrEmpty(s)).Select( + s => string.Join(Path.DirectorySeparatorChar.ToString(), s.Split(new char[] { '/', '\\' }, StringSplitOptions.RemoveEmptyEntries)) + ).Where(s => !string.IsNullOrEmpty(s)) + ); + } + } +} \ No newline at end of file diff --git a/src/ExtCore.FileStorage.FileSystem/DirectoryProxy.cs b/src/ExtCore.FileStorage.FileSystem/DirectoryProxy.cs index 5b1924e..c135a8d 100644 --- a/src/ExtCore.FileStorage.FileSystem/DirectoryProxy.cs +++ b/src/ExtCore.FileStorage.FileSystem/DirectoryProxy.cs @@ -28,19 +28,11 @@ public class DirectoryProxy : IDirectoryProxy /// /// The root path of the underlying directory's relative one. /// The path of the underlying directory relatively to the root one. - /// - /// public DirectoryProxy(string rootPath, string relativePath) { - if (relativePath == string.Empty) - throw new ArgumentException($"Value can't be empty. Parameter name: relativePath."); - - if (relativePath == null) - throw new ArgumentNullException($"Value can't be null. Parameter name: relativePath.", default(Exception)); - - this.rootPath = rootPath; - this.RelativePath = relativePath; - this.path = this.rootPath + this.RelativePath; + this.rootPath = AbsolutePath.Combine(rootPath); + this.RelativePath = AbsolutePath.Combine(relativePath); + this.path = AbsolutePath.Combine(this.rootPath, this.RelativePath); } /// @@ -240,8 +232,8 @@ public async Task> GetFileProxiesAsync() string relativePath = f; relativePath = relativePath.Substring(this.rootPath.Length); - relativePath = relativePath.Remove(relativePath.LastIndexOf(@"\")); - return new FileProxy(this.rootPath, relativePath, f.Substring(f.LastIndexOf(@"\") + 1)); + relativePath = relativePath.Remove(relativePath.LastIndexOf(Path.DirectorySeparatorChar)); + return new FileProxy(this.rootPath, relativePath, f.Substring(f.LastIndexOf(Path.DirectorySeparatorChar) + 1)); } ); } diff --git a/src/ExtCore.FileStorage.FileSystem/ExtCore.FileStorage.FileSystem.csproj b/src/ExtCore.FileStorage.FileSystem/ExtCore.FileStorage.FileSystem.csproj index 005084f..a73a221 100644 --- a/src/ExtCore.FileStorage.FileSystem/ExtCore.FileStorage.FileSystem.csproj +++ b/src/ExtCore.FileStorage.FileSystem/ExtCore.FileStorage.FileSystem.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2018 Dmitry Sikorsky The ExtCore.FileStorage extension component. Based on the ExtCore framework. - 4.0.0-alpha1 + 4.0.0-alpha2 netstandard2.0 ExtCore.FileStorage.FileSystem ExtCore.FileStorage.FileSystem diff --git a/src/ExtCore.FileStorage.FileSystem/FileProxy.cs b/src/ExtCore.FileStorage.FileSystem/FileProxy.cs index 680b914..e86ac18 100644 --- a/src/ExtCore.FileStorage.FileSystem/FileProxy.cs +++ b/src/ExtCore.FileStorage.FileSystem/FileProxy.cs @@ -37,23 +37,16 @@ public class FileProxy : IFileProxy /// public FileProxy(string rootPath, string relativePath, string filename) { - if (relativePath == string.Empty) - throw new ArgumentException($"Value can't be empty. Parameter name: relativePath."); - - if (relativePath == null) - throw new ArgumentNullException($"Value can't be null. Parameter name: relativePath.", default(Exception)); - if (filename == string.Empty) throw new ArgumentException($"Value can't be empty. Parameter name: filename."); if (filename == null) throw new ArgumentNullException($"Value can't be null. Parameter name: filename.", default(Exception)); - this.rootPath = rootPath; this.RelativePath = relativePath; this.Filename = filename; - this.filepath = this.rootPath + this.RelativePath + this.Filename; + this.filepath = AbsolutePath.Combine(this.rootPath, this.RelativePath, this.Filename); } /// diff --git a/src/ExtCore.FileStorage/ExtCore.FileStorage.csproj b/src/ExtCore.FileStorage/ExtCore.FileStorage.csproj index 9482ae1..c311534 100644 --- a/src/ExtCore.FileStorage/ExtCore.FileStorage.csproj +++ b/src/ExtCore.FileStorage/ExtCore.FileStorage.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2018 Dmitry Sikorsky The ExtCore.FileStorage extension component. Based on the ExtCore framework. - 4.0.0-alpha1 + 4.0.0-alpha2 netstandard2.0 ExtCore.FileStorage ExtCore.FileStorage diff --git a/src/ExtCore.FileStorage/Extension.cs b/src/ExtCore.FileStorage/Extension.cs index 8c77f11..6c83aa8 100644 --- a/src/ExtCore.FileStorage/Extension.cs +++ b/src/ExtCore.FileStorage/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "4.0.0-alpha1"; + public override string Version => "4.0.0-alpha2"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj b/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj index aedb794..3048dd9 100644 --- a/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj +++ b/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky Free, open source and cross-platform framework for creating modular and extendable web applications based on ASP.NET Core. - 4.0.0-alpha1 + 4.0.0-alpha2 netstandard2.0 ExtCore.Infrastructure ExtCore.Infrastructure diff --git a/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj b/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj index 1fda1f9..073d025 100644 --- a/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj +++ b/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Mvc extension component. Based on the ExtCore framework. - 4.0.0-alpha1 + 4.0.0-alpha2 netstandard2.0 ExtCore.Mvc.Infrastructure ExtCore.Mvc.Infrastructure diff --git a/src/ExtCore.Mvc/ExtCore.Mvc.csproj b/src/ExtCore.Mvc/ExtCore.Mvc.csproj index 74e4d2c..480964b 100644 --- a/src/ExtCore.Mvc/ExtCore.Mvc.csproj +++ b/src/ExtCore.Mvc/ExtCore.Mvc.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Mvc extension component. Based on the ExtCore framework. - 4.0.0-alpha1 + 4.0.0-alpha2 netstandard2.0 ExtCore.Mvc ExtCore.Mvc diff --git a/src/ExtCore.Mvc/Extension.cs b/src/ExtCore.Mvc/Extension.cs index f501e23..d6ddb2e 100644 --- a/src/ExtCore.Mvc/Extension.cs +++ b/src/ExtCore.Mvc/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "4.0.0-alpha1"; + public override string Version => "4.0.0-alpha2"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj b/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj index 45b9155..206dec6 100644 --- a/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj +++ b/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky Free, open source and cross-platform framework for creating modular and extendable web applications based on ASP.NET Core. - 4.0.0-alpha1 + 4.0.0-alpha2 netstandard2.0 ExtCore.WebApplication ExtCore.WebApplication From 84eb5a557c8901b9dc0a2ac5f5e5c08496440854 Mon Sep 17 00:00:00 2001 From: Dmitry Sikorsky Date: Mon, 26 Nov 2018 23:58:46 +0200 Subject: [PATCH 48/81] Added the file storage extension to the README file --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 91726f2..f0b4fa5 100644 --- a/README.md +++ b/README.md @@ -98,6 +98,7 @@ Please take a look at our samples on GitHub: * [Full-featured ExtCore 3.3.0 framework sample web application](https://github.com/ExtCore/ExtCore-Sample); * [ExtCore framework 3.3.0 sample simplest web application](https://github.com/ExtCore/ExtCore-Sample-Simplest); * [ExtCore framework 3.3.0 sample MVC web application](https://github.com/ExtCore/ExtCore-Sample-Mvc); +* [ExtCore framework 4.0.0-alpha2 sample web application that uses file storage](https://github.com/ExtCore/ExtCore-Sample-FileStorage); * [ExtCore framework 3.3.0 sample web application that uses a database](https://github.com/ExtCore/ExtCore-Sample-Data); * [ExtCore framework 3.3.0 sample web application that uses Identity](https://github.com/ExtCore/ExtCore-Sample-Identity); * [ExtCore framework 3.3.0 sample web application with modular UI](https://github.com/ExtCore/ExtCore-Sample-Modular-Ui); From f0f0f0a78091ef731e53a84a7b9ef0589168a0a5 Mon Sep 17 00:00:00 2001 From: Dmitry Sikorsky Date: Thu, 13 Dec 2018 23:18:02 +0200 Subject: [PATCH 49/81] Updated to use .NET Core 2.2 --- README.md | 2 +- .../ExtCore.Data.Abstractions.csproj | 2 +- .../ExtCore.Data.Dapper.MySql.csproj | 2 +- .../ExtCore.Data.Dapper.PostgreSql.csproj | 4 ++-- .../ExtCore.Data.Dapper.SqlServer.csproj | 2 +- .../ExtCore.Data.Dapper.Sqlite.csproj | 4 ++-- src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj | 2 +- src/ExtCore.Data.Dapper/Extension.cs | 2 +- .../ExtCore.Data.Entities.Abstractions.csproj | 2 +- .../ExtCore.Data.EntityFramework.MySql.csproj | 4 ++-- .../ExtCore.Data.EntityFramework.PostgreSql.csproj | 4 ++-- .../ExtCore.Data.EntityFramework.SqlServer.csproj | 4 ++-- .../ExtCore.Data.EntityFramework.Sqlite.csproj | 4 ++-- .../ExtCore.Data.EntityFramework.csproj | 4 ++-- src/ExtCore.Data.EntityFramework/Extension.cs | 2 +- src/ExtCore.Data/ExtCore.Data.csproj | 2 +- src/ExtCore.Data/Extension.cs | 2 +- src/ExtCore.Events/ExtCore.Events.csproj | 2 +- src/ExtCore.Events/Extension.cs | 2 +- .../ExtCore.FileStorage.Abstractions.csproj | 2 +- .../ExtCore.FileStorage.Dropbox.csproj | 4 ++-- .../ExtCore.FileStorage.FileSystem.csproj | 4 ++-- src/ExtCore.FileStorage/ExtCore.FileStorage.csproj | 2 +- src/ExtCore.FileStorage/Extension.cs | 2 +- src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj | 4 ++-- .../ExtCore.Mvc.Infrastructure.csproj | 4 ++-- src/ExtCore.Mvc/ExtCore.Mvc.csproj | 6 +++--- src/ExtCore.Mvc/Extension.cs | 2 +- src/ExtCore.WebApplication/ExtCore.WebApplication.csproj | 2 +- 29 files changed, 42 insertions(+), 42 deletions(-) diff --git a/README.md b/README.md index f0b4fa5..70c797c 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# ExtCore 4.0.0-alpha2 +# ExtCore 4.0.0-alpha3 [![Join the chat at https://gitter.im/ExtCore/ExtCore](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/ExtCore/ExtCore?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) diff --git a/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj b/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj index cb5862b..afbca62 100644 --- a/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj +++ b/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data extension component. Based on the ExtCore framework. - 4.0.0-alpha2 + 4.0.0-alpha3 netstandard2.0 ExtCore.Data.Abstractions ExtCore.Data.Abstractions diff --git a/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj b/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj index 295d5fe..7ad369b 100644 --- a/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj +++ b/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 4.0.0-alpha2 + 4.0.0-alpha3 netstandard2.0 ExtCore.Data.Dapper.MySql ExtCore.Data.Dapper.MySql diff --git a/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj b/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj index 825ca90..7790033 100644 --- a/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj +++ b/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 4.0.0-alpha2 + 4.0.0-alpha3 netstandard2.0 ExtCore.Data.Dapper.PostgreSql ExtCore.Data.Dapper.PostgreSql @@ -13,7 +13,7 @@ - + diff --git a/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj b/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj index 9d796c5..734616e 100644 --- a/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj +++ b/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 4.0.0-alpha2 + 4.0.0-alpha3 netstandard2.0 ExtCore.Data.Dapper.SqlServer ExtCore.Data.Dapper.SqlServer diff --git a/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj b/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj index 06fa5d7..1016064 100644 --- a/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj +++ b/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 4.0.0-alpha2 + 4.0.0-alpha3 netstandard2.0 ExtCore.Data.Dapper.Sqlite ExtCore.Data.Dapper.Sqlite @@ -13,7 +13,7 @@ - + diff --git a/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj b/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj index c852f07..b40fe90 100644 --- a/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj +++ b/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 4.0.0-alpha2 + 4.0.0-alpha3 netstandard2.0 ExtCore.Data.Dapper ExtCore.Data.Dapper diff --git a/src/ExtCore.Data.Dapper/Extension.cs b/src/ExtCore.Data.Dapper/Extension.cs index d12623d..c7bb85d 100644 --- a/src/ExtCore.Data.Dapper/Extension.cs +++ b/src/ExtCore.Data.Dapper/Extension.cs @@ -24,7 +24,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "4.0.0-alpha2"; + public override string Version => "4.0.0-alpha3"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj b/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj index 7967769..52eb1a6 100644 --- a/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj +++ b/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data extension component. Based on the ExtCore framework. - 4.0.0-alpha2 + 4.0.0-alpha3 netstandard2.0 ExtCore.Data.Entities.Abstractions ExtCore.Data.Entities.Abstractions diff --git a/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj b/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj index 32fa55c..9836e39 100644 --- a/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj +++ b/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 4.0.0-alpha2 + 4.0.0-alpha3 netstandard2.0 ExtCore.Data.EntityFramework.MySql ExtCore.Data.EntityFramework.MySql @@ -13,7 +13,7 @@ - + diff --git a/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj b/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj index 4c55890..e401a6b 100644 --- a/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj +++ b/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 4.0.0-alpha2 + 4.0.0-alpha3 netstandard2.0 ExtCore.Data.EntityFramework.PostgreSql ExtCore.Data.EntityFramework.PostgreSql @@ -13,7 +13,7 @@ - + diff --git a/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj b/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj index 2869240..f27ea7a 100644 --- a/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj +++ b/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 4.0.0-alpha2 + 4.0.0-alpha3 netstandard2.0 ExtCore.Data.EntityFramework.SqlServer ExtCore.Data.EntityFramework.SqlServer @@ -13,7 +13,7 @@ - + diff --git a/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj b/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj index ad3e669..ccb6ea9 100644 --- a/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj +++ b/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 4.0.0-alpha2 + 4.0.0-alpha3 netstandard2.0 ExtCore.Data.EntityFramework.Sqlite ExtCore.Data.EntityFramework.Sqlite @@ -13,7 +13,7 @@ - + diff --git a/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj b/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj index a53be84..11e1780 100644 --- a/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj +++ b/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 4.0.0-alpha2 + 4.0.0-alpha3 netstandard2.0 ExtCore.Data.EntityFramework ExtCore.Data.EntityFramework @@ -13,7 +13,7 @@ - + diff --git a/src/ExtCore.Data.EntityFramework/Extension.cs b/src/ExtCore.Data.EntityFramework/Extension.cs index c95fe16..ed71839 100644 --- a/src/ExtCore.Data.EntityFramework/Extension.cs +++ b/src/ExtCore.Data.EntityFramework/Extension.cs @@ -24,7 +24,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "4.0.0-alpha2"; + public override string Version => "4.0.0-alpha3"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Data/ExtCore.Data.csproj b/src/ExtCore.Data/ExtCore.Data.csproj index d6c4110..c6ae8ae 100644 --- a/src/ExtCore.Data/ExtCore.Data.csproj +++ b/src/ExtCore.Data/ExtCore.Data.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data extension component. Based on the ExtCore framework. - 4.0.0-alpha2 + 4.0.0-alpha3 netstandard2.0 ExtCore.Data ExtCore.Data diff --git a/src/ExtCore.Data/Extension.cs b/src/ExtCore.Data/Extension.cs index 107040e..9d5abdd 100644 --- a/src/ExtCore.Data/Extension.cs +++ b/src/ExtCore.Data/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "4.0.0-alpha2"; + public override string Version => "4.0.0-alpha3"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Events/ExtCore.Events.csproj b/src/ExtCore.Events/ExtCore.Events.csproj index 8312758..7841330 100644 --- a/src/ExtCore.Events/ExtCore.Events.csproj +++ b/src/ExtCore.Events/ExtCore.Events.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Events extension component. Based on the ExtCore framework. - 4.0.0-alpha2 + 4.0.0-alpha3 netstandard2.0 ExtCore.Events ExtCore.Events diff --git a/src/ExtCore.Events/Extension.cs b/src/ExtCore.Events/Extension.cs index d40c32a..c1beed7 100644 --- a/src/ExtCore.Events/Extension.cs +++ b/src/ExtCore.Events/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "4.0.0-alpha2"; + public override string Version => "4.0.0-alpha3"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.FileStorage.Abstractions/ExtCore.FileStorage.Abstractions.csproj b/src/ExtCore.FileStorage.Abstractions/ExtCore.FileStorage.Abstractions.csproj index 5b36755..459c1d6 100644 --- a/src/ExtCore.FileStorage.Abstractions/ExtCore.FileStorage.Abstractions.csproj +++ b/src/ExtCore.FileStorage.Abstractions/ExtCore.FileStorage.Abstractions.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2018 Dmitry Sikorsky The ExtCore.FileStorage extension component. Based on the ExtCore framework. - 4.0.0-alpha2 + 4.0.0-alpha3 netstandard2.0 ExtCore.FileStorage.Abstractions ExtCore.FileStorage.Abstractions diff --git a/src/ExtCore.FileStorage.Dropbox/ExtCore.FileStorage.Dropbox.csproj b/src/ExtCore.FileStorage.Dropbox/ExtCore.FileStorage.Dropbox.csproj index 87dfb49..bd4b718 100644 --- a/src/ExtCore.FileStorage.Dropbox/ExtCore.FileStorage.Dropbox.csproj +++ b/src/ExtCore.FileStorage.Dropbox/ExtCore.FileStorage.Dropbox.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2018 Dmitry Sikorsky The ExtCore.FileStorage extension component. Based on the ExtCore framework. - 4.0.0-alpha2 + 4.0.0-alpha3 netstandard2.0 ExtCore.FileStorage.Dropbox ExtCore.FileStorage.Dropbox @@ -14,7 +14,7 @@ - + diff --git a/src/ExtCore.FileStorage.FileSystem/ExtCore.FileStorage.FileSystem.csproj b/src/ExtCore.FileStorage.FileSystem/ExtCore.FileStorage.FileSystem.csproj index a73a221..db3b50e 100644 --- a/src/ExtCore.FileStorage.FileSystem/ExtCore.FileStorage.FileSystem.csproj +++ b/src/ExtCore.FileStorage.FileSystem/ExtCore.FileStorage.FileSystem.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2018 Dmitry Sikorsky The ExtCore.FileStorage extension component. Based on the ExtCore framework. - 4.0.0-alpha2 + 4.0.0-alpha3 netstandard2.0 ExtCore.FileStorage.FileSystem ExtCore.FileStorage.FileSystem @@ -13,7 +13,7 @@ - + diff --git a/src/ExtCore.FileStorage/ExtCore.FileStorage.csproj b/src/ExtCore.FileStorage/ExtCore.FileStorage.csproj index c311534..e589f15 100644 --- a/src/ExtCore.FileStorage/ExtCore.FileStorage.csproj +++ b/src/ExtCore.FileStorage/ExtCore.FileStorage.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2018 Dmitry Sikorsky The ExtCore.FileStorage extension component. Based on the ExtCore framework. - 4.0.0-alpha2 + 4.0.0-alpha3 netstandard2.0 ExtCore.FileStorage ExtCore.FileStorage diff --git a/src/ExtCore.FileStorage/Extension.cs b/src/ExtCore.FileStorage/Extension.cs index 6c83aa8..e3dd868 100644 --- a/src/ExtCore.FileStorage/Extension.cs +++ b/src/ExtCore.FileStorage/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "4.0.0-alpha2"; + public override string Version => "4.0.0-alpha3"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj b/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj index 3048dd9..c774903 100644 --- a/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj +++ b/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky Free, open source and cross-platform framework for creating modular and extendable web applications based on ASP.NET Core. - 4.0.0-alpha2 + 4.0.0-alpha3 netstandard2.0 ExtCore.Infrastructure ExtCore.Infrastructure @@ -13,7 +13,7 @@ - + diff --git a/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj b/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj index 073d025..0acaa75 100644 --- a/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj +++ b/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Mvc extension component. Based on the ExtCore framework. - 4.0.0-alpha2 + 4.0.0-alpha3 netstandard2.0 ExtCore.Mvc.Infrastructure ExtCore.Mvc.Infrastructure @@ -13,7 +13,7 @@ - + diff --git a/src/ExtCore.Mvc/ExtCore.Mvc.csproj b/src/ExtCore.Mvc/ExtCore.Mvc.csproj index 480964b..93049eb 100644 --- a/src/ExtCore.Mvc/ExtCore.Mvc.csproj +++ b/src/ExtCore.Mvc/ExtCore.Mvc.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Mvc extension component. Based on the ExtCore framework. - 4.0.0-alpha2 + 4.0.0-alpha3 netstandard2.0 ExtCore.Mvc ExtCore.Mvc @@ -13,8 +13,8 @@ - - + + diff --git a/src/ExtCore.Mvc/Extension.cs b/src/ExtCore.Mvc/Extension.cs index d6ddb2e..d7447a0 100644 --- a/src/ExtCore.Mvc/Extension.cs +++ b/src/ExtCore.Mvc/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "4.0.0-alpha2"; + public override string Version => "4.0.0-alpha3"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj b/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj index 206dec6..cd2c8aa 100644 --- a/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj +++ b/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky Free, open source and cross-platform framework for creating modular and extendable web applications based on ASP.NET Core. - 4.0.0-alpha2 + 4.0.0-alpha3 netstandard2.0 ExtCore.WebApplication ExtCore.WebApplication From 17857a9dc1bfb5250b7deda5d4092e044fe16547 Mon Sep 17 00:00:00 2001 From: Dmitry Sikorsky Date: Wed, 2 Jan 2019 16:01:23 +0200 Subject: [PATCH 50/81] Changed version to 4.0.0 --- README.md | 30 +++++++++---------- .../ExtCore.Data.Abstractions.csproj | 2 +- .../ExtCore.Data.Dapper.MySql.csproj | 2 +- .../ExtCore.Data.Dapper.PostgreSql.csproj | 2 +- .../ExtCore.Data.Dapper.SqlServer.csproj | 2 +- .../ExtCore.Data.Dapper.Sqlite.csproj | 2 +- .../ExtCore.Data.Dapper.csproj | 2 +- src/ExtCore.Data.Dapper/Extension.cs | 2 +- .../ExtCore.Data.Entities.Abstractions.csproj | 2 +- .../ExtCore.Data.EntityFramework.MySql.csproj | 2 +- ...ore.Data.EntityFramework.PostgreSql.csproj | 2 +- ...Core.Data.EntityFramework.SqlServer.csproj | 2 +- ...ExtCore.Data.EntityFramework.Sqlite.csproj | 2 +- .../ExtCore.Data.EntityFramework.csproj | 2 +- src/ExtCore.Data.EntityFramework/Extension.cs | 2 +- src/ExtCore.Data/ExtCore.Data.csproj | 2 +- src/ExtCore.Data/Extension.cs | 2 +- src/ExtCore.Events/ExtCore.Events.csproj | 2 +- src/ExtCore.Events/Extension.cs | 2 +- .../ExtCore.FileStorage.Abstractions.csproj | 2 +- .../ExtCore.FileStorage.Dropbox.csproj | 2 +- .../ExtCore.FileStorage.FileSystem.csproj | 2 +- .../ExtCore.FileStorage.csproj | 2 +- src/ExtCore.FileStorage/Extension.cs | 2 +- .../ExtCore.Infrastructure.csproj | 2 +- .../ExtCore.Mvc.Infrastructure.csproj | 2 +- src/ExtCore.Mvc/ExtCore.Mvc.csproj | 2 +- src/ExtCore.Mvc/Extension.cs | 2 +- .../ExtCore.WebApplication.csproj | 2 +- 29 files changed, 43 insertions(+), 43 deletions(-) diff --git a/README.md b/README.md index 70c797c..97d85c4 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# ExtCore 4.0.0-alpha3 +# ExtCore 4.0.0 [![Join the chat at https://gitter.im/ExtCore/ExtCore](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/ExtCore/ExtCore?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) @@ -95,20 +95,20 @@ in order to execute some code inside the ConfigureServices and Configure methods Please take a look at our samples on GitHub: -* [Full-featured ExtCore 3.3.0 framework sample web application](https://github.com/ExtCore/ExtCore-Sample); -* [ExtCore framework 3.3.0 sample simplest web application](https://github.com/ExtCore/ExtCore-Sample-Simplest); -* [ExtCore framework 3.3.0 sample MVC web application](https://github.com/ExtCore/ExtCore-Sample-Mvc); -* [ExtCore framework 4.0.0-alpha2 sample web application that uses file storage](https://github.com/ExtCore/ExtCore-Sample-FileStorage); -* [ExtCore framework 3.3.0 sample web application that uses a database](https://github.com/ExtCore/ExtCore-Sample-Data); -* [ExtCore framework 3.3.0 sample web application that uses Identity](https://github.com/ExtCore/ExtCore-Sample-Identity); -* [ExtCore framework 3.3.0 sample web application with modular UI](https://github.com/ExtCore/ExtCore-Sample-Modular-Ui); -* [ExtCore framework 3.3.0 advanced sample web application with modular UI](https://github.com/ExtCore/ExtCore-Sample-Modular-Ui-Adv); -* [ExtCore framework 3.3.0 advanced sample accounting web application](https://github.com/ExtCore/ExtCore-Sample-Accounting); -* [ExtCore framework 3.3.0 sample web application that registers a service inside the extension](https://github.com/ExtCore/ExtCore-Sample-Service); -* [ExtCore framework 3.3.0 sample web application that uses the events](https://github.com/ExtCore/ExtCore-Sample-Events); -* [ExtCore framework 3.3.0 sample API web application](https://github.com/ExtCore/ExtCore-Sample-Api). - -You can also download our [ready to use full-featured sample](http://extcore.net/files/ExtCore-Sample-3.3.0.zip). +* [Full-featured ExtCore 4.0.0 framework sample web application](https://github.com/ExtCore/ExtCore-Sample); +* [ExtCore framework 4.0.0 sample simplest web application](https://github.com/ExtCore/ExtCore-Sample-Simplest); +* [ExtCore framework 4.0.0 sample MVC web application](https://github.com/ExtCore/ExtCore-Sample-Mvc); +* [ExtCore framework 4.0.0 sample web application that uses file storage](https://github.com/ExtCore/ExtCore-Sample-FileStorage); +* [ExtCore framework 4.0.0 sample web application that uses a database](https://github.com/ExtCore/ExtCore-Sample-Data); +* [ExtCore framework 4.0.0 sample web application that uses Identity](https://github.com/ExtCore/ExtCore-Sample-Identity); +* [ExtCore framework 4.0.0 sample web application with modular UI](https://github.com/ExtCore/ExtCore-Sample-Modular-Ui); +* [ExtCore framework 4.0.0 advanced sample web application with modular UI](https://github.com/ExtCore/ExtCore-Sample-Modular-Ui-Adv); +* [ExtCore framework 4.0.0 advanced sample accounting web application](https://github.com/ExtCore/ExtCore-Sample-Accounting); +* [ExtCore framework 4.0.0 sample web application that registers a service inside the extension](https://github.com/ExtCore/ExtCore-Sample-Service); +* [ExtCore framework 4.0.0 sample web application that uses the events](https://github.com/ExtCore/ExtCore-Sample-Events); +* [ExtCore framework 4.0.0 sample API web application](https://github.com/ExtCore/ExtCore-Sample-Api). + +You can also download our [ready to use full-featured sample](http://extcore.net/files/ExtCore-Sample-4.0.0.zip). It contains everything you need to run ExtCore-based web application from Visual Studio 2017, including SQLite database with the test data. diff --git a/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj b/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj index afbca62..cb0e77b 100644 --- a/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj +++ b/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data extension component. Based on the ExtCore framework. - 4.0.0-alpha3 + 4.0.0 netstandard2.0 ExtCore.Data.Abstractions ExtCore.Data.Abstractions diff --git a/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj b/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj index 7ad369b..7dc689d 100644 --- a/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj +++ b/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 4.0.0-alpha3 + 4.0.0 netstandard2.0 ExtCore.Data.Dapper.MySql ExtCore.Data.Dapper.MySql diff --git a/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj b/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj index 7790033..78a405f 100644 --- a/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj +++ b/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 4.0.0-alpha3 + 4.0.0 netstandard2.0 ExtCore.Data.Dapper.PostgreSql ExtCore.Data.Dapper.PostgreSql diff --git a/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj b/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj index 734616e..c0728c8 100644 --- a/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj +++ b/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 4.0.0-alpha3 + 4.0.0 netstandard2.0 ExtCore.Data.Dapper.SqlServer ExtCore.Data.Dapper.SqlServer diff --git a/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj b/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj index 1016064..5a2596b 100644 --- a/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj +++ b/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 4.0.0-alpha3 + 4.0.0 netstandard2.0 ExtCore.Data.Dapper.Sqlite ExtCore.Data.Dapper.Sqlite diff --git a/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj b/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj index b40fe90..318a7de 100644 --- a/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj +++ b/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 4.0.0-alpha3 + 4.0.0 netstandard2.0 ExtCore.Data.Dapper ExtCore.Data.Dapper diff --git a/src/ExtCore.Data.Dapper/Extension.cs b/src/ExtCore.Data.Dapper/Extension.cs index c7bb85d..24289c4 100644 --- a/src/ExtCore.Data.Dapper/Extension.cs +++ b/src/ExtCore.Data.Dapper/Extension.cs @@ -24,7 +24,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "4.0.0-alpha3"; + public override string Version => "4.0.0"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj b/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj index 52eb1a6..5a074e9 100644 --- a/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj +++ b/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data extension component. Based on the ExtCore framework. - 4.0.0-alpha3 + 4.0.0 netstandard2.0 ExtCore.Data.Entities.Abstractions ExtCore.Data.Entities.Abstractions diff --git a/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj b/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj index 9836e39..78365f8 100644 --- a/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj +++ b/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 4.0.0-alpha3 + 4.0.0 netstandard2.0 ExtCore.Data.EntityFramework.MySql ExtCore.Data.EntityFramework.MySql diff --git a/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj b/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj index e401a6b..343e94e 100644 --- a/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj +++ b/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 4.0.0-alpha3 + 4.0.0 netstandard2.0 ExtCore.Data.EntityFramework.PostgreSql ExtCore.Data.EntityFramework.PostgreSql diff --git a/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj b/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj index f27ea7a..0573043 100644 --- a/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj +++ b/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 4.0.0-alpha3 + 4.0.0 netstandard2.0 ExtCore.Data.EntityFramework.SqlServer ExtCore.Data.EntityFramework.SqlServer diff --git a/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj b/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj index ccb6ea9..a27178d 100644 --- a/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj +++ b/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 4.0.0-alpha3 + 4.0.0 netstandard2.0 ExtCore.Data.EntityFramework.Sqlite ExtCore.Data.EntityFramework.Sqlite diff --git a/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj b/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj index 11e1780..ae935c1 100644 --- a/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj +++ b/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 4.0.0-alpha3 + 4.0.0 netstandard2.0 ExtCore.Data.EntityFramework ExtCore.Data.EntityFramework diff --git a/src/ExtCore.Data.EntityFramework/Extension.cs b/src/ExtCore.Data.EntityFramework/Extension.cs index ed71839..1cbc4fe 100644 --- a/src/ExtCore.Data.EntityFramework/Extension.cs +++ b/src/ExtCore.Data.EntityFramework/Extension.cs @@ -24,7 +24,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "4.0.0-alpha3"; + public override string Version => "4.0.0"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Data/ExtCore.Data.csproj b/src/ExtCore.Data/ExtCore.Data.csproj index c6ae8ae..a25fb44 100644 --- a/src/ExtCore.Data/ExtCore.Data.csproj +++ b/src/ExtCore.Data/ExtCore.Data.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data extension component. Based on the ExtCore framework. - 4.0.0-alpha3 + 4.0.0 netstandard2.0 ExtCore.Data ExtCore.Data diff --git a/src/ExtCore.Data/Extension.cs b/src/ExtCore.Data/Extension.cs index 9d5abdd..99b4638 100644 --- a/src/ExtCore.Data/Extension.cs +++ b/src/ExtCore.Data/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "4.0.0-alpha3"; + public override string Version => "4.0.0"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Events/ExtCore.Events.csproj b/src/ExtCore.Events/ExtCore.Events.csproj index 7841330..884538c 100644 --- a/src/ExtCore.Events/ExtCore.Events.csproj +++ b/src/ExtCore.Events/ExtCore.Events.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Events extension component. Based on the ExtCore framework. - 4.0.0-alpha3 + 4.0.0 netstandard2.0 ExtCore.Events ExtCore.Events diff --git a/src/ExtCore.Events/Extension.cs b/src/ExtCore.Events/Extension.cs index c1beed7..1dd3d47 100644 --- a/src/ExtCore.Events/Extension.cs +++ b/src/ExtCore.Events/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "4.0.0-alpha3"; + public override string Version => "4.0.0"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.FileStorage.Abstractions/ExtCore.FileStorage.Abstractions.csproj b/src/ExtCore.FileStorage.Abstractions/ExtCore.FileStorage.Abstractions.csproj index 459c1d6..bd176ee 100644 --- a/src/ExtCore.FileStorage.Abstractions/ExtCore.FileStorage.Abstractions.csproj +++ b/src/ExtCore.FileStorage.Abstractions/ExtCore.FileStorage.Abstractions.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2018 Dmitry Sikorsky The ExtCore.FileStorage extension component. Based on the ExtCore framework. - 4.0.0-alpha3 + 4.0.0 netstandard2.0 ExtCore.FileStorage.Abstractions ExtCore.FileStorage.Abstractions diff --git a/src/ExtCore.FileStorage.Dropbox/ExtCore.FileStorage.Dropbox.csproj b/src/ExtCore.FileStorage.Dropbox/ExtCore.FileStorage.Dropbox.csproj index bd4b718..8eabf11 100644 --- a/src/ExtCore.FileStorage.Dropbox/ExtCore.FileStorage.Dropbox.csproj +++ b/src/ExtCore.FileStorage.Dropbox/ExtCore.FileStorage.Dropbox.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2018 Dmitry Sikorsky The ExtCore.FileStorage extension component. Based on the ExtCore framework. - 4.0.0-alpha3 + 4.0.0 netstandard2.0 ExtCore.FileStorage.Dropbox ExtCore.FileStorage.Dropbox diff --git a/src/ExtCore.FileStorage.FileSystem/ExtCore.FileStorage.FileSystem.csproj b/src/ExtCore.FileStorage.FileSystem/ExtCore.FileStorage.FileSystem.csproj index db3b50e..447e468 100644 --- a/src/ExtCore.FileStorage.FileSystem/ExtCore.FileStorage.FileSystem.csproj +++ b/src/ExtCore.FileStorage.FileSystem/ExtCore.FileStorage.FileSystem.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2018 Dmitry Sikorsky The ExtCore.FileStorage extension component. Based on the ExtCore framework. - 4.0.0-alpha3 + 4.0.0 netstandard2.0 ExtCore.FileStorage.FileSystem ExtCore.FileStorage.FileSystem diff --git a/src/ExtCore.FileStorage/ExtCore.FileStorage.csproj b/src/ExtCore.FileStorage/ExtCore.FileStorage.csproj index e589f15..49c0ac8 100644 --- a/src/ExtCore.FileStorage/ExtCore.FileStorage.csproj +++ b/src/ExtCore.FileStorage/ExtCore.FileStorage.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2018 Dmitry Sikorsky The ExtCore.FileStorage extension component. Based on the ExtCore framework. - 4.0.0-alpha3 + 4.0.0 netstandard2.0 ExtCore.FileStorage ExtCore.FileStorage diff --git a/src/ExtCore.FileStorage/Extension.cs b/src/ExtCore.FileStorage/Extension.cs index e3dd868..ed19e2e 100644 --- a/src/ExtCore.FileStorage/Extension.cs +++ b/src/ExtCore.FileStorage/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "4.0.0-alpha3"; + public override string Version => "4.0.0"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj b/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj index c774903..a75d13b 100644 --- a/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj +++ b/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky Free, open source and cross-platform framework for creating modular and extendable web applications based on ASP.NET Core. - 4.0.0-alpha3 + 4.0.0 netstandard2.0 ExtCore.Infrastructure ExtCore.Infrastructure diff --git a/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj b/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj index 0acaa75..c436e27 100644 --- a/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj +++ b/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Mvc extension component. Based on the ExtCore framework. - 4.0.0-alpha3 + 4.0.0 netstandard2.0 ExtCore.Mvc.Infrastructure ExtCore.Mvc.Infrastructure diff --git a/src/ExtCore.Mvc/ExtCore.Mvc.csproj b/src/ExtCore.Mvc/ExtCore.Mvc.csproj index 93049eb..7a385cb 100644 --- a/src/ExtCore.Mvc/ExtCore.Mvc.csproj +++ b/src/ExtCore.Mvc/ExtCore.Mvc.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Mvc extension component. Based on the ExtCore framework. - 4.0.0-alpha3 + 4.0.0 netstandard2.0 ExtCore.Mvc ExtCore.Mvc diff --git a/src/ExtCore.Mvc/Extension.cs b/src/ExtCore.Mvc/Extension.cs index d7447a0..e1ed6bc 100644 --- a/src/ExtCore.Mvc/Extension.cs +++ b/src/ExtCore.Mvc/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "4.0.0-alpha3"; + public override string Version => "4.0.0"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj b/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj index cd2c8aa..70eaf35 100644 --- a/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj +++ b/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky Free, open source and cross-platform framework for creating modular and extendable web applications based on ASP.NET Core. - 4.0.0-alpha3 + 4.0.0 netstandard2.0 ExtCore.WebApplication ExtCore.WebApplication From 617afdddb58bb9a24db3b6fcfaee0d4fd56584f4 Mon Sep 17 00:00:00 2001 From: Dmitry Sikorsky Date: Mon, 24 Jun 2019 22:28:53 +0300 Subject: [PATCH 51/81] Added SaveAsync method to the IStorage interface and to the default implementations, updated dependencies --- .../ExtCore.Data.Abstractions.csproj | 2 +- src/ExtCore.Data.Abstractions/IStorage.cs | 7 +++++++ .../ExtCore.Data.Dapper.MySql.csproj | 4 ++-- .../ExtCore.Data.Dapper.PostgreSql.csproj | 4 ++-- .../ExtCore.Data.Dapper.SqlServer.csproj | 2 +- .../ExtCore.Data.Dapper.Sqlite.csproj | 4 ++-- src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj | 4 ++-- src/ExtCore.Data.Dapper/Extension.cs | 2 +- src/ExtCore.Data.Dapper/Storage.cs | 8 ++++++++ .../ExtCore.Data.Entities.Abstractions.csproj | 2 +- .../ExtCore.Data.EntityFramework.MySql.csproj | 4 ++-- .../ExtCore.Data.EntityFramework.PostgreSql.csproj | 4 ++-- .../ExtCore.Data.EntityFramework.SqlServer.csproj | 4 ++-- .../ExtCore.Data.EntityFramework.Sqlite.csproj | 4 ++-- .../ExtCore.Data.EntityFramework.csproj | 4 ++-- src/ExtCore.Data.EntityFramework/Extension.cs | 2 +- src/ExtCore.Data.EntityFramework/Storage.cs | 9 +++++++++ src/ExtCore.Data/ExtCore.Data.csproj | 2 +- src/ExtCore.Data/Extension.cs | 2 +- src/ExtCore.Events/ExtCore.Events.csproj | 2 +- src/ExtCore.Events/Extension.cs | 2 +- .../ExtCore.FileStorage.Abstractions.csproj | 2 +- .../ExtCore.FileStorage.Dropbox.csproj | 4 ++-- .../ExtCore.FileStorage.FileSystem.csproj | 2 +- src/ExtCore.FileStorage/ExtCore.FileStorage.csproj | 2 +- src/ExtCore.FileStorage/Extension.cs | 2 +- src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj | 2 +- .../ExtCore.Mvc.Infrastructure.csproj | 2 +- src/ExtCore.Mvc/ExtCore.Mvc.csproj | 2 +- src/ExtCore.Mvc/Extension.cs | 2 +- src/ExtCore.WebApplication/ExtCore.WebApplication.csproj | 2 +- 31 files changed, 62 insertions(+), 38 deletions(-) diff --git a/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj b/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj index cb0e77b..dc718b6 100644 --- a/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj +++ b/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data extension component. Based on the ExtCore framework. - 4.0.0 + 4.1.0 netstandard2.0 ExtCore.Data.Abstractions ExtCore.Data.Abstractions diff --git a/src/ExtCore.Data.Abstractions/IStorage.cs b/src/ExtCore.Data.Abstractions/IStorage.cs index 31fa638..a5bd713 100644 --- a/src/ExtCore.Data.Abstractions/IStorage.cs +++ b/src/ExtCore.Data.Abstractions/IStorage.cs @@ -1,6 +1,8 @@ // Copyright © 2015 Dmitry Sikorsky. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. +using System.Threading.Tasks; + namespace ExtCore.Data.Abstractions { /// @@ -26,5 +28,10 @@ public interface IStorage /// Commits the changes made by all the repositories. /// void Save(); + + /// + /// Asynchronously commits the changes made by all the repositories. + /// + Task SaveAsync(); } } \ No newline at end of file diff --git a/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj b/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj index 7dc689d..b92a3ad 100644 --- a/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj +++ b/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 4.0.0 + 4.1.0 netstandard2.0 ExtCore.Data.Dapper.MySql ExtCore.Data.Dapper.MySql @@ -13,7 +13,7 @@ - + diff --git a/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj b/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj index 78a405f..f2d0121 100644 --- a/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj +++ b/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 4.0.0 + 4.1.0 netstandard2.0 ExtCore.Data.Dapper.PostgreSql ExtCore.Data.Dapper.PostgreSql @@ -13,7 +13,7 @@ - + diff --git a/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj b/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj index c0728c8..a9b3e4e 100644 --- a/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj +++ b/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 4.0.0 + 4.1.0 netstandard2.0 ExtCore.Data.Dapper.SqlServer ExtCore.Data.Dapper.SqlServer diff --git a/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj b/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj index 5a2596b..1fcec00 100644 --- a/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj +++ b/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 4.0.0 + 4.1.0 netstandard2.0 ExtCore.Data.Dapper.Sqlite ExtCore.Data.Dapper.Sqlite @@ -13,7 +13,7 @@ - + diff --git a/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj b/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj index 318a7de..b717b11 100644 --- a/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj +++ b/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 4.0.0 + 4.1.0 netstandard2.0 ExtCore.Data.Dapper ExtCore.Data.Dapper @@ -13,7 +13,7 @@ - + diff --git a/src/ExtCore.Data.Dapper/Extension.cs b/src/ExtCore.Data.Dapper/Extension.cs index 24289c4..10f3ad0 100644 --- a/src/ExtCore.Data.Dapper/Extension.cs +++ b/src/ExtCore.Data.Dapper/Extension.cs @@ -24,7 +24,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "4.0.0"; + public override string Version => "4.1.0"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Data.Dapper/Storage.cs b/src/ExtCore.Data.Dapper/Storage.cs index e018c76..37fbab3 100644 --- a/src/ExtCore.Data.Dapper/Storage.cs +++ b/src/ExtCore.Data.Dapper/Storage.cs @@ -1,6 +1,7 @@ // Copyright © 2017 Dmitry Sikorsky. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. +using System.Threading.Tasks; using ExtCore.Data.Abstractions; using ExtCore.Infrastructure; @@ -44,5 +45,12 @@ public TRepository GetRepository() where TRepository : IRepository public void Save() { } + + /// + /// Asynchronously commits the changes made by all the repositories. + /// + public async Task SaveAsync() + { + } } } \ No newline at end of file diff --git a/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj b/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj index 5a074e9..f431231 100644 --- a/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj +++ b/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data extension component. Based on the ExtCore framework. - 4.0.0 + 4.1.0 netstandard2.0 ExtCore.Data.Entities.Abstractions ExtCore.Data.Entities.Abstractions diff --git a/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj b/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj index 78365f8..bd4320e 100644 --- a/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj +++ b/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 4.0.0 + 4.1.0 netstandard2.0 ExtCore.Data.EntityFramework.MySql ExtCore.Data.EntityFramework.MySql @@ -13,7 +13,7 @@ - + diff --git a/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj b/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj index 343e94e..8c0ddf7 100644 --- a/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj +++ b/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 4.0.0 + 4.1.0 netstandard2.0 ExtCore.Data.EntityFramework.PostgreSql ExtCore.Data.EntityFramework.PostgreSql @@ -13,7 +13,7 @@ - + diff --git a/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj b/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj index 0573043..f0875ca 100644 --- a/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj +++ b/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 4.0.0 + 4.1.0 netstandard2.0 ExtCore.Data.EntityFramework.SqlServer ExtCore.Data.EntityFramework.SqlServer @@ -13,7 +13,7 @@ - + diff --git a/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj b/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj index a27178d..e7f2c11 100644 --- a/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj +++ b/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 4.0.0 + 4.1.0 netstandard2.0 ExtCore.Data.EntityFramework.Sqlite ExtCore.Data.EntityFramework.Sqlite @@ -13,7 +13,7 @@ - + diff --git a/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj b/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj index ae935c1..0061dda 100644 --- a/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj +++ b/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 4.0.0 + 4.1.0 netstandard2.0 ExtCore.Data.EntityFramework ExtCore.Data.EntityFramework @@ -13,7 +13,7 @@ - + diff --git a/src/ExtCore.Data.EntityFramework/Extension.cs b/src/ExtCore.Data.EntityFramework/Extension.cs index 1cbc4fe..888456f 100644 --- a/src/ExtCore.Data.EntityFramework/Extension.cs +++ b/src/ExtCore.Data.EntityFramework/Extension.cs @@ -24,7 +24,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "4.0.0"; + public override string Version => "4.1.0"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Data.EntityFramework/Storage.cs b/src/ExtCore.Data.EntityFramework/Storage.cs index 267e010..eedae26 100644 --- a/src/ExtCore.Data.EntityFramework/Storage.cs +++ b/src/ExtCore.Data.EntityFramework/Storage.cs @@ -2,6 +2,7 @@ // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System; +using System.Threading.Tasks; using ExtCore.Data.Abstractions; using ExtCore.Infrastructure; using Microsoft.EntityFrameworkCore; @@ -50,5 +51,13 @@ public void Save() { (this.StorageContext as DbContext).SaveChanges(); } + + /// + /// Asynchronously commits the changes made by all the repositories. + /// + public async Task SaveAsync() + { + await (this.StorageContext as DbContext).SaveChangesAsync(); + } } } \ No newline at end of file diff --git a/src/ExtCore.Data/ExtCore.Data.csproj b/src/ExtCore.Data/ExtCore.Data.csproj index a25fb44..76ea00d 100644 --- a/src/ExtCore.Data/ExtCore.Data.csproj +++ b/src/ExtCore.Data/ExtCore.Data.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data extension component. Based on the ExtCore framework. - 4.0.0 + 4.1.0 netstandard2.0 ExtCore.Data ExtCore.Data diff --git a/src/ExtCore.Data/Extension.cs b/src/ExtCore.Data/Extension.cs index 99b4638..8d42f9f 100644 --- a/src/ExtCore.Data/Extension.cs +++ b/src/ExtCore.Data/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "4.0.0"; + public override string Version => "4.1.0"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Events/ExtCore.Events.csproj b/src/ExtCore.Events/ExtCore.Events.csproj index 884538c..20268db 100644 --- a/src/ExtCore.Events/ExtCore.Events.csproj +++ b/src/ExtCore.Events/ExtCore.Events.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Events extension component. Based on the ExtCore framework. - 4.0.0 + 4.1.0 netstandard2.0 ExtCore.Events ExtCore.Events diff --git a/src/ExtCore.Events/Extension.cs b/src/ExtCore.Events/Extension.cs index 1dd3d47..1d05802 100644 --- a/src/ExtCore.Events/Extension.cs +++ b/src/ExtCore.Events/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "4.0.0"; + public override string Version => "4.1.0"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.FileStorage.Abstractions/ExtCore.FileStorage.Abstractions.csproj b/src/ExtCore.FileStorage.Abstractions/ExtCore.FileStorage.Abstractions.csproj index bd176ee..2a4fe80 100644 --- a/src/ExtCore.FileStorage.Abstractions/ExtCore.FileStorage.Abstractions.csproj +++ b/src/ExtCore.FileStorage.Abstractions/ExtCore.FileStorage.Abstractions.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2018 Dmitry Sikorsky The ExtCore.FileStorage extension component. Based on the ExtCore framework. - 4.0.0 + 4.1.0 netstandard2.0 ExtCore.FileStorage.Abstractions ExtCore.FileStorage.Abstractions diff --git a/src/ExtCore.FileStorage.Dropbox/ExtCore.FileStorage.Dropbox.csproj b/src/ExtCore.FileStorage.Dropbox/ExtCore.FileStorage.Dropbox.csproj index 8eabf11..ae86f92 100644 --- a/src/ExtCore.FileStorage.Dropbox/ExtCore.FileStorage.Dropbox.csproj +++ b/src/ExtCore.FileStorage.Dropbox/ExtCore.FileStorage.Dropbox.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2018 Dmitry Sikorsky The ExtCore.FileStorage extension component. Based on the ExtCore framework. - 4.0.0 + 4.1.0 netstandard2.0 ExtCore.FileStorage.Dropbox ExtCore.FileStorage.Dropbox @@ -13,7 +13,7 @@ - + diff --git a/src/ExtCore.FileStorage.FileSystem/ExtCore.FileStorage.FileSystem.csproj b/src/ExtCore.FileStorage.FileSystem/ExtCore.FileStorage.FileSystem.csproj index 447e468..6657bf2 100644 --- a/src/ExtCore.FileStorage.FileSystem/ExtCore.FileStorage.FileSystem.csproj +++ b/src/ExtCore.FileStorage.FileSystem/ExtCore.FileStorage.FileSystem.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2018 Dmitry Sikorsky The ExtCore.FileStorage extension component. Based on the ExtCore framework. - 4.0.0 + 4.1.0 netstandard2.0 ExtCore.FileStorage.FileSystem ExtCore.FileStorage.FileSystem diff --git a/src/ExtCore.FileStorage/ExtCore.FileStorage.csproj b/src/ExtCore.FileStorage/ExtCore.FileStorage.csproj index 49c0ac8..0ef5ff5 100644 --- a/src/ExtCore.FileStorage/ExtCore.FileStorage.csproj +++ b/src/ExtCore.FileStorage/ExtCore.FileStorage.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2018 Dmitry Sikorsky The ExtCore.FileStorage extension component. Based on the ExtCore framework. - 4.0.0 + 4.1.0 netstandard2.0 ExtCore.FileStorage ExtCore.FileStorage diff --git a/src/ExtCore.FileStorage/Extension.cs b/src/ExtCore.FileStorage/Extension.cs index ed19e2e..fc6856a 100644 --- a/src/ExtCore.FileStorage/Extension.cs +++ b/src/ExtCore.FileStorage/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "4.0.0"; + public override string Version => "4.1.0"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj b/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj index a75d13b..55c9623 100644 --- a/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj +++ b/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky Free, open source and cross-platform framework for creating modular and extendable web applications based on ASP.NET Core. - 4.0.0 + 4.1.0 netstandard2.0 ExtCore.Infrastructure ExtCore.Infrastructure diff --git a/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj b/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj index c436e27..b4c24b2 100644 --- a/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj +++ b/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Mvc extension component. Based on the ExtCore framework. - 4.0.0 + 4.1.0 netstandard2.0 ExtCore.Mvc.Infrastructure ExtCore.Mvc.Infrastructure diff --git a/src/ExtCore.Mvc/ExtCore.Mvc.csproj b/src/ExtCore.Mvc/ExtCore.Mvc.csproj index 7a385cb..f3c545d 100644 --- a/src/ExtCore.Mvc/ExtCore.Mvc.csproj +++ b/src/ExtCore.Mvc/ExtCore.Mvc.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Mvc extension component. Based on the ExtCore framework. - 4.0.0 + 4.1.0 netstandard2.0 ExtCore.Mvc ExtCore.Mvc diff --git a/src/ExtCore.Mvc/Extension.cs b/src/ExtCore.Mvc/Extension.cs index e1ed6bc..9ff6b53 100644 --- a/src/ExtCore.Mvc/Extension.cs +++ b/src/ExtCore.Mvc/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "4.0.0"; + public override string Version => "4.1.0"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj b/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj index 70eaf35..df1de0b 100644 --- a/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj +++ b/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky Free, open source and cross-platform framework for creating modular and extendable web applications based on ASP.NET Core. - 4.0.0 + 4.1.0 netstandard2.0 ExtCore.WebApplication ExtCore.WebApplication From 764679197ae35b4d80007d9edbe42a0c30c2999f Mon Sep 17 00:00:00 2001 From: Dmitry Sikorsky Date: Mon, 24 Jun 2019 22:44:11 +0300 Subject: [PATCH 52/81] Updated README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 97d85c4..596c2f4 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# ExtCore 4.0.0 +# ExtCore 4.1.0 [![Join the chat at https://gitter.im/ExtCore/ExtCore](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/ExtCore/ExtCore?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) From 83c4d0071a85d6895d3383f738d47bd2cab81454 Mon Sep 17 00:00:00 2001 From: Dmitry Sikorsky Date: Mon, 7 Oct 2019 12:05:39 +0300 Subject: [PATCH 53/81] Updated to use .NET Core 3.0, fixed #159 --- .../ExtCore.Data.Abstractions.csproj | 2 +- .../ExtCore.Data.Dapper.MySql.csproj | 6 +- .../ExtCore.Data.Dapper.PostgreSql.csproj | 6 +- .../ExtCore.Data.Dapper.SqlServer.csproj | 4 +- .../ExtCore.Data.Dapper.Sqlite.csproj | 6 +- .../Actions/AddStorageContextAction.cs | 2 +- .../ExtCore.Data.Dapper.csproj | 6 +- src/ExtCore.Data.Dapper/Extension.cs | 2 +- .../ExtCore.Data.Entities.Abstractions.csproj | 2 +- .../ExtCore.Data.EntityFramework.MySql.csproj | 6 +- ...ore.Data.EntityFramework.PostgreSql.csproj | 6 +- ...Core.Data.EntityFramework.SqlServer.csproj | 6 +- ...ExtCore.Data.EntityFramework.Sqlite.csproj | 6 +- .../Actions/AddStorageContextAction.cs | 2 +- .../ExtCore.Data.EntityFramework.csproj | 6 +- src/ExtCore.Data.EntityFramework/Extension.cs | 2 +- src/ExtCore.Data/Actions/AddStorageAction.cs | 2 +- src/ExtCore.Data/ExtCore.Data.csproj | 4 +- src/ExtCore.Data/Extension.cs | 2 +- src/ExtCore.Events/ExtCore.Events.csproj | 4 +- src/ExtCore.Events/Extension.cs | 2 +- .../ExtCore.FileStorage.Abstractions.csproj | 2 +- .../ExtCore.FileStorage.Dropbox.csproj | 4 +- .../ExtCore.FileStorage.FileSystem.csproj | 2 +- .../Actions/AddDirectoryProxyAction.cs | 2 +- .../Actions/AddFileProxyAction.cs | 2 +- .../Actions/AddFileStorageAction.cs | 2 +- .../ExtCore.FileStorage.csproj | 4 +- src/ExtCore.FileStorage/Extension.cs | 2 +- .../Actions/IConfigureServicesAction.cs | 4 +- .../ExtCore.Infrastructure.csproj | 6 +- ...UseMvcAction.cs => IUseEndpointsAction.cs} | 14 +- .../ExtCore.Mvc.Infrastructure.csproj | 8 +- src/ExtCore.Mvc/Actions/AddMvcAction.cs | 11 +- .../Actions/AddStaticFilesAction.cs | 6 +- ...{UseMvcAction.cs => UseEndpointsAction.cs} | 20 +- src/ExtCore.Mvc/Actions/UseRoutingAction.cs | 35 ++++ src/ExtCore.Mvc/CompositeFileProvider.cs | 182 ------------------ src/ExtCore.Mvc/ExtCore.Mvc.csproj | 7 +- src/ExtCore.Mvc/Extension.cs | 2 +- .../DefaultAssemblyProvider.cs | 74 ++++--- .../ExtCore.WebApplication.csproj | 6 +- 42 files changed, 157 insertions(+), 322 deletions(-) rename src/ExtCore.Mvc.Infrastructure/Actions/{IUseMvcAction.cs => IUseEndpointsAction.cs} (65%) rename src/ExtCore.Mvc/Actions/{UseMvcAction.cs => UseEndpointsAction.cs} (66%) create mode 100644 src/ExtCore.Mvc/Actions/UseRoutingAction.cs delete mode 100644 src/ExtCore.Mvc/CompositeFileProvider.cs diff --git a/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj b/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj index dc718b6..b11ef0a 100644 --- a/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj +++ b/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data extension component. Based on the ExtCore framework. - 4.1.0 + 5.0.0-alpha1 netstandard2.0 ExtCore.Data.Abstractions ExtCore.Data.Abstractions diff --git a/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj b/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj index b92a3ad..f7e6e22 100644 --- a/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj +++ b/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj @@ -4,8 +4,8 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 4.1.0 - netstandard2.0 + 5.0.0-alpha1 + netcoreapp3.0 ExtCore.Data.Dapper.MySql ExtCore.Data.Dapper.MySql http://extcore.net/extcore_nuget_icon.png @@ -13,7 +13,7 @@ - + diff --git a/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj b/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj index f2d0121..d651cd4 100644 --- a/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj +++ b/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj @@ -4,8 +4,8 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 4.1.0 - netstandard2.0 + 5.0.0-alpha1 + netcoreapp3.0 ExtCore.Data.Dapper.PostgreSql ExtCore.Data.Dapper.PostgreSql http://extcore.net/extcore_nuget_icon.png @@ -13,7 +13,7 @@ - + diff --git a/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj b/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj index a9b3e4e..c3d572f 100644 --- a/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj +++ b/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj @@ -4,8 +4,8 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 4.1.0 - netstandard2.0 + 5.0.0-alpha1 + netcoreapp3.0 ExtCore.Data.Dapper.SqlServer ExtCore.Data.Dapper.SqlServer http://extcore.net/extcore_nuget_icon.png diff --git a/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj b/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj index 1fcec00..47b64d0 100644 --- a/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj +++ b/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj @@ -4,8 +4,8 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 4.1.0 - netstandard2.0 + 5.0.0-alpha1 + netcoreapp3.0 ExtCore.Data.Dapper.Sqlite ExtCore.Data.Dapper.Sqlite http://extcore.net/extcore_nuget_icon.png @@ -13,7 +13,7 @@ - + diff --git a/src/ExtCore.Data.Dapper/Actions/AddStorageContextAction.cs b/src/ExtCore.Data.Dapper/Actions/AddStorageContextAction.cs index 26b83b2..e1c6771 100644 --- a/src/ExtCore.Data.Dapper/Actions/AddStorageContextAction.cs +++ b/src/ExtCore.Data.Dapper/Actions/AddStorageContextAction.cs @@ -26,7 +26,7 @@ public class AddStorageContextAction : IConfigureServicesAction /// /// Registers found implementation of the IStorageContext interface inside the DI. /// - /// + /// /// Will be provided by the ExtCore and might be used to register any service inside the DI. /// /// diff --git a/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj b/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj index b717b11..97a5e87 100644 --- a/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj +++ b/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj @@ -4,8 +4,8 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 4.1.0 - netstandard2.0 + 5.0.0-alpha1 + netcoreapp3.0 ExtCore.Data.Dapper ExtCore.Data.Dapper http://extcore.net/extcore_nuget_icon.png @@ -13,7 +13,7 @@ - + diff --git a/src/ExtCore.Data.Dapper/Extension.cs b/src/ExtCore.Data.Dapper/Extension.cs index 10f3ad0..d1c63e4 100644 --- a/src/ExtCore.Data.Dapper/Extension.cs +++ b/src/ExtCore.Data.Dapper/Extension.cs @@ -24,7 +24,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "4.1.0"; + public override string Version => "5.0.0-alpha1"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj b/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj index f431231..e267fe9 100644 --- a/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj +++ b/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data extension component. Based on the ExtCore framework. - 4.1.0 + 5.0.0-alpha1 netstandard2.0 ExtCore.Data.Entities.Abstractions ExtCore.Data.Entities.Abstractions diff --git a/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj b/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj index bd4320e..4255a00 100644 --- a/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj +++ b/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj @@ -4,8 +4,8 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 4.1.0 - netstandard2.0 + 5.0.0-alpha1 + netcoreapp3.0 ExtCore.Data.EntityFramework.MySql ExtCore.Data.EntityFramework.MySql http://extcore.net/extcore_nuget_icon.png @@ -13,7 +13,7 @@ - + diff --git a/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj b/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj index 8c0ddf7..fb0feea 100644 --- a/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj +++ b/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj @@ -4,8 +4,8 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 4.1.0 - netstandard2.0 + 5.0.0-alpha1 + netcoreapp3.0 ExtCore.Data.EntityFramework.PostgreSql ExtCore.Data.EntityFramework.PostgreSql http://extcore.net/extcore_nuget_icon.png @@ -13,7 +13,7 @@ - + diff --git a/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj b/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj index f0875ca..eea1ea6 100644 --- a/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj +++ b/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj @@ -4,8 +4,8 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 4.1.0 - netstandard2.0 + 5.0.0-alpha1 + netcoreapp3.0 ExtCore.Data.EntityFramework.SqlServer ExtCore.Data.EntityFramework.SqlServer http://extcore.net/extcore_nuget_icon.png @@ -13,7 +13,7 @@ - + diff --git a/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj b/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj index e7f2c11..9e55877 100644 --- a/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj +++ b/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj @@ -4,8 +4,8 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 4.1.0 - netstandard2.0 + 5.0.0-alpha1 + netcoreapp3.0 ExtCore.Data.EntityFramework.Sqlite ExtCore.Data.EntityFramework.Sqlite http://extcore.net/extcore_nuget_icon.png @@ -13,7 +13,7 @@ - + diff --git a/src/ExtCore.Data.EntityFramework/Actions/AddStorageContextAction.cs b/src/ExtCore.Data.EntityFramework/Actions/AddStorageContextAction.cs index 0c40a3a..8b0b45c 100644 --- a/src/ExtCore.Data.EntityFramework/Actions/AddStorageContextAction.cs +++ b/src/ExtCore.Data.EntityFramework/Actions/AddStorageContextAction.cs @@ -26,7 +26,7 @@ public class AddStorageContextAction : IConfigureServicesAction /// /// Registers found implementation of the IStorageContext interface inside the DI. /// - /// + /// /// Will be provided by the ExtCore and might be used to register any service inside the DI. /// /// diff --git a/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj b/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj index 0061dda..b49e68c 100644 --- a/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj +++ b/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj @@ -4,8 +4,8 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 4.1.0 - netstandard2.0 + 5.0.0-alpha1 + netcoreapp3.0 ExtCore.Data.EntityFramework ExtCore.Data.EntityFramework http://extcore.net/extcore_nuget_icon.png @@ -13,7 +13,7 @@ - + diff --git a/src/ExtCore.Data.EntityFramework/Extension.cs b/src/ExtCore.Data.EntityFramework/Extension.cs index 888456f..3929303 100644 --- a/src/ExtCore.Data.EntityFramework/Extension.cs +++ b/src/ExtCore.Data.EntityFramework/Extension.cs @@ -24,7 +24,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "4.1.0"; + public override string Version => "5.0.0-alpha1"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Data/Actions/AddStorageAction.cs b/src/ExtCore.Data/Actions/AddStorageAction.cs index af3acf3..9989b63 100644 --- a/src/ExtCore.Data/Actions/AddStorageAction.cs +++ b/src/ExtCore.Data/Actions/AddStorageAction.cs @@ -26,7 +26,7 @@ public class AddStorageAction : IConfigureServicesAction /// /// Registers found implementation of the IStorage interface inside the DI. /// - /// + /// /// Will be provided by the ExtCore and might be used to register any service inside the DI. /// /// diff --git a/src/ExtCore.Data/ExtCore.Data.csproj b/src/ExtCore.Data/ExtCore.Data.csproj index 76ea00d..01a87c7 100644 --- a/src/ExtCore.Data/ExtCore.Data.csproj +++ b/src/ExtCore.Data/ExtCore.Data.csproj @@ -4,8 +4,8 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data extension component. Based on the ExtCore framework. - 4.1.0 - netstandard2.0 + 5.0.0-alpha1 + netcoreapp3.0 ExtCore.Data ExtCore.Data http://extcore.net/extcore_nuget_icon.png diff --git a/src/ExtCore.Data/Extension.cs b/src/ExtCore.Data/Extension.cs index 8d42f9f..41c5c47 100644 --- a/src/ExtCore.Data/Extension.cs +++ b/src/ExtCore.Data/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "4.1.0"; + public override string Version => "5.0.0-alpha1"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Events/ExtCore.Events.csproj b/src/ExtCore.Events/ExtCore.Events.csproj index 20268db..c0291c3 100644 --- a/src/ExtCore.Events/ExtCore.Events.csproj +++ b/src/ExtCore.Events/ExtCore.Events.csproj @@ -4,8 +4,8 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Events extension component. Based on the ExtCore framework. - 4.1.0 - netstandard2.0 + 5.0.0-alpha1 + netcoreapp3.0 ExtCore.Events ExtCore.Events http://extcore.net/extcore_nuget_icon.png diff --git a/src/ExtCore.Events/Extension.cs b/src/ExtCore.Events/Extension.cs index 1d05802..d41b4f1 100644 --- a/src/ExtCore.Events/Extension.cs +++ b/src/ExtCore.Events/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "4.1.0"; + public override string Version => "5.0.0-alpha1"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.FileStorage.Abstractions/ExtCore.FileStorage.Abstractions.csproj b/src/ExtCore.FileStorage.Abstractions/ExtCore.FileStorage.Abstractions.csproj index 2a4fe80..24dea55 100644 --- a/src/ExtCore.FileStorage.Abstractions/ExtCore.FileStorage.Abstractions.csproj +++ b/src/ExtCore.FileStorage.Abstractions/ExtCore.FileStorage.Abstractions.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2018 Dmitry Sikorsky The ExtCore.FileStorage extension component. Based on the ExtCore framework. - 4.1.0 + 5.0.0-alpha1 netstandard2.0 ExtCore.FileStorage.Abstractions ExtCore.FileStorage.Abstractions diff --git a/src/ExtCore.FileStorage.Dropbox/ExtCore.FileStorage.Dropbox.csproj b/src/ExtCore.FileStorage.Dropbox/ExtCore.FileStorage.Dropbox.csproj index ae86f92..7d9fa82 100644 --- a/src/ExtCore.FileStorage.Dropbox/ExtCore.FileStorage.Dropbox.csproj +++ b/src/ExtCore.FileStorage.Dropbox/ExtCore.FileStorage.Dropbox.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2018 Dmitry Sikorsky The ExtCore.FileStorage extension component. Based on the ExtCore framework. - 4.1.0 + 5.0.0-alpha1 netstandard2.0 ExtCore.FileStorage.Dropbox ExtCore.FileStorage.Dropbox @@ -14,7 +14,7 @@ - + diff --git a/src/ExtCore.FileStorage.FileSystem/ExtCore.FileStorage.FileSystem.csproj b/src/ExtCore.FileStorage.FileSystem/ExtCore.FileStorage.FileSystem.csproj index 6657bf2..01c6959 100644 --- a/src/ExtCore.FileStorage.FileSystem/ExtCore.FileStorage.FileSystem.csproj +++ b/src/ExtCore.FileStorage.FileSystem/ExtCore.FileStorage.FileSystem.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2018 Dmitry Sikorsky The ExtCore.FileStorage extension component. Based on the ExtCore framework. - 4.1.0 + 5.0.0-alpha1 netstandard2.0 ExtCore.FileStorage.FileSystem ExtCore.FileStorage.FileSystem diff --git a/src/ExtCore.FileStorage/Actions/AddDirectoryProxyAction.cs b/src/ExtCore.FileStorage/Actions/AddDirectoryProxyAction.cs index c7c388e..b7111f4 100644 --- a/src/ExtCore.FileStorage/Actions/AddDirectoryProxyAction.cs +++ b/src/ExtCore.FileStorage/Actions/AddDirectoryProxyAction.cs @@ -26,7 +26,7 @@ public class AddDirectoryProxyAction : IConfigureServicesAction /// /// Registers found implementation of the IDirectoryProxy interface inside the DI. /// - /// + /// /// Will be provided by the ExtCore and might be used to register any service inside the DI. /// /// diff --git a/src/ExtCore.FileStorage/Actions/AddFileProxyAction.cs b/src/ExtCore.FileStorage/Actions/AddFileProxyAction.cs index b84e783..91176e2 100644 --- a/src/ExtCore.FileStorage/Actions/AddFileProxyAction.cs +++ b/src/ExtCore.FileStorage/Actions/AddFileProxyAction.cs @@ -26,7 +26,7 @@ public class AddFileProxyAction : IConfigureServicesAction /// /// Registers found implementation of the IFileProxy interface inside the DI. /// - /// + /// /// Will be provided by the ExtCore and might be used to register any service inside the DI. /// /// diff --git a/src/ExtCore.FileStorage/Actions/AddFileStorageAction.cs b/src/ExtCore.FileStorage/Actions/AddFileStorageAction.cs index 89402ae..b1a9a52 100644 --- a/src/ExtCore.FileStorage/Actions/AddFileStorageAction.cs +++ b/src/ExtCore.FileStorage/Actions/AddFileStorageAction.cs @@ -26,7 +26,7 @@ public class AddFileStorageAction : IConfigureServicesAction /// /// Registers found implementation of the IFileStorage interface inside the DI. /// - /// + /// /// Will be provided by the ExtCore and might be used to register any service inside the DI. /// /// diff --git a/src/ExtCore.FileStorage/ExtCore.FileStorage.csproj b/src/ExtCore.FileStorage/ExtCore.FileStorage.csproj index 0ef5ff5..7fe1ac7 100644 --- a/src/ExtCore.FileStorage/ExtCore.FileStorage.csproj +++ b/src/ExtCore.FileStorage/ExtCore.FileStorage.csproj @@ -4,8 +4,8 @@ Dmitry Sikorsky Copyright © 2018 Dmitry Sikorsky The ExtCore.FileStorage extension component. Based on the ExtCore framework. - 4.1.0 - netstandard2.0 + 5.0.0-alpha1 + netcoreapp3.0 ExtCore.FileStorage ExtCore.FileStorage http://extcore.net/extcore_nuget_icon.png diff --git a/src/ExtCore.FileStorage/Extension.cs b/src/ExtCore.FileStorage/Extension.cs index fc6856a..1d62ef6 100644 --- a/src/ExtCore.FileStorage/Extension.cs +++ b/src/ExtCore.FileStorage/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "4.1.0"; + public override string Version => "5.0.0-alpha1"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Infrastructure/Actions/IConfigureServicesAction.cs b/src/ExtCore.Infrastructure/Actions/IConfigureServicesAction.cs index 6c9ff8f..4b344f2 100644 --- a/src/ExtCore.Infrastructure/Actions/IConfigureServicesAction.cs +++ b/src/ExtCore.Infrastructure/Actions/IConfigureServicesAction.cs @@ -20,12 +20,12 @@ public interface IConfigureServicesAction /// /// Contains any code that must be executed inside the ConfigureServices method of the web application's Startup class. /// - /// + /// /// Will be provided by the ExtCore and might be used to register any service inside the DI. /// /// /// Will be provided by the ExtCore and might be used to get any service that is registered inside the DI at this moment. /// - void Execute(IServiceCollection serviceCollection, IServiceProvider serviceProvider); + void Execute(IServiceCollection services, IServiceProvider serviceProvider); } } \ No newline at end of file diff --git a/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj b/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj index 55c9623..8da7d2e 100644 --- a/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj +++ b/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj @@ -4,8 +4,8 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky Free, open source and cross-platform framework for creating modular and extendable web applications based on ASP.NET Core. - 4.1.0 - netstandard2.0 + 5.0.0-alpha1 + netcoreapp3.0 ExtCore.Infrastructure ExtCore.Infrastructure http://extcore.net/extcore_nuget_icon.png @@ -13,7 +13,7 @@ - + diff --git a/src/ExtCore.Mvc.Infrastructure/Actions/IUseMvcAction.cs b/src/ExtCore.Mvc.Infrastructure/Actions/IUseEndpointsAction.cs similarity index 65% rename from src/ExtCore.Mvc.Infrastructure/Actions/IUseMvcAction.cs rename to src/ExtCore.Mvc.Infrastructure/Actions/IUseEndpointsAction.cs index 931323d..b456e58 100644 --- a/src/ExtCore.Mvc.Infrastructure/Actions/IUseMvcAction.cs +++ b/src/ExtCore.Mvc.Infrastructure/Actions/IUseEndpointsAction.cs @@ -7,10 +7,10 @@ namespace ExtCore.Mvc.Infrastructure.Actions { /// - /// Describes an action that must be executed inside the UseMvc method and might be used by the extensions - /// to configure the routes. + /// Describes an action that must be executed inside the UseEndpoints method and might be used by the extensions + /// to configure the endpoints. /// - public interface IUseMvcAction + public interface IUseEndpointsAction { /// /// Priority of the action. The actions will be executed in the order specified by the priority (from smallest to largest). @@ -18,14 +18,14 @@ public interface IUseMvcAction int Priority { get; } /// - /// Contains any code that must be executed inside the UseMvc method. + /// Contains any code that must be executed inside the UseEndpoints method. /// - /// - /// Will be provided by the ExtCore.Mvc and might be used to configure the routes. + /// + /// Will be provided by the ExtCore.Mvc and might be used to configure the endpoints. /// /// /// Will be provided by the ExtCore.Mvc and might be used to get any service that is registered inside the DI at this moment. /// - void Execute(IRouteBuilder routeBuilder, IServiceProvider serviceProvider); + void Execute(IEndpointRouteBuilder endpointRouteBuilder, IServiceProvider serviceProvider); } } \ No newline at end of file diff --git a/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj b/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj index b4c24b2..fdfb502 100644 --- a/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj +++ b/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj @@ -4,18 +4,14 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Mvc extension component. Based on the ExtCore framework. - 4.1.0 - netstandard2.0 + 5.0.0-alpha1 + netcoreapp3.0 ExtCore.Mvc.Infrastructure ExtCore.Mvc.Infrastructure http://extcore.net/extcore_nuget_icon.png http://extcore.net/ - - - - diff --git a/src/ExtCore.Mvc/Actions/AddMvcAction.cs b/src/ExtCore.Mvc/Actions/AddMvcAction.cs index 9fa3e42..3150516 100644 --- a/src/ExtCore.Mvc/Actions/AddMvcAction.cs +++ b/src/ExtCore.Mvc/Actions/AddMvcAction.cs @@ -8,7 +8,6 @@ using ExtCore.Infrastructure.Actions; using ExtCore.Mvc.Infrastructure.Actions; using Microsoft.Extensions.DependencyInjection; -using Microsoft.Extensions.FileProviders; using Microsoft.Extensions.Logging; namespace ExtCore.Mvc.Actions @@ -27,7 +26,7 @@ public class AddMvcAction : IConfigureServicesAction /// /// Registers the MVC services inside the DI. /// - /// + /// /// Will be provided by the ExtCore and might be used to register any service inside the DI. /// /// @@ -40,14 +39,6 @@ public void Execute(IServiceCollection services, IServiceProvider serviceProvide foreach (Assembly assembly in ExtensionManager.Assemblies) mvcBuilder.AddApplicationPart(assembly); - mvcBuilder.AddRazorOptions( - o => - { - foreach (Assembly assembly in ExtensionManager.Assemblies) - o.FileProviders.Add(new EmbeddedFileProvider(assembly, assembly.GetName().Name)); - } - ); - foreach (IAddMvcAction action in ExtensionManager.GetInstances().OrderBy(a => a.Priority)) { ILogger logger = serviceProvider.GetService().CreateLogger("ExtCore.Mvc"); diff --git a/src/ExtCore.Mvc/Actions/AddStaticFilesAction.cs b/src/ExtCore.Mvc/Actions/AddStaticFilesAction.cs index 392583d..e10fd7c 100644 --- a/src/ExtCore.Mvc/Actions/AddStaticFilesAction.cs +++ b/src/ExtCore.Mvc/Actions/AddStaticFilesAction.cs @@ -25,7 +25,7 @@ public class AddStaticFilesAction : IConfigureServicesAction /// /// Creates and registers the composite file provider that contains resources from all the extensions. /// - /// + /// /// Will be provided by the ExtCore and might be used to register any service inside the DI. /// /// @@ -33,13 +33,13 @@ public class AddStaticFilesAction : IConfigureServicesAction /// public void Execute(IServiceCollection services, IServiceProvider serviceProvider) { - serviceProvider.GetService().WebRootFileProvider = this.CreateCompositeFileProvider(serviceProvider); + serviceProvider.GetService().WebRootFileProvider = this.CreateCompositeFileProvider(serviceProvider); } private IFileProvider CreateCompositeFileProvider(IServiceProvider serviceProvider) { IFileProvider[] fileProviders = new IFileProvider[] { - serviceProvider.GetService().WebRootFileProvider + serviceProvider.GetService().WebRootFileProvider }; return new CompositeFileProvider( diff --git a/src/ExtCore.Mvc/Actions/UseMvcAction.cs b/src/ExtCore.Mvc/Actions/UseEndpointsAction.cs similarity index 66% rename from src/ExtCore.Mvc/Actions/UseMvcAction.cs rename to src/ExtCore.Mvc/Actions/UseEndpointsAction.cs index 5b0edcd..88f8d02 100644 --- a/src/ExtCore.Mvc/Actions/UseMvcAction.cs +++ b/src/ExtCore.Mvc/Actions/UseEndpointsAction.cs @@ -1,4 +1,4 @@ -// Copyright © 2017 Dmitry Sikorsky. All rights reserved. +// Copyright © 2019 Dmitry Sikorsky. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System; @@ -14,17 +14,17 @@ namespace ExtCore.Mvc.Actions { /// /// Implements the IConfigureAction interface and registers the - /// MVC middleware inside a web application's request pipeline. + /// endpoints middleware inside a web application's request pipeline. /// - public class UseMvcAction : IConfigureAction + public class UseEndpointsAction : IConfigureAction { /// /// Priority of the action. The actions will be executed in the order specified by the priority (from smallest to largest). /// - public int Priority => 10000; + public int Priority => 10001; /// - /// Registers the MVC middleware inside a web application's request pipeline. + /// Registers the endpoints middleware inside a web application's request pipeline. /// /// /// Will be provided by the ExtCore and might be used to configure a web application's request pipeline. @@ -34,15 +34,15 @@ public class UseMvcAction : IConfigureAction /// public void Execute(IApplicationBuilder applicationBuilder, IServiceProvider serviceProvider) { - applicationBuilder.UseMvc( - routeBuilder => + applicationBuilder.UseEndpoints( + endpointRouteBuilder => { - foreach (IUseMvcAction action in ExtensionManager.GetInstances().OrderBy(a => a.Priority)) + foreach (IUseEndpointsAction action in ExtensionManager.GetInstances().OrderBy(a => a.Priority)) { ILogger logger = serviceProvider.GetService().CreateLogger("ExtCore.Mvc"); - logger.LogInformation("Executing UseMvc action '{0}'", action.GetType().FullName); - action.Execute(routeBuilder, serviceProvider); + logger.LogInformation("Executing UseEndpoints action '{0}'", action.GetType().FullName); + action.Execute(endpointRouteBuilder, serviceProvider); } } ); diff --git a/src/ExtCore.Mvc/Actions/UseRoutingAction.cs b/src/ExtCore.Mvc/Actions/UseRoutingAction.cs new file mode 100644 index 0000000..3cf552b --- /dev/null +++ b/src/ExtCore.Mvc/Actions/UseRoutingAction.cs @@ -0,0 +1,35 @@ +// Copyright © 2019 Dmitry Sikorsky. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using ExtCore.Infrastructure.Actions; +using Microsoft.AspNetCore.Builder; + +namespace ExtCore.Mvc.Actions +{ + /// + /// Implements the IConfigureAction interface and registers the + /// routing middleware inside a web application's request pipeline. + /// + public class UseRoutingAction : IConfigureAction + { + /// + /// Priority of the action. The actions will be executed in the order specified by the priority (from smallest to largest). + /// + public int Priority => 10000; + + /// + /// Registers the routing middleware inside a web application's request pipeline. + /// + /// + /// Will be provided by the ExtCore and might be used to configure a web application's request pipeline. + /// + /// + /// Will be provided by the ExtCore and might be used to get any service that is registered inside the DI at this moment. + /// + public void Execute(IApplicationBuilder applicationBuilder, IServiceProvider serviceProvider) + { + applicationBuilder.UseRouting(); + } + } +} \ No newline at end of file diff --git a/src/ExtCore.Mvc/CompositeFileProvider.cs b/src/ExtCore.Mvc/CompositeFileProvider.cs deleted file mode 100644 index c6cc605..0000000 --- a/src/ExtCore.Mvc/CompositeFileProvider.cs +++ /dev/null @@ -1,182 +0,0 @@ -// Copyright © 2015 Dmitry Sikorsky. All rights reserved. -// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. - -using System; -using System.Collections; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using Microsoft.Extensions.FileProviders; -using Microsoft.Extensions.Primitives; - -namespace ExtCore.Mvc -{ - /// - /// Implements the IFileProvider interface and represents composite file provider - /// that is built from the set of other file providers like PhysicalFileProvider, - /// EmbeddedFileProvider etc. It is used to make it possible to resolve - /// files that are located in a file system, assemblies etc. - /// - public class CompositeFileProvider : IFileProvider - { - private readonly IEnumerable fileProviders; - - /// - /// Initializes a new instance of the CompositeFileProvider class. - /// - /// The set of the file providers to look for the files in. - public CompositeFileProvider(IEnumerable fileProviders) - { - this.fileProviders = fileProviders; - } - - public IDirectoryContents GetDirectoryContents(string subpath) - { - foreach (IFileProvider fileProvider in this.fileProviders) - { - IDirectoryContents directoryContents = fileProvider.GetDirectoryContents(subpath); - - if (directoryContents != null && directoryContents.Exists) - return directoryContents; - } - - return new NonexistentDirectoryContents(); - } - - public IFileInfo GetFileInfo(string subpath) - { - foreach (IFileProvider fileProvider in this.fileProviders) - { - IFileInfo fileInfo = fileProvider.GetFileInfo(subpath); - - if (fileInfo != null && fileInfo.Exists) - return fileInfo; - } - - return new NonexistentFileInfo(subpath); - } - - public IChangeToken Watch(string filter) - { - foreach (IFileProvider fileProvider in this.fileProviders) - { - IChangeToken changeToken = fileProvider.Watch(filter); - - if (changeToken != null) - return changeToken; - } - - return NonexistentChangeToken.Singleton; - } - } - - internal class NonexistentDirectoryContents : IDirectoryContents - { - public bool Exists - { - get - { - return false; - } - } - - public IEnumerator GetEnumerator() - { - return Enumerable.Empty().GetEnumerator(); - } - - IEnumerator IEnumerable.GetEnumerator() - { - return this.GetEnumerator(); - } - } - - internal class NonexistentFileInfo : IFileInfo - { - private readonly string name; - - public NonexistentFileInfo(string name) - { - this.name = name; - } - - public bool Exists - { - get - { - return false; - } - } - - public bool IsDirectory - { - get - { - return false; - } - } - - public DateTimeOffset LastModified - { - get - { - return DateTimeOffset.MinValue; - } - } - - public long Length - { - get - { - return -1; - } - } - - public string Name - { - get - { - return this.name; - } - } - - public string PhysicalPath - { - get - { - return null; - } - } - - public Stream CreateReadStream() - { - throw new FileNotFoundException(this.name); - } - } - - internal class NonexistentChangeToken : IChangeToken - { - public static NonexistentChangeToken Singleton { get; } = new NonexistentChangeToken(); - - public bool ActiveChangeCallbacks - { - get - { - throw new NotImplementedException(); - } - } - - public bool HasChanged - { - get - { - throw new NotImplementedException(); - } - } - - public IDisposable RegisterChangeCallback(Action callback, object state) - { - throw new NotImplementedException(); - } - } -} \ No newline at end of file diff --git a/src/ExtCore.Mvc/ExtCore.Mvc.csproj b/src/ExtCore.Mvc/ExtCore.Mvc.csproj index f3c545d..1b07a41 100644 --- a/src/ExtCore.Mvc/ExtCore.Mvc.csproj +++ b/src/ExtCore.Mvc/ExtCore.Mvc.csproj @@ -4,8 +4,8 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Mvc extension component. Based on the ExtCore framework. - 4.1.0 - netstandard2.0 + 5.0.0-alpha1 + netcoreapp3.0 ExtCore.Mvc ExtCore.Mvc http://extcore.net/extcore_nuget_icon.png @@ -13,8 +13,7 @@ - - + diff --git a/src/ExtCore.Mvc/Extension.cs b/src/ExtCore.Mvc/Extension.cs index 9ff6b53..12f9a5a 100644 --- a/src/ExtCore.Mvc/Extension.cs +++ b/src/ExtCore.Mvc/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "4.1.0"; + public override string Version => "5.0.0-alpha1"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.WebApplication/DefaultAssemblyProvider.cs b/src/ExtCore.WebApplication/DefaultAssemblyProvider.cs index 526b8db..bdb0009 100644 --- a/src/ExtCore.WebApplication/DefaultAssemblyProvider.cs +++ b/src/ExtCore.WebApplication/DefaultAssemblyProvider.cs @@ -43,19 +43,15 @@ public DefaultAssemblyProvider(IServiceProvider serviceProvider) { this.logger = serviceProvider.GetService().CreateLogger("ExtCore.WebApplication"); this.IsCandidateAssembly = assembly => - !assembly.FullName.StartsWith("System.", StringComparison.OrdinalIgnoreCase) && - !assembly.FullName.StartsWith("Microsoft.", StringComparison.OrdinalIgnoreCase); + !assembly.FullName.StartsWith("System", StringComparison.OrdinalIgnoreCase) && + !assembly.FullName.StartsWith("Microsoft", StringComparison.OrdinalIgnoreCase); this.IsCandidateCompilationLibrary = library => - !library.Name.StartsWith("System.", StringComparison.OrdinalIgnoreCase) && - !library.Name.StartsWith("Microsoft.", StringComparison.OrdinalIgnoreCase) && - !library.Name.StartsWith("Newtonsoft.", StringComparison.OrdinalIgnoreCase) && - !library.Name.StartsWith("runtime.", StringComparison.OrdinalIgnoreCase) && - !library.Name.Equals("NETStandard.Library", StringComparison.OrdinalIgnoreCase) && - !library.Name.Equals("Libuv", StringComparison.OrdinalIgnoreCase) && - !library.Name.Equals("Remotion.Linq", StringComparison.OrdinalIgnoreCase) && - !library.Name.Equals("StackExchange.Redis.StrongName", StringComparison.OrdinalIgnoreCase) && - !library.Name.Equals("WindowsAzure.Storage", StringComparison.OrdinalIgnoreCase); + !library.Name.StartsWith("mscorlib", StringComparison.OrdinalIgnoreCase) && + !library.Name.StartsWith("netstandard", StringComparison.OrdinalIgnoreCase) && + !library.Name.StartsWith("System", StringComparison.OrdinalIgnoreCase) && + !library.Name.StartsWith("Microsoft", StringComparison.OrdinalIgnoreCase) && + !library.Name.StartsWith("WindowsBase", StringComparison.OrdinalIgnoreCase); } /// @@ -76,21 +72,21 @@ public IEnumerable GetAssemblies(string path, bool includingSubpaths) return assemblies; } - private void GetAssembliesFromPath(List assemblies, string path, bool includingSubpaths) + private void GetAssembliesFromDependencyContext(List assemblies) { - if (!string.IsNullOrEmpty(path) && Directory.Exists(path)) - { - this.logger.LogInformation("Discovering and loading assemblies from path '{0}'", path); + this.logger.LogInformation("Discovering and loading assemblies from DependencyContext"); - foreach (string extensionPath in Directory.EnumerateFiles(path, "*.dll")) + foreach (CompilationLibrary compilationLibrary in DependencyContext.Default.CompileLibraries) + { + if (this.IsCandidateCompilationLibrary(compilationLibrary)) { Assembly assembly = null; try { - assembly = AssemblyLoadContext.Default.LoadFromAssemblyPath(extensionPath); + assembly = AssemblyLoadContext.Default.LoadFromAssemblyName(new AssemblyName(compilationLibrary.Name)); - if (this.IsCandidateAssembly(assembly) && !assemblies.Any(a => string.Equals(a.FullName, assembly.FullName, StringComparison.OrdinalIgnoreCase))) + if (!assemblies.Any(a => string.Equals(a.FullName, assembly.FullName, StringComparison.OrdinalIgnoreCase))) { assemblies.Add(assembly); this.logger.LogInformation("Assembly '{0}' is discovered and loaded", assembly.FullName); @@ -99,40 +95,28 @@ private void GetAssembliesFromPath(List assemblies, string path, bool catch (Exception e) { - this.logger.LogWarning("Error loading assembly '{0}'", extensionPath); + this.logger.LogWarning("Error loading assembly '{0}'", compilationLibrary.Name); this.logger.LogWarning(e.ToString()); } } - - if (includingSubpaths) - foreach (string subpath in Directory.GetDirectories(path)) - this.GetAssembliesFromPath(assemblies, subpath, includingSubpaths); - } - - else - { - if (string.IsNullOrEmpty(path)) - this.logger.LogWarning("Discovering and loading assemblies from path skipped: path not provided", path); - - else this.logger.LogWarning("Discovering and loading assemblies from path '{0}' skipped: path not found", path); } } - private void GetAssembliesFromDependencyContext(List assemblies) + private void GetAssembliesFromPath(List assemblies, string path, bool includingSubpaths) { - this.logger.LogInformation("Discovering and loading assemblies from DependencyContext"); - - foreach (CompilationLibrary compilationLibrary in DependencyContext.Default.CompileLibraries) + if (!string.IsNullOrEmpty(path) && Directory.Exists(path)) { - if (this.IsCandidateCompilationLibrary(compilationLibrary)) + this.logger.LogInformation("Discovering and loading assemblies from path '{0}'", path); + + foreach (string extensionPath in Directory.EnumerateFiles(path, "*.dll")) { Assembly assembly = null; try { - assembly = AssemblyLoadContext.Default.LoadFromAssemblyName(new AssemblyName(compilationLibrary.Name)); + assembly = AssemblyLoadContext.Default.LoadFromAssemblyPath(extensionPath); - if (!assemblies.Any(a => string.Equals(a.FullName, assembly.FullName, StringComparison.OrdinalIgnoreCase))) + if (this.IsCandidateAssembly(assembly) && !assemblies.Any(a => string.Equals(a.FullName, assembly.FullName, StringComparison.OrdinalIgnoreCase))) { assemblies.Add(assembly); this.logger.LogInformation("Assembly '{0}' is discovered and loaded", assembly.FullName); @@ -141,10 +125,22 @@ private void GetAssembliesFromDependencyContext(List assemblies) catch (Exception e) { - this.logger.LogWarning("Error loading assembly '{0}'", compilationLibrary.Name); + this.logger.LogWarning("Error loading assembly '{0}'", extensionPath); this.logger.LogWarning(e.ToString()); } } + + if (includingSubpaths) + foreach (string subpath in Directory.GetDirectories(path)) + this.GetAssembliesFromPath(assemblies, subpath, includingSubpaths); + } + + else + { + if (string.IsNullOrEmpty(path)) + this.logger.LogWarning("Discovering and loading assemblies from path skipped: path not provided", path); + + else this.logger.LogWarning("Discovering and loading assemblies from path '{0}' skipped: path not found", path); } } } diff --git a/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj b/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj index df1de0b..45230b7 100644 --- a/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj +++ b/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj @@ -4,8 +4,8 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky Free, open source and cross-platform framework for creating modular and extendable web applications based on ASP.NET Core. - 4.1.0 - netstandard2.0 + 5.0.0-alpha1 + netcoreapp3.0 ExtCore.WebApplication ExtCore.WebApplication http://extcore.net/extcore_nuget_icon.png @@ -13,7 +13,7 @@ - + From edef8f84ee1753ffbe67e6d5ad6ef5e111ddcec2 Mon Sep 17 00:00:00 2001 From: Dmitry Sikorsky Date: Mon, 7 Oct 2019 23:16:20 +0300 Subject: [PATCH 54/81] Updated README --- README.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 596c2f4..33ab0b0 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# ExtCore 4.1.0 +# ExtCore 5.0.0-alpha1 [![Join the chat at https://gitter.im/ExtCore/ExtCore](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/ExtCore/ExtCore?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) @@ -7,14 +7,14 @@ ## Introduction ExtCore is free, open source and cross-platform framework for creating modular and extendable web applications -based on ASP.NET Core. It is built using the best and the most modern tools and languages (Visual Studio 2017, C# +based on ASP.NET Core. It is built using the best and the most modern tools and languages (Visual Studio 2019, C# etc). Join our team! ExtCore allows you to build your web applications from the different independent reusable modules or extensions. Each of these modules or extensions may consist of one or more ASP.NET Core projects and each of these projects may include everything you want as any other ASP.NET Core project. You don’t need to perform any additional actions to make it all work: any ASP.NET Core project can be used as an ExtCore-based web application extension -by default. Controllers, view components, views (added as resources and/or precompiled), static content (added as +by default. Controllers, view components, views (~~added as resources and/or~~ precompiled), static content (added as resources) are resolved automatically. These projects may be then added to the web application in two ways: as direct dependencies (as source code or NuGet packages) or by copying compiled DLLs to the Extensions folder. ExtCore supports both of these options out of the box and at the same time. @@ -72,8 +72,8 @@ Currently it supports MySQL, PostgreSql, SQLite, and SQL Server, but it is very #### ExtCore.Mvc By default, ExtCore web applications are not MVC ones. MVC support is provided for them by ExtCore.Mvc extension. -This extension initializes MVC, makes it possible to use controllers, view components, views (added as resources -and/or precompiled), static content (added as resources) from other extensions etc. +This extension initializes MVC, makes it possible to use controllers, view components, views (~~added as resources +and/or~~ precompiled), static content (added as resources) from other extensions etc. #### ExtCore.Events @@ -95,7 +95,7 @@ in order to execute some code inside the ConfigureServices and Configure methods Please take a look at our samples on GitHub: -* [Full-featured ExtCore 4.0.0 framework sample web application](https://github.com/ExtCore/ExtCore-Sample); +* [Full-featured ExtCore 5.0.0-alpha1 framework sample web application](https://github.com/ExtCore/ExtCore-Sample); * [ExtCore framework 4.0.0 sample simplest web application](https://github.com/ExtCore/ExtCore-Sample-Simplest); * [ExtCore framework 4.0.0 sample MVC web application](https://github.com/ExtCore/ExtCore-Sample-Mvc); * [ExtCore framework 4.0.0 sample web application that uses file storage](https://github.com/ExtCore/ExtCore-Sample-FileStorage); @@ -108,8 +108,8 @@ Please take a look at our samples on GitHub: * [ExtCore framework 4.0.0 sample web application that uses the events](https://github.com/ExtCore/ExtCore-Sample-Events); * [ExtCore framework 4.0.0 sample API web application](https://github.com/ExtCore/ExtCore-Sample-Api). -You can also download our [ready to use full-featured sample](http://extcore.net/files/ExtCore-Sample-4.0.0.zip). -It contains everything you need to run ExtCore-based web application from Visual Studio 2017, including SQLite +You can also download our [ready to use full-featured sample](http://extcore.net/files/ExtCore-Sample-5.0.0-alpha1.zip). +It contains everything you need to run ExtCore-based web application from Visual Studio 2019, including SQLite database with the test data. ### Tutorials From c5a6d3d89ba43e20e2cf9342eb20af9188952aef Mon Sep 17 00:00:00 2001 From: Dmitry Sikorsky Date: Sat, 16 Nov 2019 23:46:55 +0200 Subject: [PATCH 55/81] Changed version to 5.0.0 --- README.md | 30 +++++++++---------- .../ExtCore.Data.Abstractions.csproj | 2 +- .../ExtCore.Data.Dapper.MySql.csproj | 2 +- .../ExtCore.Data.Dapper.PostgreSql.csproj | 2 +- .../ExtCore.Data.Dapper.SqlServer.csproj | 2 +- .../ExtCore.Data.Dapper.Sqlite.csproj | 2 +- .../ExtCore.Data.Dapper.csproj | 2 +- src/ExtCore.Data.Dapper/Extension.cs | 2 +- .../ExtCore.Data.Entities.Abstractions.csproj | 2 +- .../ExtCore.Data.EntityFramework.MySql.csproj | 2 +- ...ore.Data.EntityFramework.PostgreSql.csproj | 2 +- ...Core.Data.EntityFramework.SqlServer.csproj | 2 +- ...ExtCore.Data.EntityFramework.Sqlite.csproj | 2 +- .../ExtCore.Data.EntityFramework.csproj | 2 +- src/ExtCore.Data.EntityFramework/Extension.cs | 2 +- src/ExtCore.Data/ExtCore.Data.csproj | 2 +- src/ExtCore.Data/Extension.cs | 2 +- src/ExtCore.Events/ExtCore.Events.csproj | 2 +- src/ExtCore.Events/Extension.cs | 2 +- .../ExtCore.FileStorage.Abstractions.csproj | 2 +- .../ExtCore.FileStorage.Dropbox.csproj | 2 +- .../ExtCore.FileStorage.FileSystem.csproj | 2 +- .../ExtCore.FileStorage.csproj | 2 +- src/ExtCore.FileStorage/Extension.cs | 2 +- .../ExtCore.Infrastructure.csproj | 2 +- .../ExtCore.Mvc.Infrastructure.csproj | 2 +- src/ExtCore.Mvc/Actions/UseEndpointsAction.cs | 2 +- src/ExtCore.Mvc/ExtCore.Mvc.csproj | 2 +- src/ExtCore.Mvc/Extension.cs | 2 +- .../ExtCore.WebApplication.csproj | 2 +- 30 files changed, 44 insertions(+), 44 deletions(-) diff --git a/README.md b/README.md index 33ab0b0..516d752 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# ExtCore 5.0.0-alpha1 +# ExtCore 5.0.0 [![Join the chat at https://gitter.im/ExtCore/ExtCore](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/ExtCore/ExtCore?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) @@ -95,20 +95,20 @@ in order to execute some code inside the ConfigureServices and Configure methods Please take a look at our samples on GitHub: -* [Full-featured ExtCore 5.0.0-alpha1 framework sample web application](https://github.com/ExtCore/ExtCore-Sample); -* [ExtCore framework 4.0.0 sample simplest web application](https://github.com/ExtCore/ExtCore-Sample-Simplest); -* [ExtCore framework 4.0.0 sample MVC web application](https://github.com/ExtCore/ExtCore-Sample-Mvc); -* [ExtCore framework 4.0.0 sample web application that uses file storage](https://github.com/ExtCore/ExtCore-Sample-FileStorage); -* [ExtCore framework 4.0.0 sample web application that uses a database](https://github.com/ExtCore/ExtCore-Sample-Data); -* [ExtCore framework 4.0.0 sample web application that uses Identity](https://github.com/ExtCore/ExtCore-Sample-Identity); -* [ExtCore framework 4.0.0 sample web application with modular UI](https://github.com/ExtCore/ExtCore-Sample-Modular-Ui); -* [ExtCore framework 4.0.0 advanced sample web application with modular UI](https://github.com/ExtCore/ExtCore-Sample-Modular-Ui-Adv); -* [ExtCore framework 4.0.0 advanced sample accounting web application](https://github.com/ExtCore/ExtCore-Sample-Accounting); -* [ExtCore framework 4.0.0 sample web application that registers a service inside the extension](https://github.com/ExtCore/ExtCore-Sample-Service); -* [ExtCore framework 4.0.0 sample web application that uses the events](https://github.com/ExtCore/ExtCore-Sample-Events); -* [ExtCore framework 4.0.0 sample API web application](https://github.com/ExtCore/ExtCore-Sample-Api). - -You can also download our [ready to use full-featured sample](http://extcore.net/files/ExtCore-Sample-5.0.0-alpha1.zip). +* [Full-featured ExtCore 5.0.0 framework sample web application](https://github.com/ExtCore/ExtCore-Sample); +* [ExtCore framework 5.0.0 sample simplest web application](https://github.com/ExtCore/ExtCore-Sample-Simplest); +* [ExtCore framework 5.0.0 sample MVC web application](https://github.com/ExtCore/ExtCore-Sample-Mvc); +* [ExtCore framework 5.0.0 sample web application that uses file storage](https://github.com/ExtCore/ExtCore-Sample-FileStorage); +* [ExtCore framework 5.0.0 sample web application that uses a database](https://github.com/ExtCore/ExtCore-Sample-Data); +* [ExtCore framework 5.0.0 sample web application that uses Identity](https://github.com/ExtCore/ExtCore-Sample-Identity); +* [ExtCore framework 5.0.0 sample web application with modular UI](https://github.com/ExtCore/ExtCore-Sample-Modular-Ui); +* [ExtCore framework 5.0.0 advanced sample web application with modular UI](https://github.com/ExtCore/ExtCore-Sample-Modular-Ui-Adv); +* [ExtCore framework 5.0.0 advanced sample accounting web application](https://github.com/ExtCore/ExtCore-Sample-Accounting); +* [ExtCore framework 5.0.0 sample web application that registers a service inside the extension](https://github.com/ExtCore/ExtCore-Sample-Service); +* [ExtCore framework 5.0.0 sample web application that uses the events](https://github.com/ExtCore/ExtCore-Sample-Events); +* [ExtCore framework 5.0.0 sample API web application](https://github.com/ExtCore/ExtCore-Sample-Api). + +You can also download our [ready to use full-featured sample](http://extcore.net/files/ExtCore-Sample-5.0.0.zip). It contains everything you need to run ExtCore-based web application from Visual Studio 2019, including SQLite database with the test data. diff --git a/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj b/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj index b11ef0a..528e742 100644 --- a/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj +++ b/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data extension component. Based on the ExtCore framework. - 5.0.0-alpha1 + 5.0.0 netstandard2.0 ExtCore.Data.Abstractions ExtCore.Data.Abstractions diff --git a/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj b/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj index f7e6e22..0ec3c51 100644 --- a/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj +++ b/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 5.0.0-alpha1 + 5.0.0 netcoreapp3.0 ExtCore.Data.Dapper.MySql ExtCore.Data.Dapper.MySql diff --git a/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj b/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj index d651cd4..60136ce 100644 --- a/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj +++ b/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 5.0.0-alpha1 + 5.0.0 netcoreapp3.0 ExtCore.Data.Dapper.PostgreSql ExtCore.Data.Dapper.PostgreSql diff --git a/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj b/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj index c3d572f..05b452b 100644 --- a/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj +++ b/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 5.0.0-alpha1 + 5.0.0 netcoreapp3.0 ExtCore.Data.Dapper.SqlServer ExtCore.Data.Dapper.SqlServer diff --git a/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj b/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj index 47b64d0..8f13f95 100644 --- a/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj +++ b/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 5.0.0-alpha1 + 5.0.0 netcoreapp3.0 ExtCore.Data.Dapper.Sqlite ExtCore.Data.Dapper.Sqlite diff --git a/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj b/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj index 97a5e87..aed03c9 100644 --- a/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj +++ b/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 5.0.0-alpha1 + 5.0.0 netcoreapp3.0 ExtCore.Data.Dapper ExtCore.Data.Dapper diff --git a/src/ExtCore.Data.Dapper/Extension.cs b/src/ExtCore.Data.Dapper/Extension.cs index d1c63e4..4997b00 100644 --- a/src/ExtCore.Data.Dapper/Extension.cs +++ b/src/ExtCore.Data.Dapper/Extension.cs @@ -24,7 +24,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "5.0.0-alpha1"; + public override string Version => "5.0.0"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj b/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj index e267fe9..3b2368a 100644 --- a/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj +++ b/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data extension component. Based on the ExtCore framework. - 5.0.0-alpha1 + 5.0.0 netstandard2.0 ExtCore.Data.Entities.Abstractions ExtCore.Data.Entities.Abstractions diff --git a/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj b/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj index 4255a00..4488fa5 100644 --- a/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj +++ b/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 5.0.0-alpha1 + 5.0.0 netcoreapp3.0 ExtCore.Data.EntityFramework.MySql ExtCore.Data.EntityFramework.MySql diff --git a/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj b/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj index fb0feea..90ddccd 100644 --- a/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj +++ b/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 5.0.0-alpha1 + 5.0.0 netcoreapp3.0 ExtCore.Data.EntityFramework.PostgreSql ExtCore.Data.EntityFramework.PostgreSql diff --git a/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj b/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj index eea1ea6..4cb3d88 100644 --- a/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj +++ b/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 5.0.0-alpha1 + 5.0.0 netcoreapp3.0 ExtCore.Data.EntityFramework.SqlServer ExtCore.Data.EntityFramework.SqlServer diff --git a/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj b/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj index 9e55877..f75b486 100644 --- a/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj +++ b/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 5.0.0-alpha1 + 5.0.0 netcoreapp3.0 ExtCore.Data.EntityFramework.Sqlite ExtCore.Data.EntityFramework.Sqlite diff --git a/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj b/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj index b49e68c..29b7a7f 100644 --- a/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj +++ b/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 5.0.0-alpha1 + 5.0.0 netcoreapp3.0 ExtCore.Data.EntityFramework ExtCore.Data.EntityFramework diff --git a/src/ExtCore.Data.EntityFramework/Extension.cs b/src/ExtCore.Data.EntityFramework/Extension.cs index 3929303..75f93f1 100644 --- a/src/ExtCore.Data.EntityFramework/Extension.cs +++ b/src/ExtCore.Data.EntityFramework/Extension.cs @@ -24,7 +24,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "5.0.0-alpha1"; + public override string Version => "5.0.0"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Data/ExtCore.Data.csproj b/src/ExtCore.Data/ExtCore.Data.csproj index 01a87c7..4cdbbee 100644 --- a/src/ExtCore.Data/ExtCore.Data.csproj +++ b/src/ExtCore.Data/ExtCore.Data.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data extension component. Based on the ExtCore framework. - 5.0.0-alpha1 + 5.0.0 netcoreapp3.0 ExtCore.Data ExtCore.Data diff --git a/src/ExtCore.Data/Extension.cs b/src/ExtCore.Data/Extension.cs index 41c5c47..345c216 100644 --- a/src/ExtCore.Data/Extension.cs +++ b/src/ExtCore.Data/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "5.0.0-alpha1"; + public override string Version => "5.0.0"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Events/ExtCore.Events.csproj b/src/ExtCore.Events/ExtCore.Events.csproj index c0291c3..c96a57b 100644 --- a/src/ExtCore.Events/ExtCore.Events.csproj +++ b/src/ExtCore.Events/ExtCore.Events.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Events extension component. Based on the ExtCore framework. - 5.0.0-alpha1 + 5.0.0 netcoreapp3.0 ExtCore.Events ExtCore.Events diff --git a/src/ExtCore.Events/Extension.cs b/src/ExtCore.Events/Extension.cs index d41b4f1..a39db1a 100644 --- a/src/ExtCore.Events/Extension.cs +++ b/src/ExtCore.Events/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "5.0.0-alpha1"; + public override string Version => "5.0.0"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.FileStorage.Abstractions/ExtCore.FileStorage.Abstractions.csproj b/src/ExtCore.FileStorage.Abstractions/ExtCore.FileStorage.Abstractions.csproj index 24dea55..84d3b79 100644 --- a/src/ExtCore.FileStorage.Abstractions/ExtCore.FileStorage.Abstractions.csproj +++ b/src/ExtCore.FileStorage.Abstractions/ExtCore.FileStorage.Abstractions.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2018 Dmitry Sikorsky The ExtCore.FileStorage extension component. Based on the ExtCore framework. - 5.0.0-alpha1 + 5.0.0 netstandard2.0 ExtCore.FileStorage.Abstractions ExtCore.FileStorage.Abstractions diff --git a/src/ExtCore.FileStorage.Dropbox/ExtCore.FileStorage.Dropbox.csproj b/src/ExtCore.FileStorage.Dropbox/ExtCore.FileStorage.Dropbox.csproj index 7d9fa82..485fd1c 100644 --- a/src/ExtCore.FileStorage.Dropbox/ExtCore.FileStorage.Dropbox.csproj +++ b/src/ExtCore.FileStorage.Dropbox/ExtCore.FileStorage.Dropbox.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2018 Dmitry Sikorsky The ExtCore.FileStorage extension component. Based on the ExtCore framework. - 5.0.0-alpha1 + 5.0.0 netstandard2.0 ExtCore.FileStorage.Dropbox ExtCore.FileStorage.Dropbox diff --git a/src/ExtCore.FileStorage.FileSystem/ExtCore.FileStorage.FileSystem.csproj b/src/ExtCore.FileStorage.FileSystem/ExtCore.FileStorage.FileSystem.csproj index 01c6959..14ea769 100644 --- a/src/ExtCore.FileStorage.FileSystem/ExtCore.FileStorage.FileSystem.csproj +++ b/src/ExtCore.FileStorage.FileSystem/ExtCore.FileStorage.FileSystem.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2018 Dmitry Sikorsky The ExtCore.FileStorage extension component. Based on the ExtCore framework. - 5.0.0-alpha1 + 5.0.0 netstandard2.0 ExtCore.FileStorage.FileSystem ExtCore.FileStorage.FileSystem diff --git a/src/ExtCore.FileStorage/ExtCore.FileStorage.csproj b/src/ExtCore.FileStorage/ExtCore.FileStorage.csproj index 7fe1ac7..7742204 100644 --- a/src/ExtCore.FileStorage/ExtCore.FileStorage.csproj +++ b/src/ExtCore.FileStorage/ExtCore.FileStorage.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2018 Dmitry Sikorsky The ExtCore.FileStorage extension component. Based on the ExtCore framework. - 5.0.0-alpha1 + 5.0.0 netcoreapp3.0 ExtCore.FileStorage ExtCore.FileStorage diff --git a/src/ExtCore.FileStorage/Extension.cs b/src/ExtCore.FileStorage/Extension.cs index 1d62ef6..c31bda5 100644 --- a/src/ExtCore.FileStorage/Extension.cs +++ b/src/ExtCore.FileStorage/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "5.0.0-alpha1"; + public override string Version => "5.0.0"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj b/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj index 8da7d2e..550f344 100644 --- a/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj +++ b/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky Free, open source and cross-platform framework for creating modular and extendable web applications based on ASP.NET Core. - 5.0.0-alpha1 + 5.0.0 netcoreapp3.0 ExtCore.Infrastructure ExtCore.Infrastructure diff --git a/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj b/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj index fdfb502..9958208 100644 --- a/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj +++ b/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Mvc extension component. Based on the ExtCore framework. - 5.0.0-alpha1 + 5.0.0 netcoreapp3.0 ExtCore.Mvc.Infrastructure ExtCore.Mvc.Infrastructure diff --git a/src/ExtCore.Mvc/Actions/UseEndpointsAction.cs b/src/ExtCore.Mvc/Actions/UseEndpointsAction.cs index 88f8d02..4b0d176 100644 --- a/src/ExtCore.Mvc/Actions/UseEndpointsAction.cs +++ b/src/ExtCore.Mvc/Actions/UseEndpointsAction.cs @@ -21,7 +21,7 @@ public class UseEndpointsAction : IConfigureAction /// /// Priority of the action. The actions will be executed in the order specified by the priority (from smallest to largest). /// - public int Priority => 10001; + public int Priority => 11000; /// /// Registers the endpoints middleware inside a web application's request pipeline. diff --git a/src/ExtCore.Mvc/ExtCore.Mvc.csproj b/src/ExtCore.Mvc/ExtCore.Mvc.csproj index 1b07a41..0f22f66 100644 --- a/src/ExtCore.Mvc/ExtCore.Mvc.csproj +++ b/src/ExtCore.Mvc/ExtCore.Mvc.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Mvc extension component. Based on the ExtCore framework. - 5.0.0-alpha1 + 5.0.0 netcoreapp3.0 ExtCore.Mvc ExtCore.Mvc diff --git a/src/ExtCore.Mvc/Extension.cs b/src/ExtCore.Mvc/Extension.cs index 12f9a5a..11d6974 100644 --- a/src/ExtCore.Mvc/Extension.cs +++ b/src/ExtCore.Mvc/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "5.0.0-alpha1"; + public override string Version => "5.0.0"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj b/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj index 45230b7..83b4258 100644 --- a/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj +++ b/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky Free, open source and cross-platform framework for creating modular and extendable web applications based on ASP.NET Core. - 5.0.0-alpha1 + 5.0.0 netcoreapp3.0 ExtCore.WebApplication ExtCore.WebApplication From 1ee559405be65a33b8a21956615aea9bedae24fe Mon Sep 17 00:00:00 2001 From: Dmitry Sikorsky Date: Tue, 24 Dec 2019 11:34:17 +0200 Subject: [PATCH 56/81] Updated to use .NET Core 3.1 --- README.md | 2 +- .../ExtCore.Data.Abstractions.csproj | 2 +- .../ExtCore.Data.Dapper.MySql.csproj | 4 ++-- .../ExtCore.Data.Dapper.PostgreSql.csproj | 4 ++-- .../ExtCore.Data.Dapper.SqlServer.csproj | 4 ++-- .../ExtCore.Data.Dapper.Sqlite.csproj | 4 ++-- src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj | 4 ++-- src/ExtCore.Data.Dapper/Extension.cs | 2 +- .../ExtCore.Data.Entities.Abstractions.csproj | 2 +- .../ExtCore.Data.EntityFramework.MySql.csproj | 4 ++-- .../ExtCore.Data.EntityFramework.PostgreSql.csproj | 4 ++-- .../ExtCore.Data.EntityFramework.SqlServer.csproj | 4 ++-- .../ExtCore.Data.EntityFramework.Sqlite.csproj | 4 ++-- .../ExtCore.Data.EntityFramework.csproj | 4 ++-- src/ExtCore.Data.EntityFramework/Extension.cs | 2 +- src/ExtCore.Data/ExtCore.Data.csproj | 4 ++-- src/ExtCore.Data/Extension.cs | 2 +- src/ExtCore.Events/ExtCore.Events.csproj | 4 ++-- src/ExtCore.Events/Extension.cs | 2 +- .../ExtCore.FileStorage.Abstractions.csproj | 2 +- .../ExtCore.FileStorage.Dropbox.csproj | 2 +- .../ExtCore.FileStorage.FileSystem.csproj | 2 +- src/ExtCore.FileStorage/ExtCore.FileStorage.csproj | 4 ++-- src/ExtCore.FileStorage/Extension.cs | 2 +- src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj | 4 ++-- .../ExtCore.Mvc.Infrastructure.csproj | 4 ++-- src/ExtCore.Mvc/ExtCore.Mvc.csproj | 4 ++-- src/ExtCore.Mvc/Extension.cs | 2 +- src/ExtCore.WebApplication/ExtCore.WebApplication.csproj | 4 ++-- 29 files changed, 46 insertions(+), 46 deletions(-) diff --git a/README.md b/README.md index 516d752..0b8dcb9 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# ExtCore 5.0.0 +# ExtCore 5.1.0 [![Join the chat at https://gitter.im/ExtCore/ExtCore](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/ExtCore/ExtCore?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) diff --git a/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj b/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj index 528e742..d57d473 100644 --- a/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj +++ b/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data extension component. Based on the ExtCore framework. - 5.0.0 + 5.1.0 netstandard2.0 ExtCore.Data.Abstractions ExtCore.Data.Abstractions diff --git a/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj b/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj index 0ec3c51..bc5d1f6 100644 --- a/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj +++ b/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj @@ -4,8 +4,8 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 5.0.0 - netcoreapp3.0 + 5.1.0 + netcoreapp3.1 ExtCore.Data.Dapper.MySql ExtCore.Data.Dapper.MySql http://extcore.net/extcore_nuget_icon.png diff --git a/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj b/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj index 60136ce..f508673 100644 --- a/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj +++ b/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj @@ -4,8 +4,8 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 5.0.0 - netcoreapp3.0 + 5.1.0 + netcoreapp3.1 ExtCore.Data.Dapper.PostgreSql ExtCore.Data.Dapper.PostgreSql http://extcore.net/extcore_nuget_icon.png diff --git a/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj b/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj index 05b452b..884f5d2 100644 --- a/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj +++ b/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj @@ -4,8 +4,8 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 5.0.0 - netcoreapp3.0 + 5.1.0 + netcoreapp3.1 ExtCore.Data.Dapper.SqlServer ExtCore.Data.Dapper.SqlServer http://extcore.net/extcore_nuget_icon.png diff --git a/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj b/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj index 8f13f95..c62fd29 100644 --- a/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj +++ b/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj @@ -4,8 +4,8 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 5.0.0 - netcoreapp3.0 + 5.1.0 + netcoreapp3.1 ExtCore.Data.Dapper.Sqlite ExtCore.Data.Dapper.Sqlite http://extcore.net/extcore_nuget_icon.png diff --git a/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj b/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj index aed03c9..9488788 100644 --- a/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj +++ b/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj @@ -4,8 +4,8 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 5.0.0 - netcoreapp3.0 + 5.1.0 + netcoreapp3.1 ExtCore.Data.Dapper ExtCore.Data.Dapper http://extcore.net/extcore_nuget_icon.png diff --git a/src/ExtCore.Data.Dapper/Extension.cs b/src/ExtCore.Data.Dapper/Extension.cs index 4997b00..f2e4a5f 100644 --- a/src/ExtCore.Data.Dapper/Extension.cs +++ b/src/ExtCore.Data.Dapper/Extension.cs @@ -24,7 +24,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "5.0.0"; + public override string Version => "5.1.0"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj b/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj index 3b2368a..d146789 100644 --- a/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj +++ b/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data extension component. Based on the ExtCore framework. - 5.0.0 + 5.1.0 netstandard2.0 ExtCore.Data.Entities.Abstractions ExtCore.Data.Entities.Abstractions diff --git a/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj b/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj index 4488fa5..61d168f 100644 --- a/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj +++ b/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj @@ -4,8 +4,8 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 5.0.0 - netcoreapp3.0 + 5.1.0 + netcoreapp3.1 ExtCore.Data.EntityFramework.MySql ExtCore.Data.EntityFramework.MySql http://extcore.net/extcore_nuget_icon.png diff --git a/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj b/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj index 90ddccd..5969ba6 100644 --- a/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj +++ b/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj @@ -4,8 +4,8 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 5.0.0 - netcoreapp3.0 + 5.1.0 + netcoreapp3.1 ExtCore.Data.EntityFramework.PostgreSql ExtCore.Data.EntityFramework.PostgreSql http://extcore.net/extcore_nuget_icon.png diff --git a/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj b/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj index 4cb3d88..001de8f 100644 --- a/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj +++ b/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj @@ -4,8 +4,8 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 5.0.0 - netcoreapp3.0 + 5.1.0 + netcoreapp3.1 ExtCore.Data.EntityFramework.SqlServer ExtCore.Data.EntityFramework.SqlServer http://extcore.net/extcore_nuget_icon.png diff --git a/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj b/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj index f75b486..f49821b 100644 --- a/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj +++ b/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj @@ -4,8 +4,8 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 5.0.0 - netcoreapp3.0 + 5.1.0 + netcoreapp3.1 ExtCore.Data.EntityFramework.Sqlite ExtCore.Data.EntityFramework.Sqlite http://extcore.net/extcore_nuget_icon.png diff --git a/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj b/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj index 29b7a7f..6b48ad2 100644 --- a/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj +++ b/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj @@ -4,8 +4,8 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 5.0.0 - netcoreapp3.0 + 5.1.0 + netcoreapp3.1 ExtCore.Data.EntityFramework ExtCore.Data.EntityFramework http://extcore.net/extcore_nuget_icon.png diff --git a/src/ExtCore.Data.EntityFramework/Extension.cs b/src/ExtCore.Data.EntityFramework/Extension.cs index 75f93f1..a00ab0c 100644 --- a/src/ExtCore.Data.EntityFramework/Extension.cs +++ b/src/ExtCore.Data.EntityFramework/Extension.cs @@ -24,7 +24,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "5.0.0"; + public override string Version => "5.1.0"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Data/ExtCore.Data.csproj b/src/ExtCore.Data/ExtCore.Data.csproj index 4cdbbee..6a889df 100644 --- a/src/ExtCore.Data/ExtCore.Data.csproj +++ b/src/ExtCore.Data/ExtCore.Data.csproj @@ -4,8 +4,8 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data extension component. Based on the ExtCore framework. - 5.0.0 - netcoreapp3.0 + 5.1.0 + netcoreapp3.1 ExtCore.Data ExtCore.Data http://extcore.net/extcore_nuget_icon.png diff --git a/src/ExtCore.Data/Extension.cs b/src/ExtCore.Data/Extension.cs index 345c216..40d5744 100644 --- a/src/ExtCore.Data/Extension.cs +++ b/src/ExtCore.Data/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "5.0.0"; + public override string Version => "5.1.0"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Events/ExtCore.Events.csproj b/src/ExtCore.Events/ExtCore.Events.csproj index c96a57b..0ba181b 100644 --- a/src/ExtCore.Events/ExtCore.Events.csproj +++ b/src/ExtCore.Events/ExtCore.Events.csproj @@ -4,8 +4,8 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Events extension component. Based on the ExtCore framework. - 5.0.0 - netcoreapp3.0 + 5.1.0 + netcoreapp3.1 ExtCore.Events ExtCore.Events http://extcore.net/extcore_nuget_icon.png diff --git a/src/ExtCore.Events/Extension.cs b/src/ExtCore.Events/Extension.cs index a39db1a..f6893b6 100644 --- a/src/ExtCore.Events/Extension.cs +++ b/src/ExtCore.Events/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "5.0.0"; + public override string Version => "5.1.0"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.FileStorage.Abstractions/ExtCore.FileStorage.Abstractions.csproj b/src/ExtCore.FileStorage.Abstractions/ExtCore.FileStorage.Abstractions.csproj index 84d3b79..08a7572 100644 --- a/src/ExtCore.FileStorage.Abstractions/ExtCore.FileStorage.Abstractions.csproj +++ b/src/ExtCore.FileStorage.Abstractions/ExtCore.FileStorage.Abstractions.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2018 Dmitry Sikorsky The ExtCore.FileStorage extension component. Based on the ExtCore framework. - 5.0.0 + 5.1.0 netstandard2.0 ExtCore.FileStorage.Abstractions ExtCore.FileStorage.Abstractions diff --git a/src/ExtCore.FileStorage.Dropbox/ExtCore.FileStorage.Dropbox.csproj b/src/ExtCore.FileStorage.Dropbox/ExtCore.FileStorage.Dropbox.csproj index 485fd1c..34c62d1 100644 --- a/src/ExtCore.FileStorage.Dropbox/ExtCore.FileStorage.Dropbox.csproj +++ b/src/ExtCore.FileStorage.Dropbox/ExtCore.FileStorage.Dropbox.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2018 Dmitry Sikorsky The ExtCore.FileStorage extension component. Based on the ExtCore framework. - 5.0.0 + 5.1.0 netstandard2.0 ExtCore.FileStorage.Dropbox ExtCore.FileStorage.Dropbox diff --git a/src/ExtCore.FileStorage.FileSystem/ExtCore.FileStorage.FileSystem.csproj b/src/ExtCore.FileStorage.FileSystem/ExtCore.FileStorage.FileSystem.csproj index 14ea769..34840e6 100644 --- a/src/ExtCore.FileStorage.FileSystem/ExtCore.FileStorage.FileSystem.csproj +++ b/src/ExtCore.FileStorage.FileSystem/ExtCore.FileStorage.FileSystem.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2018 Dmitry Sikorsky The ExtCore.FileStorage extension component. Based on the ExtCore framework. - 5.0.0 + 5.1.0 netstandard2.0 ExtCore.FileStorage.FileSystem ExtCore.FileStorage.FileSystem diff --git a/src/ExtCore.FileStorage/ExtCore.FileStorage.csproj b/src/ExtCore.FileStorage/ExtCore.FileStorage.csproj index 7742204..1621d59 100644 --- a/src/ExtCore.FileStorage/ExtCore.FileStorage.csproj +++ b/src/ExtCore.FileStorage/ExtCore.FileStorage.csproj @@ -4,8 +4,8 @@ Dmitry Sikorsky Copyright © 2018 Dmitry Sikorsky The ExtCore.FileStorage extension component. Based on the ExtCore framework. - 5.0.0 - netcoreapp3.0 + 5.1.0 + netcoreapp3.1 ExtCore.FileStorage ExtCore.FileStorage http://extcore.net/extcore_nuget_icon.png diff --git a/src/ExtCore.FileStorage/Extension.cs b/src/ExtCore.FileStorage/Extension.cs index c31bda5..d6fbb45 100644 --- a/src/ExtCore.FileStorage/Extension.cs +++ b/src/ExtCore.FileStorage/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "5.0.0"; + public override string Version => "5.1.0"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj b/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj index 550f344..0e1e0b9 100644 --- a/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj +++ b/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj @@ -4,8 +4,8 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky Free, open source and cross-platform framework for creating modular and extendable web applications based on ASP.NET Core. - 5.0.0 - netcoreapp3.0 + 5.1.0 + netcoreapp3.1 ExtCore.Infrastructure ExtCore.Infrastructure http://extcore.net/extcore_nuget_icon.png diff --git a/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj b/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj index 9958208..ebf8301 100644 --- a/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj +++ b/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj @@ -4,8 +4,8 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Mvc extension component. Based on the ExtCore framework. - 5.0.0 - netcoreapp3.0 + 5.1.0 + netcoreapp3.1 ExtCore.Mvc.Infrastructure ExtCore.Mvc.Infrastructure http://extcore.net/extcore_nuget_icon.png diff --git a/src/ExtCore.Mvc/ExtCore.Mvc.csproj b/src/ExtCore.Mvc/ExtCore.Mvc.csproj index 0f22f66..28bffc0 100644 --- a/src/ExtCore.Mvc/ExtCore.Mvc.csproj +++ b/src/ExtCore.Mvc/ExtCore.Mvc.csproj @@ -4,8 +4,8 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Mvc extension component. Based on the ExtCore framework. - 5.0.0 - netcoreapp3.0 + 5.1.0 + netcoreapp3.1 ExtCore.Mvc ExtCore.Mvc http://extcore.net/extcore_nuget_icon.png diff --git a/src/ExtCore.Mvc/Extension.cs b/src/ExtCore.Mvc/Extension.cs index 11d6974..25915de 100644 --- a/src/ExtCore.Mvc/Extension.cs +++ b/src/ExtCore.Mvc/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "5.0.0"; + public override string Version => "5.1.0"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj b/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj index 83b4258..75a6d2d 100644 --- a/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj +++ b/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj @@ -4,8 +4,8 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky Free, open source and cross-platform framework for creating modular and extendable web applications based on ASP.NET Core. - 5.0.0 - netcoreapp3.0 + 5.1.0 + netcoreapp3.1 ExtCore.WebApplication ExtCore.WebApplication http://extcore.net/extcore_nuget_icon.png From 3f24a5fdd1d07d6aea8d7aae65eac6505ca7f23e Mon Sep 17 00:00:00 2001 From: Dmitry Sikorsky Date: Sun, 22 Nov 2020 13:54:28 +0200 Subject: [PATCH 57/81] Updated to use .NET 5.0 --- ExtCore.sln | 14 ++------------ README.md | 2 +- .../ExtCore.Data.Abstractions.csproj | 2 +- .../ExtCore.Data.Dapper.MySql.csproj | 6 +++--- .../ExtCore.Data.Dapper.PostgreSql.csproj | 6 +++--- .../ExtCore.Data.Dapper.SqlServer.csproj | 4 ++-- .../ExtCore.Data.Dapper.Sqlite.csproj | 6 +++--- src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj | 6 +++--- src/ExtCore.Data.Dapper/Extension.cs | 2 +- .../ExtCore.Data.Entities.Abstractions.csproj | 2 +- .../ExtCore.Data.EntityFramework.MySql.csproj | 6 +++--- .../ExtCore.Data.EntityFramework.PostgreSql.csproj | 6 +++--- .../ExtCore.Data.EntityFramework.SqlServer.csproj | 6 +++--- .../ExtCore.Data.EntityFramework.Sqlite.csproj | 6 +++--- .../ExtCore.Data.EntityFramework.csproj | 6 +++--- src/ExtCore.Data.EntityFramework/Extension.cs | 2 +- src/ExtCore.Data/ExtCore.Data.csproj | 4 ++-- src/ExtCore.Data/Extension.cs | 2 +- src/ExtCore.Events/ExtCore.Events.csproj | 4 ++-- src/ExtCore.Events/Extension.cs | 2 +- .../ExtCore.FileStorage.Abstractions.csproj | 2 +- .../ExtCore.FileStorage.Dropbox.csproj | 6 +++--- .../ExtCore.FileStorage.FileSystem.csproj | 4 ++-- src/ExtCore.FileStorage/ExtCore.FileStorage.csproj | 4 ++-- src/ExtCore.FileStorage/Extension.cs | 2 +- .../ExtCore.Infrastructure.csproj | 4 ++-- .../ExtCore.Mvc.Infrastructure.csproj | 4 ++-- src/ExtCore.Mvc/ExtCore.Mvc.csproj | 6 +++--- src/ExtCore.Mvc/Extension.cs | 2 +- .../ExtCore.WebApplication.csproj | 6 +++--- 30 files changed, 62 insertions(+), 72 deletions(-) diff --git a/ExtCore.sln b/ExtCore.sln index a5744f8..8c58d70 100644 --- a/ExtCore.sln +++ b/ExtCore.sln @@ -1,10 +1,8 @@  Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 15 -VisualStudioVersion = 15.0.27703.2026 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.30711.63 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{0D7AEFA3-ABB0-4AF1-A4C1-F8E05C241753}" -EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ExtCore.Infrastructure", "src\ExtCore.Infrastructure\ExtCore.Infrastructure.csproj", "{1A7B4E8E-9D6D-4DD2-862D-92A6BDDBC2C8}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ExtCore.WebApplication", "src\ExtCore.WebApplication\ExtCore.WebApplication.csproj", "{0F8F961C-2A13-47A2-9EFE-245FBA7A1C89}" @@ -160,8 +158,6 @@ Global HideSolutionNode = FALSE EndGlobalSection GlobalSection(NestedProjects) = preSolution - {1A7B4E8E-9D6D-4DD2-862D-92A6BDDBC2C8} = {0D7AEFA3-ABB0-4AF1-A4C1-F8E05C241753} - {0F8F961C-2A13-47A2-9EFE-245FBA7A1C89} = {0D7AEFA3-ABB0-4AF1-A4C1-F8E05C241753} {E68DD4A8-1B91-4444-BD2F-4FDDBC69DEF1} = {7EB40884-B578-412E-951F-356BC69088C2} {64AAD007-11ED-4C0C-93D1-FBE2BEA81493} = {7EB40884-B578-412E-951F-356BC69088C2} {BD3ADB01-9621-4A50-9D0E-8D4CC88A79D8} = {DD95EC14-4783-4E08-A5EC-6C110DC7FB01} @@ -169,21 +165,15 @@ Global {A5B17E64-9C8B-40EB-A4FD-637BB1E1BD05} = {A770A286-2B75-4BF7-8300-24CEC8D072AD} {0C0A69C5-1036-4925-8063-C8E7F6999287} = {A770A286-2B75-4BF7-8300-24CEC8D072AD} {4B05A3AC-DCDF-454F-A105-C8DFDBFA5EE1} = {A770A286-2B75-4BF7-8300-24CEC8D072AD} - {7EB40884-B578-412E-951F-356BC69088C2} = {0D7AEFA3-ABB0-4AF1-A4C1-F8E05C241753} - {DD95EC14-4783-4E08-A5EC-6C110DC7FB01} = {0D7AEFA3-ABB0-4AF1-A4C1-F8E05C241753} - {B0915CA5-EB7A-428E-8A6E-344CB8CE5368} = {0D7AEFA3-ABB0-4AF1-A4C1-F8E05C241753} {3E5C83A3-2C66-4503-A3F8-542854D3D2EF} = {B0915CA5-EB7A-428E-8A6E-344CB8CE5368} {77F8B77C-440C-48D9-80FA-192FF49283C8} = {A770A286-2B75-4BF7-8300-24CEC8D072AD} {A97967FC-B333-4C27-BAFE-4369C7695688} = {DD95EC14-4783-4E08-A5EC-6C110DC7FB01} - {A770A286-2B75-4BF7-8300-24CEC8D072AD} = {0D7AEFA3-ABB0-4AF1-A4C1-F8E05C241753} {79A8C5FE-94FA-4D60-86C7-016EBF0386B4} = {A770A286-2B75-4BF7-8300-24CEC8D072AD} {976AD81D-4F7D-4A0C-9A2F-F665566EA5A9} = {8C720480-750C-44C1-945B-961599088853} {F27A3AE9-718C-4539-B541-4F37D16E4463} = {8C720480-750C-44C1-945B-961599088853} {7B7A5A6C-DB45-4056-B5C7-4286D16220DE} = {8C720480-750C-44C1-945B-961599088853} {E588921B-5E74-45E8-841B-2654D2416D9F} = {8C720480-750C-44C1-945B-961599088853} {693AB050-3305-471C-90C3-816BD694A930} = {8C720480-750C-44C1-945B-961599088853} - {8C720480-750C-44C1-945B-961599088853} = {0D7AEFA3-ABB0-4AF1-A4C1-F8E05C241753} - {2093A913-AB5F-4597-839E-A472E25D37D8} = {0D7AEFA3-ABB0-4AF1-A4C1-F8E05C241753} {AD4DB805-D932-4C5F-9559-B4704340F8CA} = {2093A913-AB5F-4597-839E-A472E25D37D8} {EED241F9-4900-4FB0-91FD-432A5F40983D} = {2093A913-AB5F-4597-839E-A472E25D37D8} {D9FA3F92-D638-434D-9C0C-E74A6BCFDE7A} = {2093A913-AB5F-4597-839E-A472E25D37D8} diff --git a/README.md b/README.md index 0b8dcb9..1f485d1 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# ExtCore 5.1.0 +# ExtCore 6.0.0-beta1 [![Join the chat at https://gitter.im/ExtCore/ExtCore](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/ExtCore/ExtCore?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) diff --git a/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj b/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj index d57d473..5d3addb 100644 --- a/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj +++ b/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data extension component. Based on the ExtCore framework. - 5.1.0 + 6.0.0-beta1 netstandard2.0 ExtCore.Data.Abstractions ExtCore.Data.Abstractions diff --git a/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj b/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj index bc5d1f6..4a9f6c0 100644 --- a/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj +++ b/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj @@ -4,8 +4,8 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 5.1.0 - netcoreapp3.1 + 6.0.0-beta1 + net5.0 ExtCore.Data.Dapper.MySql ExtCore.Data.Dapper.MySql http://extcore.net/extcore_nuget_icon.png @@ -13,7 +13,7 @@ - + diff --git a/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj b/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj index f508673..dc0dd4e 100644 --- a/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj +++ b/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj @@ -4,8 +4,8 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 5.1.0 - netcoreapp3.1 + 6.0.0-beta1 + net5.0 ExtCore.Data.Dapper.PostgreSql ExtCore.Data.Dapper.PostgreSql http://extcore.net/extcore_nuget_icon.png @@ -13,7 +13,7 @@ - + diff --git a/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj b/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj index 884f5d2..d656610 100644 --- a/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj +++ b/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj @@ -4,8 +4,8 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 5.1.0 - netcoreapp3.1 + 6.0.0-beta1 + net5.0 ExtCore.Data.Dapper.SqlServer ExtCore.Data.Dapper.SqlServer http://extcore.net/extcore_nuget_icon.png diff --git a/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj b/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj index c62fd29..6aa18c7 100644 --- a/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj +++ b/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj @@ -4,8 +4,8 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 5.1.0 - netcoreapp3.1 + 6.0.0-beta1 + net5.0 ExtCore.Data.Dapper.Sqlite ExtCore.Data.Dapper.Sqlite http://extcore.net/extcore_nuget_icon.png @@ -13,7 +13,7 @@ - + diff --git a/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj b/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj index 9488788..fc44f93 100644 --- a/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj +++ b/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj @@ -4,8 +4,8 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 5.1.0 - netcoreapp3.1 + 6.0.0-beta1 + net5.0 ExtCore.Data.Dapper ExtCore.Data.Dapper http://extcore.net/extcore_nuget_icon.png @@ -13,7 +13,7 @@ - + diff --git a/src/ExtCore.Data.Dapper/Extension.cs b/src/ExtCore.Data.Dapper/Extension.cs index f2e4a5f..b5f0909 100644 --- a/src/ExtCore.Data.Dapper/Extension.cs +++ b/src/ExtCore.Data.Dapper/Extension.cs @@ -24,7 +24,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "5.1.0"; + public override string Version => "6.0.0-beta1"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj b/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj index d146789..9aa51f8 100644 --- a/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj +++ b/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data extension component. Based on the ExtCore framework. - 5.1.0 + 6.0.0-beta1 netstandard2.0 ExtCore.Data.Entities.Abstractions ExtCore.Data.Entities.Abstractions diff --git a/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj b/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj index 61d168f..529d297 100644 --- a/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj +++ b/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj @@ -4,8 +4,8 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 5.1.0 - netcoreapp3.1 + 6.0.0-beta1 + net5.0 ExtCore.Data.EntityFramework.MySql ExtCore.Data.EntityFramework.MySql http://extcore.net/extcore_nuget_icon.png @@ -13,7 +13,7 @@ - + diff --git a/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj b/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj index 5969ba6..e14719a 100644 --- a/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj +++ b/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj @@ -4,8 +4,8 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 5.1.0 - netcoreapp3.1 + 6.0.0-beta1 + net5.0 ExtCore.Data.EntityFramework.PostgreSql ExtCore.Data.EntityFramework.PostgreSql http://extcore.net/extcore_nuget_icon.png @@ -13,7 +13,7 @@ - + diff --git a/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj b/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj index 001de8f..559cc45 100644 --- a/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj +++ b/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj @@ -4,8 +4,8 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 5.1.0 - netcoreapp3.1 + 6.0.0-beta1 + net5.0 ExtCore.Data.EntityFramework.SqlServer ExtCore.Data.EntityFramework.SqlServer http://extcore.net/extcore_nuget_icon.png @@ -13,7 +13,7 @@ - + diff --git a/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj b/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj index f49821b..29403b8 100644 --- a/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj +++ b/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj @@ -4,8 +4,8 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 5.1.0 - netcoreapp3.1 + 6.0.0-beta1 + net5.0 ExtCore.Data.EntityFramework.Sqlite ExtCore.Data.EntityFramework.Sqlite http://extcore.net/extcore_nuget_icon.png @@ -13,7 +13,7 @@ - + diff --git a/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj b/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj index 6b48ad2..6979840 100644 --- a/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj +++ b/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj @@ -4,8 +4,8 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 5.1.0 - netcoreapp3.1 + 6.0.0-beta1 + net5.0 ExtCore.Data.EntityFramework ExtCore.Data.EntityFramework http://extcore.net/extcore_nuget_icon.png @@ -13,7 +13,7 @@ - + diff --git a/src/ExtCore.Data.EntityFramework/Extension.cs b/src/ExtCore.Data.EntityFramework/Extension.cs index a00ab0c..ff3d1d2 100644 --- a/src/ExtCore.Data.EntityFramework/Extension.cs +++ b/src/ExtCore.Data.EntityFramework/Extension.cs @@ -24,7 +24,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "5.1.0"; + public override string Version => "6.0.0-beta1"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Data/ExtCore.Data.csproj b/src/ExtCore.Data/ExtCore.Data.csproj index 6a889df..4cdc6d4 100644 --- a/src/ExtCore.Data/ExtCore.Data.csproj +++ b/src/ExtCore.Data/ExtCore.Data.csproj @@ -4,8 +4,8 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data extension component. Based on the ExtCore framework. - 5.1.0 - netcoreapp3.1 + 6.0.0-beta1 + net5.0 ExtCore.Data ExtCore.Data http://extcore.net/extcore_nuget_icon.png diff --git a/src/ExtCore.Data/Extension.cs b/src/ExtCore.Data/Extension.cs index 40d5744..285072a 100644 --- a/src/ExtCore.Data/Extension.cs +++ b/src/ExtCore.Data/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "5.1.0"; + public override string Version => "6.0.0-beta1"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Events/ExtCore.Events.csproj b/src/ExtCore.Events/ExtCore.Events.csproj index 0ba181b..9ecb3a2 100644 --- a/src/ExtCore.Events/ExtCore.Events.csproj +++ b/src/ExtCore.Events/ExtCore.Events.csproj @@ -4,8 +4,8 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Events extension component. Based on the ExtCore framework. - 5.1.0 - netcoreapp3.1 + 6.0.0-beta1 + net5.0 ExtCore.Events ExtCore.Events http://extcore.net/extcore_nuget_icon.png diff --git a/src/ExtCore.Events/Extension.cs b/src/ExtCore.Events/Extension.cs index f6893b6..8d64122 100644 --- a/src/ExtCore.Events/Extension.cs +++ b/src/ExtCore.Events/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "5.1.0"; + public override string Version => "6.0.0-beta1"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.FileStorage.Abstractions/ExtCore.FileStorage.Abstractions.csproj b/src/ExtCore.FileStorage.Abstractions/ExtCore.FileStorage.Abstractions.csproj index 08a7572..d82d9b6 100644 --- a/src/ExtCore.FileStorage.Abstractions/ExtCore.FileStorage.Abstractions.csproj +++ b/src/ExtCore.FileStorage.Abstractions/ExtCore.FileStorage.Abstractions.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2018 Dmitry Sikorsky The ExtCore.FileStorage extension component. Based on the ExtCore framework. - 5.1.0 + 6.0.0-beta1 netstandard2.0 ExtCore.FileStorage.Abstractions ExtCore.FileStorage.Abstractions diff --git a/src/ExtCore.FileStorage.Dropbox/ExtCore.FileStorage.Dropbox.csproj b/src/ExtCore.FileStorage.Dropbox/ExtCore.FileStorage.Dropbox.csproj index 34c62d1..1639775 100644 --- a/src/ExtCore.FileStorage.Dropbox/ExtCore.FileStorage.Dropbox.csproj +++ b/src/ExtCore.FileStorage.Dropbox/ExtCore.FileStorage.Dropbox.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2018 Dmitry Sikorsky The ExtCore.FileStorage extension component. Based on the ExtCore framework. - 5.1.0 + 6.0.0-beta1 netstandard2.0 ExtCore.FileStorage.Dropbox ExtCore.FileStorage.Dropbox @@ -13,8 +13,8 @@ - - + + diff --git a/src/ExtCore.FileStorage.FileSystem/ExtCore.FileStorage.FileSystem.csproj b/src/ExtCore.FileStorage.FileSystem/ExtCore.FileStorage.FileSystem.csproj index 34840e6..3f0894c 100644 --- a/src/ExtCore.FileStorage.FileSystem/ExtCore.FileStorage.FileSystem.csproj +++ b/src/ExtCore.FileStorage.FileSystem/ExtCore.FileStorage.FileSystem.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2018 Dmitry Sikorsky The ExtCore.FileStorage extension component. Based on the ExtCore framework. - 5.1.0 + 6.0.0-beta1 netstandard2.0 ExtCore.FileStorage.FileSystem ExtCore.FileStorage.FileSystem @@ -13,7 +13,7 @@ - + diff --git a/src/ExtCore.FileStorage/ExtCore.FileStorage.csproj b/src/ExtCore.FileStorage/ExtCore.FileStorage.csproj index 1621d59..ce27ec8 100644 --- a/src/ExtCore.FileStorage/ExtCore.FileStorage.csproj +++ b/src/ExtCore.FileStorage/ExtCore.FileStorage.csproj @@ -4,8 +4,8 @@ Dmitry Sikorsky Copyright © 2018 Dmitry Sikorsky The ExtCore.FileStorage extension component. Based on the ExtCore framework. - 5.1.0 - netcoreapp3.1 + 6.0.0-beta1 + net5.0 ExtCore.FileStorage ExtCore.FileStorage http://extcore.net/extcore_nuget_icon.png diff --git a/src/ExtCore.FileStorage/Extension.cs b/src/ExtCore.FileStorage/Extension.cs index d6fbb45..5d59903 100644 --- a/src/ExtCore.FileStorage/Extension.cs +++ b/src/ExtCore.FileStorage/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "5.1.0"; + public override string Version => "6.0.0-beta1"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj b/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj index 0e1e0b9..e2a5ee8 100644 --- a/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj +++ b/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj @@ -4,8 +4,8 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky Free, open source and cross-platform framework for creating modular and extendable web applications based on ASP.NET Core. - 5.1.0 - netcoreapp3.1 + 6.0.0-beta1 + net5.0 ExtCore.Infrastructure ExtCore.Infrastructure http://extcore.net/extcore_nuget_icon.png diff --git a/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj b/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj index ebf8301..6ec7b4e 100644 --- a/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj +++ b/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj @@ -4,8 +4,8 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Mvc extension component. Based on the ExtCore framework. - 5.1.0 - netcoreapp3.1 + 6.0.0-beta1 + net5.0 ExtCore.Mvc.Infrastructure ExtCore.Mvc.Infrastructure http://extcore.net/extcore_nuget_icon.png diff --git a/src/ExtCore.Mvc/ExtCore.Mvc.csproj b/src/ExtCore.Mvc/ExtCore.Mvc.csproj index 28bffc0..3332995 100644 --- a/src/ExtCore.Mvc/ExtCore.Mvc.csproj +++ b/src/ExtCore.Mvc/ExtCore.Mvc.csproj @@ -4,8 +4,8 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Mvc extension component. Based on the ExtCore framework. - 5.1.0 - netcoreapp3.1 + 6.0.0-beta1 + net5.0 ExtCore.Mvc ExtCore.Mvc http://extcore.net/extcore_nuget_icon.png @@ -13,7 +13,7 @@ - + diff --git a/src/ExtCore.Mvc/Extension.cs b/src/ExtCore.Mvc/Extension.cs index 25915de..e33d035 100644 --- a/src/ExtCore.Mvc/Extension.cs +++ b/src/ExtCore.Mvc/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "5.1.0"; + public override string Version => "6.0.0-beta1"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj b/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj index 75a6d2d..9ed09e8 100644 --- a/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj +++ b/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj @@ -4,8 +4,8 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky Free, open source and cross-platform framework for creating modular and extendable web applications based on ASP.NET Core. - 5.1.0 - netcoreapp3.1 + 6.0.0-beta1 + net5.0 ExtCore.WebApplication ExtCore.WebApplication http://extcore.net/extcore_nuget_icon.png @@ -13,7 +13,7 @@ - + From 568b85257195de3684ac9051fd248c778921900c Mon Sep 17 00:00:00 2001 From: Dmitry Sikorsky Date: Sun, 10 Jan 2021 14:18:27 +0200 Subject: [PATCH 58/81] Changed version to 6.0.0 --- README.md | 32 +++++++++---------- .../ExtCore.Data.Abstractions.csproj | 2 +- .../ExtCore.Data.Dapper.MySql.csproj | 2 +- .../ExtCore.Data.Dapper.PostgreSql.csproj | 4 +-- .../ExtCore.Data.Dapper.SqlServer.csproj | 2 +- .../ExtCore.Data.Dapper.Sqlite.csproj | 4 +-- .../ExtCore.Data.Dapper.csproj | 2 +- src/ExtCore.Data.Dapper/Extension.cs | 2 +- .../ExtCore.Data.Entities.Abstractions.csproj | 2 +- .../ExtCore.Data.EntityFramework.MySql.csproj | 2 +- ...ore.Data.EntityFramework.PostgreSql.csproj | 4 +-- ...Core.Data.EntityFramework.SqlServer.csproj | 4 +-- ...ExtCore.Data.EntityFramework.Sqlite.csproj | 4 +-- .../ExtCore.Data.EntityFramework.csproj | 4 +-- src/ExtCore.Data.EntityFramework/Extension.cs | 2 +- src/ExtCore.Data/ExtCore.Data.csproj | 2 +- src/ExtCore.Data/Extension.cs | 2 +- src/ExtCore.Events/ExtCore.Events.csproj | 2 +- src/ExtCore.Events/Extension.cs | 2 +- .../ExtCore.FileStorage.Abstractions.csproj | 2 +- .../ExtCore.FileStorage.Dropbox.csproj | 4 +-- .../ExtCore.FileStorage.FileSystem.csproj | 2 +- .../ExtCore.FileStorage.csproj | 2 +- src/ExtCore.FileStorage/Extension.cs | 2 +- .../ExtCore.Infrastructure.csproj | 2 +- .../ExtCore.Mvc.Infrastructure.csproj | 2 +- src/ExtCore.Mvc/ExtCore.Mvc.csproj | 4 +-- src/ExtCore.Mvc/Extension.cs | 2 +- .../ExtCore.WebApplication.csproj | 2 +- 29 files changed, 52 insertions(+), 52 deletions(-) diff --git a/README.md b/README.md index 1f485d1..a3b179e 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# ExtCore 6.0.0-beta1 +# ExtCore 6.0.0 [![Join the chat at https://gitter.im/ExtCore/ExtCore](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/ExtCore/ExtCore?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) @@ -95,20 +95,20 @@ in order to execute some code inside the ConfigureServices and Configure methods Please take a look at our samples on GitHub: -* [Full-featured ExtCore 5.0.0 framework sample web application](https://github.com/ExtCore/ExtCore-Sample); -* [ExtCore framework 5.0.0 sample simplest web application](https://github.com/ExtCore/ExtCore-Sample-Simplest); -* [ExtCore framework 5.0.0 sample MVC web application](https://github.com/ExtCore/ExtCore-Sample-Mvc); -* [ExtCore framework 5.0.0 sample web application that uses file storage](https://github.com/ExtCore/ExtCore-Sample-FileStorage); -* [ExtCore framework 5.0.0 sample web application that uses a database](https://github.com/ExtCore/ExtCore-Sample-Data); -* [ExtCore framework 5.0.0 sample web application that uses Identity](https://github.com/ExtCore/ExtCore-Sample-Identity); -* [ExtCore framework 5.0.0 sample web application with modular UI](https://github.com/ExtCore/ExtCore-Sample-Modular-Ui); -* [ExtCore framework 5.0.0 advanced sample web application with modular UI](https://github.com/ExtCore/ExtCore-Sample-Modular-Ui-Adv); -* [ExtCore framework 5.0.0 advanced sample accounting web application](https://github.com/ExtCore/ExtCore-Sample-Accounting); -* [ExtCore framework 5.0.0 sample web application that registers a service inside the extension](https://github.com/ExtCore/ExtCore-Sample-Service); -* [ExtCore framework 5.0.0 sample web application that uses the events](https://github.com/ExtCore/ExtCore-Sample-Events); -* [ExtCore framework 5.0.0 sample API web application](https://github.com/ExtCore/ExtCore-Sample-Api). - -You can also download our [ready to use full-featured sample](http://extcore.net/files/ExtCore-Sample-5.0.0.zip). +* [Full-featured ExtCore 6.0.0 framework sample web application](https://github.com/ExtCore/ExtCore-Sample); +* [ExtCore framework 6.0.0 sample simplest web application](https://github.com/ExtCore/ExtCore-Sample-Simplest); +* [ExtCore framework 6.0.0 sample MVC web application](https://github.com/ExtCore/ExtCore-Sample-Mvc); +* [ExtCore framework 6.0.0 sample web application that uses file storage](https://github.com/ExtCore/ExtCore-Sample-FileStorage); +* [ExtCore framework 6.0.0 sample web application that uses a database](https://github.com/ExtCore/ExtCore-Sample-Data); +* [ExtCore framework 6.0.0 sample web application that uses Identity](https://github.com/ExtCore/ExtCore-Sample-Identity); +* [ExtCore framework 6.0.0 sample web application with modular UI](https://github.com/ExtCore/ExtCore-Sample-Modular-Ui); +* [ExtCore framework 6.0.0 advanced sample web application with modular UI](https://github.com/ExtCore/ExtCore-Sample-Modular-Ui-Adv); +* [ExtCore framework 6.0.0 advanced sample accounting web application](https://github.com/ExtCore/ExtCore-Sample-Accounting); +* [ExtCore framework 6.0.0 sample web application that registers a service inside the extension](https://github.com/ExtCore/ExtCore-Sample-Service); +* [ExtCore framework 6.0.0 sample web application that uses the events](https://github.com/ExtCore/ExtCore-Sample-Events); +* [ExtCore framework 6.0.0 sample API web application](https://github.com/ExtCore/ExtCore-Sample-Api). + +You can also download our [ready to use full-featured sample](http://extcore.net/files/ExtCore-Sample-6.0.0.zip). It contains everything you need to run ExtCore-based web application from Visual Studio 2019, including SQLite database with the test data. @@ -120,7 +120,7 @@ to help you start developing your ExtCore-based web applications. ### Real Projects Please take a look at [Platformus](https://github.com/Platformus/Platformus) on GitHub. It is CMS -built on ExtCore framework with more than 10 extensions and 80 projects. +built on ExtCore framework with 3 extensions and 25 projects. ## Development and Debug diff --git a/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj b/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj index 5d3addb..022d63f 100644 --- a/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj +++ b/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data extension component. Based on the ExtCore framework. - 6.0.0-beta1 + 6.0.0 netstandard2.0 ExtCore.Data.Abstractions ExtCore.Data.Abstractions diff --git a/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj b/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj index 4a9f6c0..fdc3c96 100644 --- a/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj +++ b/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 6.0.0-beta1 + 6.0.0 net5.0 ExtCore.Data.Dapper.MySql ExtCore.Data.Dapper.MySql diff --git a/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj b/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj index dc0dd4e..df2dc08 100644 --- a/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj +++ b/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 6.0.0-beta1 + 6.0.0 net5.0 ExtCore.Data.Dapper.PostgreSql ExtCore.Data.Dapper.PostgreSql @@ -13,7 +13,7 @@ - + diff --git a/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj b/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj index d656610..1b277f6 100644 --- a/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj +++ b/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 6.0.0-beta1 + 6.0.0 net5.0 ExtCore.Data.Dapper.SqlServer ExtCore.Data.Dapper.SqlServer diff --git a/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj b/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj index 6aa18c7..4c16f09 100644 --- a/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj +++ b/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 6.0.0-beta1 + 6.0.0 net5.0 ExtCore.Data.Dapper.Sqlite ExtCore.Data.Dapper.Sqlite @@ -13,7 +13,7 @@ - + diff --git a/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj b/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj index fc44f93..7455c47 100644 --- a/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj +++ b/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 6.0.0-beta1 + 6.0.0 net5.0 ExtCore.Data.Dapper ExtCore.Data.Dapper diff --git a/src/ExtCore.Data.Dapper/Extension.cs b/src/ExtCore.Data.Dapper/Extension.cs index b5f0909..a421e01 100644 --- a/src/ExtCore.Data.Dapper/Extension.cs +++ b/src/ExtCore.Data.Dapper/Extension.cs @@ -24,7 +24,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "6.0.0-beta1"; + public override string Version => "6.0.0"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj b/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj index 9aa51f8..e524c9f 100644 --- a/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj +++ b/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data extension component. Based on the ExtCore framework. - 6.0.0-beta1 + 6.0.0 netstandard2.0 ExtCore.Data.Entities.Abstractions ExtCore.Data.Entities.Abstractions diff --git a/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj b/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj index 529d297..a53736e 100644 --- a/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj +++ b/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 6.0.0-beta1 + 6.0.0 net5.0 ExtCore.Data.EntityFramework.MySql ExtCore.Data.EntityFramework.MySql diff --git a/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj b/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj index e14719a..def555f 100644 --- a/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj +++ b/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 6.0.0-beta1 + 6.0.0 net5.0 ExtCore.Data.EntityFramework.PostgreSql ExtCore.Data.EntityFramework.PostgreSql @@ -13,7 +13,7 @@ - + diff --git a/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj b/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj index 559cc45..ae51991 100644 --- a/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj +++ b/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 6.0.0-beta1 + 6.0.0 net5.0 ExtCore.Data.EntityFramework.SqlServer ExtCore.Data.EntityFramework.SqlServer @@ -13,7 +13,7 @@ - + diff --git a/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj b/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj index 29403b8..93923d6 100644 --- a/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj +++ b/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 6.0.0-beta1 + 6.0.0 net5.0 ExtCore.Data.EntityFramework.Sqlite ExtCore.Data.EntityFramework.Sqlite @@ -13,7 +13,7 @@ - + diff --git a/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj b/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj index 6979840..0a90351 100644 --- a/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj +++ b/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 6.0.0-beta1 + 6.0.0 net5.0 ExtCore.Data.EntityFramework ExtCore.Data.EntityFramework @@ -13,7 +13,7 @@ - + diff --git a/src/ExtCore.Data.EntityFramework/Extension.cs b/src/ExtCore.Data.EntityFramework/Extension.cs index ff3d1d2..b0f8cdf 100644 --- a/src/ExtCore.Data.EntityFramework/Extension.cs +++ b/src/ExtCore.Data.EntityFramework/Extension.cs @@ -24,7 +24,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "6.0.0-beta1"; + public override string Version => "6.0.0"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Data/ExtCore.Data.csproj b/src/ExtCore.Data/ExtCore.Data.csproj index 4cdc6d4..ea2044a 100644 --- a/src/ExtCore.Data/ExtCore.Data.csproj +++ b/src/ExtCore.Data/ExtCore.Data.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data extension component. Based on the ExtCore framework. - 6.0.0-beta1 + 6.0.0 net5.0 ExtCore.Data ExtCore.Data diff --git a/src/ExtCore.Data/Extension.cs b/src/ExtCore.Data/Extension.cs index 285072a..7612805 100644 --- a/src/ExtCore.Data/Extension.cs +++ b/src/ExtCore.Data/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "6.0.0-beta1"; + public override string Version => "6.0.0"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Events/ExtCore.Events.csproj b/src/ExtCore.Events/ExtCore.Events.csproj index 9ecb3a2..4009f41 100644 --- a/src/ExtCore.Events/ExtCore.Events.csproj +++ b/src/ExtCore.Events/ExtCore.Events.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Events extension component. Based on the ExtCore framework. - 6.0.0-beta1 + 6.0.0 net5.0 ExtCore.Events ExtCore.Events diff --git a/src/ExtCore.Events/Extension.cs b/src/ExtCore.Events/Extension.cs index 8d64122..3d0a505 100644 --- a/src/ExtCore.Events/Extension.cs +++ b/src/ExtCore.Events/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "6.0.0-beta1"; + public override string Version => "6.0.0"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.FileStorage.Abstractions/ExtCore.FileStorage.Abstractions.csproj b/src/ExtCore.FileStorage.Abstractions/ExtCore.FileStorage.Abstractions.csproj index d82d9b6..2864430 100644 --- a/src/ExtCore.FileStorage.Abstractions/ExtCore.FileStorage.Abstractions.csproj +++ b/src/ExtCore.FileStorage.Abstractions/ExtCore.FileStorage.Abstractions.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2018 Dmitry Sikorsky The ExtCore.FileStorage extension component. Based on the ExtCore framework. - 6.0.0-beta1 + 6.0.0 netstandard2.0 ExtCore.FileStorage.Abstractions ExtCore.FileStorage.Abstractions diff --git a/src/ExtCore.FileStorage.Dropbox/ExtCore.FileStorage.Dropbox.csproj b/src/ExtCore.FileStorage.Dropbox/ExtCore.FileStorage.Dropbox.csproj index 1639775..3ff22c2 100644 --- a/src/ExtCore.FileStorage.Dropbox/ExtCore.FileStorage.Dropbox.csproj +++ b/src/ExtCore.FileStorage.Dropbox/ExtCore.FileStorage.Dropbox.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2018 Dmitry Sikorsky The ExtCore.FileStorage extension component. Based on the ExtCore framework. - 6.0.0-beta1 + 6.0.0 netstandard2.0 ExtCore.FileStorage.Dropbox ExtCore.FileStorage.Dropbox @@ -13,7 +13,7 @@ - + diff --git a/src/ExtCore.FileStorage.FileSystem/ExtCore.FileStorage.FileSystem.csproj b/src/ExtCore.FileStorage.FileSystem/ExtCore.FileStorage.FileSystem.csproj index 3f0894c..0cfceda 100644 --- a/src/ExtCore.FileStorage.FileSystem/ExtCore.FileStorage.FileSystem.csproj +++ b/src/ExtCore.FileStorage.FileSystem/ExtCore.FileStorage.FileSystem.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2018 Dmitry Sikorsky The ExtCore.FileStorage extension component. Based on the ExtCore framework. - 6.0.0-beta1 + 6.0.0 netstandard2.0 ExtCore.FileStorage.FileSystem ExtCore.FileStorage.FileSystem diff --git a/src/ExtCore.FileStorage/ExtCore.FileStorage.csproj b/src/ExtCore.FileStorage/ExtCore.FileStorage.csproj index ce27ec8..f0473f9 100644 --- a/src/ExtCore.FileStorage/ExtCore.FileStorage.csproj +++ b/src/ExtCore.FileStorage/ExtCore.FileStorage.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2018 Dmitry Sikorsky The ExtCore.FileStorage extension component. Based on the ExtCore framework. - 6.0.0-beta1 + 6.0.0 net5.0 ExtCore.FileStorage ExtCore.FileStorage diff --git a/src/ExtCore.FileStorage/Extension.cs b/src/ExtCore.FileStorage/Extension.cs index 5d59903..eba5594 100644 --- a/src/ExtCore.FileStorage/Extension.cs +++ b/src/ExtCore.FileStorage/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "6.0.0-beta1"; + public override string Version => "6.0.0"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj b/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj index e2a5ee8..cbff3bb 100644 --- a/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj +++ b/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky Free, open source and cross-platform framework for creating modular and extendable web applications based on ASP.NET Core. - 6.0.0-beta1 + 6.0.0 net5.0 ExtCore.Infrastructure ExtCore.Infrastructure diff --git a/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj b/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj index 6ec7b4e..efce63d 100644 --- a/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj +++ b/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Mvc extension component. Based on the ExtCore framework. - 6.0.0-beta1 + 6.0.0 net5.0 ExtCore.Mvc.Infrastructure ExtCore.Mvc.Infrastructure diff --git a/src/ExtCore.Mvc/ExtCore.Mvc.csproj b/src/ExtCore.Mvc/ExtCore.Mvc.csproj index 3332995..ce62906 100644 --- a/src/ExtCore.Mvc/ExtCore.Mvc.csproj +++ b/src/ExtCore.Mvc/ExtCore.Mvc.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Mvc extension component. Based on the ExtCore framework. - 6.0.0-beta1 + 6.0.0 net5.0 ExtCore.Mvc ExtCore.Mvc @@ -13,7 +13,7 @@ - + diff --git a/src/ExtCore.Mvc/Extension.cs b/src/ExtCore.Mvc/Extension.cs index e33d035..ab1364e 100644 --- a/src/ExtCore.Mvc/Extension.cs +++ b/src/ExtCore.Mvc/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "6.0.0-beta1"; + public override string Version => "6.0.0"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj b/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj index 9ed09e8..1545824 100644 --- a/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj +++ b/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky Free, open source and cross-platform framework for creating modular and extendable web applications based on ASP.NET Core. - 6.0.0-beta1 + 6.0.0 net5.0 ExtCore.WebApplication ExtCore.WebApplication From 2f709c06a12ffdf1885575826ea1390de4039512 Mon Sep 17 00:00:00 2001 From: Dmitry Sikorsky Date: Mon, 29 Mar 2021 13:00:25 +0300 Subject: [PATCH 59/81] Update README.md --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index a3b179e..c123cb8 100644 --- a/README.md +++ b/README.md @@ -134,4 +134,6 @@ Website: http://extcore.net/ Docs: http://docs.extcore.net/ -Author: http://sikorsky.pro/ \ No newline at end of file +Author: http://sikorsky.pro/ + +Patreon: https://www.patreon.com/dmitry_sikorsky (you can support this project) From 63eb89c4d0ef12747832dc3999f0f020bbe9d9b1 Mon Sep 17 00:00:00 2001 From: Dmitry Sikorsky Date: Mon, 3 Jan 2022 11:23:53 +0200 Subject: [PATCH 60/81] Updated to use .NET 6 --- README.md | 48 ++++++++---------- .../ExtCore.Data.Abstractions.csproj | 11 ++-- src/ExtCore.Data.Abstractions/icon.png | Bin 0 -> 3149 bytes .../ExtCore.Data.Dapper.MySql.csproj | 15 ++++-- src/ExtCore.Data.Dapper.MySql/icon.png | Bin 0 -> 3149 bytes .../ExtCore.Data.Dapper.PostgreSql.csproj | 15 ++++-- src/ExtCore.Data.Dapper.PostgreSql/icon.png | Bin 0 -> 3149 bytes .../ExtCore.Data.Dapper.SqlServer.csproj | 13 +++-- src/ExtCore.Data.Dapper.SqlServer/icon.png | Bin 0 -> 3149 bytes .../ExtCore.Data.Dapper.Sqlite.csproj | 15 ++++-- src/ExtCore.Data.Dapper.Sqlite/icon.png | Bin 0 -> 3149 bytes .../ExtCore.Data.Dapper.csproj | 15 ++++-- src/ExtCore.Data.Dapper/Extension.cs | 4 +- src/ExtCore.Data.Dapper/icon.png | Bin 0 -> 3149 bytes .../ExtCore.Data.Entities.Abstractions.csproj | 11 ++-- .../icon.png | Bin 0 -> 3149 bytes .../ExtCore.Data.EntityFramework.MySql.csproj | 15 ++++-- .../icon.png | Bin 0 -> 3149 bytes ...ore.Data.EntityFramework.PostgreSql.csproj | 15 ++++-- .../icon.png | Bin 0 -> 3149 bytes ...Core.Data.EntityFramework.SqlServer.csproj | 15 ++++-- .../icon.png | Bin 0 -> 3149 bytes ...ExtCore.Data.EntityFramework.Sqlite.csproj | 15 ++++-- .../icon.png | Bin 0 -> 3149 bytes .../ExtCore.Data.EntityFramework.csproj | 15 ++++-- src/ExtCore.Data.EntityFramework/Extension.cs | 4 +- src/ExtCore.Data.EntityFramework/icon.png | Bin 0 -> 3149 bytes src/ExtCore.Data/ExtCore.Data.csproj | 13 +++-- src/ExtCore.Data/Extension.cs | 4 +- src/ExtCore.Data/icon.png | Bin 0 -> 3149 bytes src/ExtCore.Events/ExtCore.Events.csproj | 13 +++-- src/ExtCore.Events/Extension.cs | 4 +- src/ExtCore.Events/icon.png | Bin 0 -> 3149 bytes .../ExtCore.FileStorage.Abstractions.csproj | 11 ++-- src/ExtCore.FileStorage.Abstractions/icon.png | Bin 0 -> 3149 bytes .../ExtCore.FileStorage.Dropbox.csproj | 15 ++++-- src/ExtCore.FileStorage.Dropbox/icon.png | Bin 0 -> 3149 bytes .../ExtCore.FileStorage.FileSystem.csproj | 13 +++-- src/ExtCore.FileStorage.FileSystem/icon.png | Bin 0 -> 3149 bytes .../ExtCore.FileStorage.csproj | 13 +++-- src/ExtCore.FileStorage/Extension.cs | 4 +- src/ExtCore.FileStorage/icon.png | Bin 0 -> 3149 bytes .../ExtCore.Infrastructure.csproj | 13 +++-- src/ExtCore.Infrastructure/icon.png | Bin 0 -> 3149 bytes .../ExtCore.Mvc.Infrastructure.csproj | 13 +++-- src/ExtCore.Mvc.Infrastructure/icon.png | Bin 0 -> 3149 bytes src/ExtCore.Mvc/ExtCore.Mvc.csproj | 15 ++++-- src/ExtCore.Mvc/Extension.cs | 4 +- src/ExtCore.Mvc/icon.png | Bin 0 -> 3149 bytes .../ExtCore.WebApplication.csproj | 15 ++++-- src/ExtCore.WebApplication/icon.png | Bin 0 -> 3149 bytes 51 files changed, 241 insertions(+), 135 deletions(-) create mode 100644 src/ExtCore.Data.Abstractions/icon.png create mode 100644 src/ExtCore.Data.Dapper.MySql/icon.png create mode 100644 src/ExtCore.Data.Dapper.PostgreSql/icon.png create mode 100644 src/ExtCore.Data.Dapper.SqlServer/icon.png create mode 100644 src/ExtCore.Data.Dapper.Sqlite/icon.png create mode 100644 src/ExtCore.Data.Dapper/icon.png create mode 100644 src/ExtCore.Data.Entities.Abstractions/icon.png create mode 100644 src/ExtCore.Data.EntityFramework.MySql/icon.png create mode 100644 src/ExtCore.Data.EntityFramework.PostgreSql/icon.png create mode 100644 src/ExtCore.Data.EntityFramework.SqlServer/icon.png create mode 100644 src/ExtCore.Data.EntityFramework.Sqlite/icon.png create mode 100644 src/ExtCore.Data.EntityFramework/icon.png create mode 100644 src/ExtCore.Data/icon.png create mode 100644 src/ExtCore.Events/icon.png create mode 100644 src/ExtCore.FileStorage.Abstractions/icon.png create mode 100644 src/ExtCore.FileStorage.Dropbox/icon.png create mode 100644 src/ExtCore.FileStorage.FileSystem/icon.png create mode 100644 src/ExtCore.FileStorage/icon.png create mode 100644 src/ExtCore.Infrastructure/icon.png create mode 100644 src/ExtCore.Mvc.Infrastructure/icon.png create mode 100644 src/ExtCore.Mvc/icon.png create mode 100644 src/ExtCore.WebApplication/icon.png diff --git a/README.md b/README.md index c123cb8..5bbc9de 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# ExtCore 6.0.0 +# ExtCore 7.0.0 [![Join the chat at https://gitter.im/ExtCore/ExtCore](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/ExtCore/ExtCore?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) @@ -7,17 +7,16 @@ ## Introduction ExtCore is free, open source and cross-platform framework for creating modular and extendable web applications -based on ASP.NET Core. It is built using the best and the most modern tools and languages (Visual Studio 2019, C# +based on ASP.NET Core. It is built using the best and the most modern tools and languages (Visual Studio 2022, C# etc). Join our team! ExtCore allows you to build your web applications from the different independent reusable modules or extensions. Each of these modules or extensions may consist of one or more ASP.NET Core projects and each of these projects may include everything you want as any other ASP.NET Core project. You don’t need to perform any additional actions to make it all work: any ASP.NET Core project can be used as an ExtCore-based web application extension -by default. Controllers, view components, views (~~added as resources and/or~~ precompiled), static content (added as -resources) are resolved automatically. These projects may be then added to the web application in two ways: as -direct dependencies (as source code or NuGet packages) or by copying compiled DLLs to the Extensions folder. -ExtCore supports both of these options out of the box and at the same time. +by default. Controllers, view components, precompiled views, static content (added as resources) are resolved automatically. +These projects may be then added to the web application in two ways: as direct dependencies (as source code or NuGet packages) +or by copying compiled DLLs to the Extensions folder. ExtCore supports both of these options out of the box and at the same time. Furthermore, any project of the ExtCore-based web application is able to discover the types that are defined inside all the projects (optionally using the predicates for assemblies filtering) and to get the implementations @@ -72,8 +71,7 @@ Currently it supports MySQL, PostgreSql, SQLite, and SQL Server, but it is very #### ExtCore.Mvc By default, ExtCore web applications are not MVC ones. MVC support is provided for them by ExtCore.Mvc extension. -This extension initializes MVC, makes it possible to use controllers, view components, views (~~added as resources -and/or~~ precompiled), static content (added as resources) from other extensions etc. +This extension initializes MVC, makes it possible to use controllers, view components, precompiled views, static content (added as resources) from other extensions etc. #### ExtCore.Events @@ -95,21 +93,21 @@ in order to execute some code inside the ConfigureServices and Configure methods Please take a look at our samples on GitHub: -* [Full-featured ExtCore 6.0.0 framework sample web application](https://github.com/ExtCore/ExtCore-Sample); -* [ExtCore framework 6.0.0 sample simplest web application](https://github.com/ExtCore/ExtCore-Sample-Simplest); -* [ExtCore framework 6.0.0 sample MVC web application](https://github.com/ExtCore/ExtCore-Sample-Mvc); -* [ExtCore framework 6.0.0 sample web application that uses file storage](https://github.com/ExtCore/ExtCore-Sample-FileStorage); -* [ExtCore framework 6.0.0 sample web application that uses a database](https://github.com/ExtCore/ExtCore-Sample-Data); -* [ExtCore framework 6.0.0 sample web application that uses Identity](https://github.com/ExtCore/ExtCore-Sample-Identity); -* [ExtCore framework 6.0.0 sample web application with modular UI](https://github.com/ExtCore/ExtCore-Sample-Modular-Ui); -* [ExtCore framework 6.0.0 advanced sample web application with modular UI](https://github.com/ExtCore/ExtCore-Sample-Modular-Ui-Adv); -* [ExtCore framework 6.0.0 advanced sample accounting web application](https://github.com/ExtCore/ExtCore-Sample-Accounting); -* [ExtCore framework 6.0.0 sample web application that registers a service inside the extension](https://github.com/ExtCore/ExtCore-Sample-Service); -* [ExtCore framework 6.0.0 sample web application that uses the events](https://github.com/ExtCore/ExtCore-Sample-Events); -* [ExtCore framework 6.0.0 sample API web application](https://github.com/ExtCore/ExtCore-Sample-Api). - -You can also download our [ready to use full-featured sample](http://extcore.net/files/ExtCore-Sample-6.0.0.zip). -It contains everything you need to run ExtCore-based web application from Visual Studio 2019, including SQLite +* [Full-featured ExtCore 7.0.0 framework sample web application](https://github.com/ExtCore/ExtCore-Sample); +* [ExtCore framework 7.0.0 sample simplest web application](https://github.com/ExtCore/ExtCore-Sample-Simplest); +* [ExtCore framework 7.0.0 sample MVC web application](https://github.com/ExtCore/ExtCore-Sample-Mvc); +* [ExtCore framework 7.0.0 sample web application that uses file storage](https://github.com/ExtCore/ExtCore-Sample-FileStorage); +* [ExtCore framework 7.0.0 sample web application that uses a database](https://github.com/ExtCore/ExtCore-Sample-Data); +* [ExtCore framework 7.0.0 sample web application that uses Identity](https://github.com/ExtCore/ExtCore-Sample-Identity); +* [ExtCore framework 7.0.0 sample web application with modular UI](https://github.com/ExtCore/ExtCore-Sample-Modular-Ui); +* [ExtCore framework 7.0.0 advanced sample web application with modular UI](https://github.com/ExtCore/ExtCore-Sample-Modular-Ui-Adv); +* [ExtCore framework 7.0.0 advanced sample accounting web application](https://github.com/ExtCore/ExtCore-Sample-Accounting); +* [ExtCore framework 7.0.0 sample web application that registers a service inside the extension](https://github.com/ExtCore/ExtCore-Sample-Service); +* [ExtCore framework 7.0.0 sample web application that uses the events](https://github.com/ExtCore/ExtCore-Sample-Events); +* [ExtCore framework 7.0.0 sample API web application](https://github.com/ExtCore/ExtCore-Sample-Api). + +You can also download our [ready to use full-featured sample](http://extcore.net/files/ExtCore-Sample-7.0.0.zip). +It contains everything you need to run ExtCore-based web application from Visual Studio 2022, including SQLite database with the test data. ### Tutorials @@ -134,6 +132,4 @@ Website: http://extcore.net/ Docs: http://docs.extcore.net/ -Author: http://sikorsky.pro/ - -Patreon: https://www.patreon.com/dmitry_sikorsky (you can support this project) +Author: http://sikorsky.pro/ \ No newline at end of file diff --git a/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj b/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj index 022d63f..c9ad858 100644 --- a/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj +++ b/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj @@ -4,12 +4,17 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data extension component. Based on the ExtCore framework. - 6.0.0 + 7.0.0 netstandard2.0 ExtCore.Data.Abstractions ExtCore.Data.Abstractions - http://extcore.net/extcore_nuget_icon.png - http://extcore.net/ + icon.png + https://extcore.net/ + Apache-2.0 + + + + diff --git a/src/ExtCore.Data.Abstractions/icon.png b/src/ExtCore.Data.Abstractions/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..658aadfa4b42dc9573b7867b99b9d5a0ce54f25b GIT binary patch literal 3149 zcmaJ@c|4SB8-8XGp$_Q`ZKr8uEoR0tjw#D9GnVX2Mu#$Hh8bfPGb2mMgM1*g2s`LHv^}WCMeV^rbUDtg-&wahm?>*$=WV1qktvmo= zg`F+lP0|XN9yzGw?cnn%OVX?n5J&=dPJkec%%cGumE%u?+p)-jG&dTV8WD1bwjBT| z1jBl^A(P-rw9gV9GD8DlW$t#AVr+5m}?+!#Hy5!M)kH86pHyAYCS zJZb>e4Nv?QOENM;&;(C&HuJdk_|(KletK=K5A)6-+_*f{~yX? z{Xp{tZnS^%{hz{oj|eUe=|vr&l)GdF7FQA(PvbH6(x^lphXwz-WGv(7 zxmf*F?;Dr;^IWWd%0)_&K`s^czY6_*O5&cS?ho5a20x5XV@ur5li2#cbK+e9?|r@LKAvjVr@J)_GdG{;$=lJP8>E_(9}=O|Zi3riHG^2KES=MlwCiFBj(*9W z5w%(w@0w>mGcW1y^ zwh9e#x$3UVWm$sMS@{)5Es?;(W=D6|OCeB-weLA%sSfB)4y3_4qLfgSPp3)O0!usB z%G^9Fl_{;g3bQV5dce>0e2~BN7r@mBGRn#G4=rjiCpIdAGUU^PA|6yMwT_(J98leP z)BRa63=+LUKiGAp@DTonQLEA~@z+!y41UyZX6}qT2^Etz1>0_gsq=85c3dSob{ zEdhLe!K&B0u(-M2}bCn<$* zDy>lNs%WOW%X}E@EkFk4w%owAho;|?3u22OqGEJ{-1D{0y_zLUy@P_--&bj~-1B|p zW}?C@@MHS+HAszR;%WmUH``OIR%m$oUUnwh;g}j`2`QDDYi%B*SViOEJ}})o zi&FZYhS_wrecsxIzQ0l>_Mvn|Rw$@EA;QZRnt;pf2=eaOg;Y_@sb$#uB=Nc8#AXs< z_Wh_nzI-)qk2pqzaX4KR{ah9z)UZ!F4etw5B_ub$%C)8kW|aJOw0Xs&^Y)#&((4rt zizZ$^MGz@st=FP}m{ly|+rr0kn;)59?Hu4H&+jCunJ)U)nD_UL?%n@rO2|O%z??35 zBo7hd5y}P(<xPMjsamw| zK2o{poo<=x0TUtzG!NYI@vPNJfVH(o=dZfC zttn?pjlJzZ;e8{xDfu(ASGAP5YyM{fuA0ySyx6yX)mkVM%XpYF@m05eo?M*+oQk$`-tX<=*${HZK~Cpr25{c38I$^ z_7!~*XWJarF1n$wQHBqn_FwmIeL_8fr?d8IRh0~|%otd>Ub64}F+(RTdsiJkdVT~d z7GCR#hmVYm9Q1vtU>3$<5Bp_JejI%cxrrMG*Yt0PtUt@^`4z%-2%&OgnH@~Rds8Mj zo`iy?IA~gTJZyO(dp3B_J%iyWJ!`a7iC^6Hndw^fqb=`(+|9OE-!v}#BW`2m3Fi#o zYD$HNF!TJg_I6h<-M;MfPpbPy^Rp^Z_g%wCx6m2CN%@%@D`Ya6)AYrtd5mw}CwKND zOuf{f3WO8*0Pl2%8Xp!ArSo4MW8np@m3t~WbsQB_AmD*)iR09>(QRRW)yZkrzwqs( zXm2-3E4C_E>I~Jm7aG@Xk!d4qx}^Kb}z3xYyri`KY{DzJ9yOMBU>tI1k7 za3HV?zB)A3BR(=-`c;EeP;dH_)0Wx1vmvq{3~WErsyD{gmfBs}Q0cC&21;(28*%@hj8&FnalR(h3u@XH}$0zTbXov;<$~k%!j_Z+S+hEaX~@C zv{qEeZ3DSaDSCP*g7t&G&_Bzs_N2yRnj()ZghNR z$H*9VYyo@GR{_8kW4GOkg~=^oJ?;-ffo)jW)wgZ_yDjFr_67zPXexBdfLAd>$eO7) z^DOxd5L8hiJ|@|tbRtn|!;G(;Zp#ZU}Ko;$KGmV{u0*U*No4j6228~b` z(UhgxnzHpl?-Ev8U}{C;N?6nAyWx3t&={oD-W{U}9Kop$X}>3T8=#7ysdt0TOXY1D QOF#H_1Sfo{m0!$%0K4WuRsaA1 literal 0 HcmV?d00001 diff --git a/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj b/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj index fdc3c96..355c18f 100644 --- a/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj +++ b/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj @@ -4,16 +4,21 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 6.0.0 - net5.0 + 7.0.0 + net6.0 ExtCore.Data.Dapper.MySql ExtCore.Data.Dapper.MySql - http://extcore.net/extcore_nuget_icon.png - http://extcore.net/ + icon.png + https://extcore.net/ + Apache-2.0 - + + + + + diff --git a/src/ExtCore.Data.Dapper.MySql/icon.png b/src/ExtCore.Data.Dapper.MySql/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..658aadfa4b42dc9573b7867b99b9d5a0ce54f25b GIT binary patch literal 3149 zcmaJ@c|4SB8-8XGp$_Q`ZKr8uEoR0tjw#D9GnVX2Mu#$Hh8bfPGb2mMgM1*g2s`LHv^}WCMeV^rbUDtg-&wahm?>*$=WV1qktvmo= zg`F+lP0|XN9yzGw?cnn%OVX?n5J&=dPJkec%%cGumE%u?+p)-jG&dTV8WD1bwjBT| z1jBl^A(P-rw9gV9GD8DlW$t#AVr+5m}?+!#Hy5!M)kH86pHyAYCS zJZb>e4Nv?QOENM;&;(C&HuJdk_|(KletK=K5A)6-+_*f{~yX? z{Xp{tZnS^%{hz{oj|eUe=|vr&l)GdF7FQA(PvbH6(x^lphXwz-WGv(7 zxmf*F?;Dr;^IWWd%0)_&K`s^czY6_*O5&cS?ho5a20x5XV@ur5li2#cbK+e9?|r@LKAvjVr@J)_GdG{;$=lJP8>E_(9}=O|Zi3riHG^2KES=MlwCiFBj(*9W z5w%(w@0w>mGcW1y^ zwh9e#x$3UVWm$sMS@{)5Es?;(W=D6|OCeB-weLA%sSfB)4y3_4qLfgSPp3)O0!usB z%G^9Fl_{;g3bQV5dce>0e2~BN7r@mBGRn#G4=rjiCpIdAGUU^PA|6yMwT_(J98leP z)BRa63=+LUKiGAp@DTonQLEA~@z+!y41UyZX6}qT2^Etz1>0_gsq=85c3dSob{ zEdhLe!K&B0u(-M2}bCn<$* zDy>lNs%WOW%X}E@EkFk4w%owAho;|?3u22OqGEJ{-1D{0y_zLUy@P_--&bj~-1B|p zW}?C@@MHS+HAszR;%WmUH``OIR%m$oUUnwh;g}j`2`QDDYi%B*SViOEJ}})o zi&FZYhS_wrecsxIzQ0l>_Mvn|Rw$@EA;QZRnt;pf2=eaOg;Y_@sb$#uB=Nc8#AXs< z_Wh_nzI-)qk2pqzaX4KR{ah9z)UZ!F4etw5B_ub$%C)8kW|aJOw0Xs&^Y)#&((4rt zizZ$^MGz@st=FP}m{ly|+rr0kn;)59?Hu4H&+jCunJ)U)nD_UL?%n@rO2|O%z??35 zBo7hd5y}P(<xPMjsamw| zK2o{poo<=x0TUtzG!NYI@vPNJfVH(o=dZfC zttn?pjlJzZ;e8{xDfu(ASGAP5YyM{fuA0ySyx6yX)mkVM%XpYF@m05eo?M*+oQk$`-tX<=*${HZK~Cpr25{c38I$^ z_7!~*XWJarF1n$wQHBqn_FwmIeL_8fr?d8IRh0~|%otd>Ub64}F+(RTdsiJkdVT~d z7GCR#hmVYm9Q1vtU>3$<5Bp_JejI%cxrrMG*Yt0PtUt@^`4z%-2%&OgnH@~Rds8Mj zo`iy?IA~gTJZyO(dp3B_J%iyWJ!`a7iC^6Hndw^fqb=`(+|9OE-!v}#BW`2m3Fi#o zYD$HNF!TJg_I6h<-M;MfPpbPy^Rp^Z_g%wCx6m2CN%@%@D`Ya6)AYrtd5mw}CwKND zOuf{f3WO8*0Pl2%8Xp!ArSo4MW8np@m3t~WbsQB_AmD*)iR09>(QRRW)yZkrzwqs( zXm2-3E4C_E>I~Jm7aG@Xk!d4qx}^Kb}z3xYyri`KY{DzJ9yOMBU>tI1k7 za3HV?zB)A3BR(=-`c;EeP;dH_)0Wx1vmvq{3~WErsyD{gmfBs}Q0cC&21;(28*%@hj8&FnalR(h3u@XH}$0zTbXov;<$~k%!j_Z+S+hEaX~@C zv{qEeZ3DSaDSCP*g7t&G&_Bzs_N2yRnj()ZghNR z$H*9VYyo@GR{_8kW4GOkg~=^oJ?;-ffo)jW)wgZ_yDjFr_67zPXexBdfLAd>$eO7) z^DOxd5L8hiJ|@|tbRtn|!;G(;Zp#ZU}Ko;$KGmV{u0*U*No4j6228~b` z(UhgxnzHpl?-Ev8U}{C;N?6nAyWx3t&={oD-W{U}9Kop$X}>3T8=#7ysdt0TOXY1D QOF#H_1Sfo{m0!$%0K4WuRsaA1 literal 0 HcmV?d00001 diff --git a/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj b/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj index df2dc08..edf0295 100644 --- a/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj +++ b/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj @@ -4,16 +4,21 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 6.0.0 - net5.0 + 7.0.0 + net6.0 ExtCore.Data.Dapper.PostgreSql ExtCore.Data.Dapper.PostgreSql - http://extcore.net/extcore_nuget_icon.png - http://extcore.net/ + icon.png + https://extcore.net/ + Apache-2.0 - + + + + + diff --git a/src/ExtCore.Data.Dapper.PostgreSql/icon.png b/src/ExtCore.Data.Dapper.PostgreSql/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..658aadfa4b42dc9573b7867b99b9d5a0ce54f25b GIT binary patch literal 3149 zcmaJ@c|4SB8-8XGp$_Q`ZKr8uEoR0tjw#D9GnVX2Mu#$Hh8bfPGb2mMgM1*g2s`LHv^}WCMeV^rbUDtg-&wahm?>*$=WV1qktvmo= zg`F+lP0|XN9yzGw?cnn%OVX?n5J&=dPJkec%%cGumE%u?+p)-jG&dTV8WD1bwjBT| z1jBl^A(P-rw9gV9GD8DlW$t#AVr+5m}?+!#Hy5!M)kH86pHyAYCS zJZb>e4Nv?QOENM;&;(C&HuJdk_|(KletK=K5A)6-+_*f{~yX? z{Xp{tZnS^%{hz{oj|eUe=|vr&l)GdF7FQA(PvbH6(x^lphXwz-WGv(7 zxmf*F?;Dr;^IWWd%0)_&K`s^czY6_*O5&cS?ho5a20x5XV@ur5li2#cbK+e9?|r@LKAvjVr@J)_GdG{;$=lJP8>E_(9}=O|Zi3riHG^2KES=MlwCiFBj(*9W z5w%(w@0w>mGcW1y^ zwh9e#x$3UVWm$sMS@{)5Es?;(W=D6|OCeB-weLA%sSfB)4y3_4qLfgSPp3)O0!usB z%G^9Fl_{;g3bQV5dce>0e2~BN7r@mBGRn#G4=rjiCpIdAGUU^PA|6yMwT_(J98leP z)BRa63=+LUKiGAp@DTonQLEA~@z+!y41UyZX6}qT2^Etz1>0_gsq=85c3dSob{ zEdhLe!K&B0u(-M2}bCn<$* zDy>lNs%WOW%X}E@EkFk4w%owAho;|?3u22OqGEJ{-1D{0y_zLUy@P_--&bj~-1B|p zW}?C@@MHS+HAszR;%WmUH``OIR%m$oUUnwh;g}j`2`QDDYi%B*SViOEJ}})o zi&FZYhS_wrecsxIzQ0l>_Mvn|Rw$@EA;QZRnt;pf2=eaOg;Y_@sb$#uB=Nc8#AXs< z_Wh_nzI-)qk2pqzaX4KR{ah9z)UZ!F4etw5B_ub$%C)8kW|aJOw0Xs&^Y)#&((4rt zizZ$^MGz@st=FP}m{ly|+rr0kn;)59?Hu4H&+jCunJ)U)nD_UL?%n@rO2|O%z??35 zBo7hd5y}P(<xPMjsamw| zK2o{poo<=x0TUtzG!NYI@vPNJfVH(o=dZfC zttn?pjlJzZ;e8{xDfu(ASGAP5YyM{fuA0ySyx6yX)mkVM%XpYF@m05eo?M*+oQk$`-tX<=*${HZK~Cpr25{c38I$^ z_7!~*XWJarF1n$wQHBqn_FwmIeL_8fr?d8IRh0~|%otd>Ub64}F+(RTdsiJkdVT~d z7GCR#hmVYm9Q1vtU>3$<5Bp_JejI%cxrrMG*Yt0PtUt@^`4z%-2%&OgnH@~Rds8Mj zo`iy?IA~gTJZyO(dp3B_J%iyWJ!`a7iC^6Hndw^fqb=`(+|9OE-!v}#BW`2m3Fi#o zYD$HNF!TJg_I6h<-M;MfPpbPy^Rp^Z_g%wCx6m2CN%@%@D`Ya6)AYrtd5mw}CwKND zOuf{f3WO8*0Pl2%8Xp!ArSo4MW8np@m3t~WbsQB_AmD*)iR09>(QRRW)yZkrzwqs( zXm2-3E4C_E>I~Jm7aG@Xk!d4qx}^Kb}z3xYyri`KY{DzJ9yOMBU>tI1k7 za3HV?zB)A3BR(=-`c;EeP;dH_)0Wx1vmvq{3~WErsyD{gmfBs}Q0cC&21;(28*%@hj8&FnalR(h3u@XH}$0zTbXov;<$~k%!j_Z+S+hEaX~@C zv{qEeZ3DSaDSCP*g7t&G&_Bzs_N2yRnj()ZghNR z$H*9VYyo@GR{_8kW4GOkg~=^oJ?;-ffo)jW)wgZ_yDjFr_67zPXexBdfLAd>$eO7) z^DOxd5L8hiJ|@|tbRtn|!;G(;Zp#ZU}Ko;$KGmV{u0*U*No4j6228~b` z(UhgxnzHpl?-Ev8U}{C;N?6nAyWx3t&={oD-W{U}9Kop$X}>3T8=#7ysdt0TOXY1D QOF#H_1Sfo{m0!$%0K4WuRsaA1 literal 0 HcmV?d00001 diff --git a/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj b/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj index 1b277f6..6506a23 100644 --- a/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj +++ b/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj @@ -4,14 +4,19 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 6.0.0 - net5.0 + 7.0.0 + net6.0 ExtCore.Data.Dapper.SqlServer ExtCore.Data.Dapper.SqlServer - http://extcore.net/extcore_nuget_icon.png - http://extcore.net/ + icon.png + https://extcore.net/ + Apache-2.0 + + + + diff --git a/src/ExtCore.Data.Dapper.SqlServer/icon.png b/src/ExtCore.Data.Dapper.SqlServer/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..658aadfa4b42dc9573b7867b99b9d5a0ce54f25b GIT binary patch literal 3149 zcmaJ@c|4SB8-8XGp$_Q`ZKr8uEoR0tjw#D9GnVX2Mu#$Hh8bfPGb2mMgM1*g2s`LHv^}WCMeV^rbUDtg-&wahm?>*$=WV1qktvmo= zg`F+lP0|XN9yzGw?cnn%OVX?n5J&=dPJkec%%cGumE%u?+p)-jG&dTV8WD1bwjBT| z1jBl^A(P-rw9gV9GD8DlW$t#AVr+5m}?+!#Hy5!M)kH86pHyAYCS zJZb>e4Nv?QOENM;&;(C&HuJdk_|(KletK=K5A)6-+_*f{~yX? z{Xp{tZnS^%{hz{oj|eUe=|vr&l)GdF7FQA(PvbH6(x^lphXwz-WGv(7 zxmf*F?;Dr;^IWWd%0)_&K`s^czY6_*O5&cS?ho5a20x5XV@ur5li2#cbK+e9?|r@LKAvjVr@J)_GdG{;$=lJP8>E_(9}=O|Zi3riHG^2KES=MlwCiFBj(*9W z5w%(w@0w>mGcW1y^ zwh9e#x$3UVWm$sMS@{)5Es?;(W=D6|OCeB-weLA%sSfB)4y3_4qLfgSPp3)O0!usB z%G^9Fl_{;g3bQV5dce>0e2~BN7r@mBGRn#G4=rjiCpIdAGUU^PA|6yMwT_(J98leP z)BRa63=+LUKiGAp@DTonQLEA~@z+!y41UyZX6}qT2^Etz1>0_gsq=85c3dSob{ zEdhLe!K&B0u(-M2}bCn<$* zDy>lNs%WOW%X}E@EkFk4w%owAho;|?3u22OqGEJ{-1D{0y_zLUy@P_--&bj~-1B|p zW}?C@@MHS+HAszR;%WmUH``OIR%m$oUUnwh;g}j`2`QDDYi%B*SViOEJ}})o zi&FZYhS_wrecsxIzQ0l>_Mvn|Rw$@EA;QZRnt;pf2=eaOg;Y_@sb$#uB=Nc8#AXs< z_Wh_nzI-)qk2pqzaX4KR{ah9z)UZ!F4etw5B_ub$%C)8kW|aJOw0Xs&^Y)#&((4rt zizZ$^MGz@st=FP}m{ly|+rr0kn;)59?Hu4H&+jCunJ)U)nD_UL?%n@rO2|O%z??35 zBo7hd5y}P(<xPMjsamw| zK2o{poo<=x0TUtzG!NYI@vPNJfVH(o=dZfC zttn?pjlJzZ;e8{xDfu(ASGAP5YyM{fuA0ySyx6yX)mkVM%XpYF@m05eo?M*+oQk$`-tX<=*${HZK~Cpr25{c38I$^ z_7!~*XWJarF1n$wQHBqn_FwmIeL_8fr?d8IRh0~|%otd>Ub64}F+(RTdsiJkdVT~d z7GCR#hmVYm9Q1vtU>3$<5Bp_JejI%cxrrMG*Yt0PtUt@^`4z%-2%&OgnH@~Rds8Mj zo`iy?IA~gTJZyO(dp3B_J%iyWJ!`a7iC^6Hndw^fqb=`(+|9OE-!v}#BW`2m3Fi#o zYD$HNF!TJg_I6h<-M;MfPpbPy^Rp^Z_g%wCx6m2CN%@%@D`Ya6)AYrtd5mw}CwKND zOuf{f3WO8*0Pl2%8Xp!ArSo4MW8np@m3t~WbsQB_AmD*)iR09>(QRRW)yZkrzwqs( zXm2-3E4C_E>I~Jm7aG@Xk!d4qx}^Kb}z3xYyri`KY{DzJ9yOMBU>tI1k7 za3HV?zB)A3BR(=-`c;EeP;dH_)0Wx1vmvq{3~WErsyD{gmfBs}Q0cC&21;(28*%@hj8&FnalR(h3u@XH}$0zTbXov;<$~k%!j_Z+S+hEaX~@C zv{qEeZ3DSaDSCP*g7t&G&_Bzs_N2yRnj()ZghNR z$H*9VYyo@GR{_8kW4GOkg~=^oJ?;-ffo)jW)wgZ_yDjFr_67zPXexBdfLAd>$eO7) z^DOxd5L8hiJ|@|tbRtn|!;G(;Zp#ZU}Ko;$KGmV{u0*U*No4j6228~b` z(UhgxnzHpl?-Ev8U}{C;N?6nAyWx3t&={oD-W{U}9Kop$X}>3T8=#7ysdt0TOXY1D QOF#H_1Sfo{m0!$%0K4WuRsaA1 literal 0 HcmV?d00001 diff --git a/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj b/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj index 4c16f09..0ef691d 100644 --- a/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj +++ b/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj @@ -4,16 +4,21 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 6.0.0 - net5.0 + 7.0.0 + net6.0 ExtCore.Data.Dapper.Sqlite ExtCore.Data.Dapper.Sqlite - http://extcore.net/extcore_nuget_icon.png - http://extcore.net/ + icon.png + https://extcore.net/ + Apache-2.0 - + + + + + diff --git a/src/ExtCore.Data.Dapper.Sqlite/icon.png b/src/ExtCore.Data.Dapper.Sqlite/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..658aadfa4b42dc9573b7867b99b9d5a0ce54f25b GIT binary patch literal 3149 zcmaJ@c|4SB8-8XGp$_Q`ZKr8uEoR0tjw#D9GnVX2Mu#$Hh8bfPGb2mMgM1*g2s`LHv^}WCMeV^rbUDtg-&wahm?>*$=WV1qktvmo= zg`F+lP0|XN9yzGw?cnn%OVX?n5J&=dPJkec%%cGumE%u?+p)-jG&dTV8WD1bwjBT| z1jBl^A(P-rw9gV9GD8DlW$t#AVr+5m}?+!#Hy5!M)kH86pHyAYCS zJZb>e4Nv?QOENM;&;(C&HuJdk_|(KletK=K5A)6-+_*f{~yX? z{Xp{tZnS^%{hz{oj|eUe=|vr&l)GdF7FQA(PvbH6(x^lphXwz-WGv(7 zxmf*F?;Dr;^IWWd%0)_&K`s^czY6_*O5&cS?ho5a20x5XV@ur5li2#cbK+e9?|r@LKAvjVr@J)_GdG{;$=lJP8>E_(9}=O|Zi3riHG^2KES=MlwCiFBj(*9W z5w%(w@0w>mGcW1y^ zwh9e#x$3UVWm$sMS@{)5Es?;(W=D6|OCeB-weLA%sSfB)4y3_4qLfgSPp3)O0!usB z%G^9Fl_{;g3bQV5dce>0e2~BN7r@mBGRn#G4=rjiCpIdAGUU^PA|6yMwT_(J98leP z)BRa63=+LUKiGAp@DTonQLEA~@z+!y41UyZX6}qT2^Etz1>0_gsq=85c3dSob{ zEdhLe!K&B0u(-M2}bCn<$* zDy>lNs%WOW%X}E@EkFk4w%owAho;|?3u22OqGEJ{-1D{0y_zLUy@P_--&bj~-1B|p zW}?C@@MHS+HAszR;%WmUH``OIR%m$oUUnwh;g}j`2`QDDYi%B*SViOEJ}})o zi&FZYhS_wrecsxIzQ0l>_Mvn|Rw$@EA;QZRnt;pf2=eaOg;Y_@sb$#uB=Nc8#AXs< z_Wh_nzI-)qk2pqzaX4KR{ah9z)UZ!F4etw5B_ub$%C)8kW|aJOw0Xs&^Y)#&((4rt zizZ$^MGz@st=FP}m{ly|+rr0kn;)59?Hu4H&+jCunJ)U)nD_UL?%n@rO2|O%z??35 zBo7hd5y}P(<xPMjsamw| zK2o{poo<=x0TUtzG!NYI@vPNJfVH(o=dZfC zttn?pjlJzZ;e8{xDfu(ASGAP5YyM{fuA0ySyx6yX)mkVM%XpYF@m05eo?M*+oQk$`-tX<=*${HZK~Cpr25{c38I$^ z_7!~*XWJarF1n$wQHBqn_FwmIeL_8fr?d8IRh0~|%otd>Ub64}F+(RTdsiJkdVT~d z7GCR#hmVYm9Q1vtU>3$<5Bp_JejI%cxrrMG*Yt0PtUt@^`4z%-2%&OgnH@~Rds8Mj zo`iy?IA~gTJZyO(dp3B_J%iyWJ!`a7iC^6Hndw^fqb=`(+|9OE-!v}#BW`2m3Fi#o zYD$HNF!TJg_I6h<-M;MfPpbPy^Rp^Z_g%wCx6m2CN%@%@D`Ya6)AYrtd5mw}CwKND zOuf{f3WO8*0Pl2%8Xp!ArSo4MW8np@m3t~WbsQB_AmD*)iR09>(QRRW)yZkrzwqs( zXm2-3E4C_E>I~Jm7aG@Xk!d4qx}^Kb}z3xYyri`KY{DzJ9yOMBU>tI1k7 za3HV?zB)A3BR(=-`c;EeP;dH_)0Wx1vmvq{3~WErsyD{gmfBs}Q0cC&21;(28*%@hj8&FnalR(h3u@XH}$0zTbXov;<$~k%!j_Z+S+hEaX~@C zv{qEeZ3DSaDSCP*g7t&G&_Bzs_N2yRnj()ZghNR z$H*9VYyo@GR{_8kW4GOkg~=^oJ?;-ffo)jW)wgZ_yDjFr_67zPXexBdfLAd>$eO7) z^DOxd5L8hiJ|@|tbRtn|!;G(;Zp#ZU}Ko;$KGmV{u0*U*No4j6228~b` z(UhgxnzHpl?-Ev8U}{C;N?6nAyWx3t&={oD-W{U}9Kop$X}>3T8=#7ysdt0TOXY1D QOF#H_1Sfo{m0!$%0K4WuRsaA1 literal 0 HcmV?d00001 diff --git a/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj b/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj index 7455c47..1003381 100644 --- a/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj +++ b/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj @@ -4,16 +4,21 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 6.0.0 - net5.0 + 7.0.0 + net6.0 ExtCore.Data.Dapper ExtCore.Data.Dapper - http://extcore.net/extcore_nuget_icon.png - http://extcore.net/ + icon.png + https://extcore.net/ + Apache-2.0 - + + + + + diff --git a/src/ExtCore.Data.Dapper/Extension.cs b/src/ExtCore.Data.Dapper/Extension.cs index a421e01..f1b1a5e 100644 --- a/src/ExtCore.Data.Dapper/Extension.cs +++ b/src/ExtCore.Data.Dapper/Extension.cs @@ -19,12 +19,12 @@ public class Extension : ExtensionBase /// /// Gets the URL of the extension. /// - public override string Url => "http://extcore.net/"; + public override string Url => "https://extcore.net/"; /// /// Gets the version of the extension. /// - public override string Version => "6.0.0"; + public override string Version => "7.0.0"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Data.Dapper/icon.png b/src/ExtCore.Data.Dapper/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..658aadfa4b42dc9573b7867b99b9d5a0ce54f25b GIT binary patch literal 3149 zcmaJ@c|4SB8-8XGp$_Q`ZKr8uEoR0tjw#D9GnVX2Mu#$Hh8bfPGb2mMgM1*g2s`LHv^}WCMeV^rbUDtg-&wahm?>*$=WV1qktvmo= zg`F+lP0|XN9yzGw?cnn%OVX?n5J&=dPJkec%%cGumE%u?+p)-jG&dTV8WD1bwjBT| z1jBl^A(P-rw9gV9GD8DlW$t#AVr+5m}?+!#Hy5!M)kH86pHyAYCS zJZb>e4Nv?QOENM;&;(C&HuJdk_|(KletK=K5A)6-+_*f{~yX? z{Xp{tZnS^%{hz{oj|eUe=|vr&l)GdF7FQA(PvbH6(x^lphXwz-WGv(7 zxmf*F?;Dr;^IWWd%0)_&K`s^czY6_*O5&cS?ho5a20x5XV@ur5li2#cbK+e9?|r@LKAvjVr@J)_GdG{;$=lJP8>E_(9}=O|Zi3riHG^2KES=MlwCiFBj(*9W z5w%(w@0w>mGcW1y^ zwh9e#x$3UVWm$sMS@{)5Es?;(W=D6|OCeB-weLA%sSfB)4y3_4qLfgSPp3)O0!usB z%G^9Fl_{;g3bQV5dce>0e2~BN7r@mBGRn#G4=rjiCpIdAGUU^PA|6yMwT_(J98leP z)BRa63=+LUKiGAp@DTonQLEA~@z+!y41UyZX6}qT2^Etz1>0_gsq=85c3dSob{ zEdhLe!K&B0u(-M2}bCn<$* zDy>lNs%WOW%X}E@EkFk4w%owAho;|?3u22OqGEJ{-1D{0y_zLUy@P_--&bj~-1B|p zW}?C@@MHS+HAszR;%WmUH``OIR%m$oUUnwh;g}j`2`QDDYi%B*SViOEJ}})o zi&FZYhS_wrecsxIzQ0l>_Mvn|Rw$@EA;QZRnt;pf2=eaOg;Y_@sb$#uB=Nc8#AXs< z_Wh_nzI-)qk2pqzaX4KR{ah9z)UZ!F4etw5B_ub$%C)8kW|aJOw0Xs&^Y)#&((4rt zizZ$^MGz@st=FP}m{ly|+rr0kn;)59?Hu4H&+jCunJ)U)nD_UL?%n@rO2|O%z??35 zBo7hd5y}P(<xPMjsamw| zK2o{poo<=x0TUtzG!NYI@vPNJfVH(o=dZfC zttn?pjlJzZ;e8{xDfu(ASGAP5YyM{fuA0ySyx6yX)mkVM%XpYF@m05eo?M*+oQk$`-tX<=*${HZK~Cpr25{c38I$^ z_7!~*XWJarF1n$wQHBqn_FwmIeL_8fr?d8IRh0~|%otd>Ub64}F+(RTdsiJkdVT~d z7GCR#hmVYm9Q1vtU>3$<5Bp_JejI%cxrrMG*Yt0PtUt@^`4z%-2%&OgnH@~Rds8Mj zo`iy?IA~gTJZyO(dp3B_J%iyWJ!`a7iC^6Hndw^fqb=`(+|9OE-!v}#BW`2m3Fi#o zYD$HNF!TJg_I6h<-M;MfPpbPy^Rp^Z_g%wCx6m2CN%@%@D`Ya6)AYrtd5mw}CwKND zOuf{f3WO8*0Pl2%8Xp!ArSo4MW8np@m3t~WbsQB_AmD*)iR09>(QRRW)yZkrzwqs( zXm2-3E4C_E>I~Jm7aG@Xk!d4qx}^Kb}z3xYyri`KY{DzJ9yOMBU>tI1k7 za3HV?zB)A3BR(=-`c;EeP;dH_)0Wx1vmvq{3~WErsyD{gmfBs}Q0cC&21;(28*%@hj8&FnalR(h3u@XH}$0zTbXov;<$~k%!j_Z+S+hEaX~@C zv{qEeZ3DSaDSCP*g7t&G&_Bzs_N2yRnj()ZghNR z$H*9VYyo@GR{_8kW4GOkg~=^oJ?;-ffo)jW)wgZ_yDjFr_67zPXexBdfLAd>$eO7) z^DOxd5L8hiJ|@|tbRtn|!;G(;Zp#ZU}Ko;$KGmV{u0*U*No4j6228~b` z(UhgxnzHpl?-Ev8U}{C;N?6nAyWx3t&={oD-W{U}9Kop$X}>3T8=#7ysdt0TOXY1D QOF#H_1Sfo{m0!$%0K4WuRsaA1 literal 0 HcmV?d00001 diff --git a/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj b/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj index e524c9f..2f65567 100644 --- a/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj +++ b/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj @@ -4,12 +4,17 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data extension component. Based on the ExtCore framework. - 6.0.0 + 7.0.0 netstandard2.0 ExtCore.Data.Entities.Abstractions ExtCore.Data.Entities.Abstractions - http://extcore.net/extcore_nuget_icon.png - http://extcore.net/ + icon.png + https://extcore.net/ + Apache-2.0 + + + + diff --git a/src/ExtCore.Data.Entities.Abstractions/icon.png b/src/ExtCore.Data.Entities.Abstractions/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..658aadfa4b42dc9573b7867b99b9d5a0ce54f25b GIT binary patch literal 3149 zcmaJ@c|4SB8-8XGp$_Q`ZKr8uEoR0tjw#D9GnVX2Mu#$Hh8bfPGb2mMgM1*g2s`LHv^}WCMeV^rbUDtg-&wahm?>*$=WV1qktvmo= zg`F+lP0|XN9yzGw?cnn%OVX?n5J&=dPJkec%%cGumE%u?+p)-jG&dTV8WD1bwjBT| z1jBl^A(P-rw9gV9GD8DlW$t#AVr+5m}?+!#Hy5!M)kH86pHyAYCS zJZb>e4Nv?QOENM;&;(C&HuJdk_|(KletK=K5A)6-+_*f{~yX? z{Xp{tZnS^%{hz{oj|eUe=|vr&l)GdF7FQA(PvbH6(x^lphXwz-WGv(7 zxmf*F?;Dr;^IWWd%0)_&K`s^czY6_*O5&cS?ho5a20x5XV@ur5li2#cbK+e9?|r@LKAvjVr@J)_GdG{;$=lJP8>E_(9}=O|Zi3riHG^2KES=MlwCiFBj(*9W z5w%(w@0w>mGcW1y^ zwh9e#x$3UVWm$sMS@{)5Es?;(W=D6|OCeB-weLA%sSfB)4y3_4qLfgSPp3)O0!usB z%G^9Fl_{;g3bQV5dce>0e2~BN7r@mBGRn#G4=rjiCpIdAGUU^PA|6yMwT_(J98leP z)BRa63=+LUKiGAp@DTonQLEA~@z+!y41UyZX6}qT2^Etz1>0_gsq=85c3dSob{ zEdhLe!K&B0u(-M2}bCn<$* zDy>lNs%WOW%X}E@EkFk4w%owAho;|?3u22OqGEJ{-1D{0y_zLUy@P_--&bj~-1B|p zW}?C@@MHS+HAszR;%WmUH``OIR%m$oUUnwh;g}j`2`QDDYi%B*SViOEJ}})o zi&FZYhS_wrecsxIzQ0l>_Mvn|Rw$@EA;QZRnt;pf2=eaOg;Y_@sb$#uB=Nc8#AXs< z_Wh_nzI-)qk2pqzaX4KR{ah9z)UZ!F4etw5B_ub$%C)8kW|aJOw0Xs&^Y)#&((4rt zizZ$^MGz@st=FP}m{ly|+rr0kn;)59?Hu4H&+jCunJ)U)nD_UL?%n@rO2|O%z??35 zBo7hd5y}P(<xPMjsamw| zK2o{poo<=x0TUtzG!NYI@vPNJfVH(o=dZfC zttn?pjlJzZ;e8{xDfu(ASGAP5YyM{fuA0ySyx6yX)mkVM%XpYF@m05eo?M*+oQk$`-tX<=*${HZK~Cpr25{c38I$^ z_7!~*XWJarF1n$wQHBqn_FwmIeL_8fr?d8IRh0~|%otd>Ub64}F+(RTdsiJkdVT~d z7GCR#hmVYm9Q1vtU>3$<5Bp_JejI%cxrrMG*Yt0PtUt@^`4z%-2%&OgnH@~Rds8Mj zo`iy?IA~gTJZyO(dp3B_J%iyWJ!`a7iC^6Hndw^fqb=`(+|9OE-!v}#BW`2m3Fi#o zYD$HNF!TJg_I6h<-M;MfPpbPy^Rp^Z_g%wCx6m2CN%@%@D`Ya6)AYrtd5mw}CwKND zOuf{f3WO8*0Pl2%8Xp!ArSo4MW8np@m3t~WbsQB_AmD*)iR09>(QRRW)yZkrzwqs( zXm2-3E4C_E>I~Jm7aG@Xk!d4qx}^Kb}z3xYyri`KY{DzJ9yOMBU>tI1k7 za3HV?zB)A3BR(=-`c;EeP;dH_)0Wx1vmvq{3~WErsyD{gmfBs}Q0cC&21;(28*%@hj8&FnalR(h3u@XH}$0zTbXov;<$~k%!j_Z+S+hEaX~@C zv{qEeZ3DSaDSCP*g7t&G&_Bzs_N2yRnj()ZghNR z$H*9VYyo@GR{_8kW4GOkg~=^oJ?;-ffo)jW)wgZ_yDjFr_67zPXexBdfLAd>$eO7) z^DOxd5L8hiJ|@|tbRtn|!;G(;Zp#ZU}Ko;$KGmV{u0*U*No4j6228~b` z(UhgxnzHpl?-Ev8U}{C;N?6nAyWx3t&={oD-W{U}9Kop$X}>3T8=#7ysdt0TOXY1D QOF#H_1Sfo{m0!$%0K4WuRsaA1 literal 0 HcmV?d00001 diff --git a/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj b/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj index a53736e..64c9f0b 100644 --- a/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj +++ b/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj @@ -4,16 +4,21 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 6.0.0 - net5.0 + 7.0.0 + net6.0 ExtCore.Data.EntityFramework.MySql ExtCore.Data.EntityFramework.MySql - http://extcore.net/extcore_nuget_icon.png - http://extcore.net/ + icon.png + https://extcore.net/ + Apache-2.0 - + + + + + diff --git a/src/ExtCore.Data.EntityFramework.MySql/icon.png b/src/ExtCore.Data.EntityFramework.MySql/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..658aadfa4b42dc9573b7867b99b9d5a0ce54f25b GIT binary patch literal 3149 zcmaJ@c|4SB8-8XGp$_Q`ZKr8uEoR0tjw#D9GnVX2Mu#$Hh8bfPGb2mMgM1*g2s`LHv^}WCMeV^rbUDtg-&wahm?>*$=WV1qktvmo= zg`F+lP0|XN9yzGw?cnn%OVX?n5J&=dPJkec%%cGumE%u?+p)-jG&dTV8WD1bwjBT| z1jBl^A(P-rw9gV9GD8DlW$t#AVr+5m}?+!#Hy5!M)kH86pHyAYCS zJZb>e4Nv?QOENM;&;(C&HuJdk_|(KletK=K5A)6-+_*f{~yX? z{Xp{tZnS^%{hz{oj|eUe=|vr&l)GdF7FQA(PvbH6(x^lphXwz-WGv(7 zxmf*F?;Dr;^IWWd%0)_&K`s^czY6_*O5&cS?ho5a20x5XV@ur5li2#cbK+e9?|r@LKAvjVr@J)_GdG{;$=lJP8>E_(9}=O|Zi3riHG^2KES=MlwCiFBj(*9W z5w%(w@0w>mGcW1y^ zwh9e#x$3UVWm$sMS@{)5Es?;(W=D6|OCeB-weLA%sSfB)4y3_4qLfgSPp3)O0!usB z%G^9Fl_{;g3bQV5dce>0e2~BN7r@mBGRn#G4=rjiCpIdAGUU^PA|6yMwT_(J98leP z)BRa63=+LUKiGAp@DTonQLEA~@z+!y41UyZX6}qT2^Etz1>0_gsq=85c3dSob{ zEdhLe!K&B0u(-M2}bCn<$* zDy>lNs%WOW%X}E@EkFk4w%owAho;|?3u22OqGEJ{-1D{0y_zLUy@P_--&bj~-1B|p zW}?C@@MHS+HAszR;%WmUH``OIR%m$oUUnwh;g}j`2`QDDYi%B*SViOEJ}})o zi&FZYhS_wrecsxIzQ0l>_Mvn|Rw$@EA;QZRnt;pf2=eaOg;Y_@sb$#uB=Nc8#AXs< z_Wh_nzI-)qk2pqzaX4KR{ah9z)UZ!F4etw5B_ub$%C)8kW|aJOw0Xs&^Y)#&((4rt zizZ$^MGz@st=FP}m{ly|+rr0kn;)59?Hu4H&+jCunJ)U)nD_UL?%n@rO2|O%z??35 zBo7hd5y}P(<xPMjsamw| zK2o{poo<=x0TUtzG!NYI@vPNJfVH(o=dZfC zttn?pjlJzZ;e8{xDfu(ASGAP5YyM{fuA0ySyx6yX)mkVM%XpYF@m05eo?M*+oQk$`-tX<=*${HZK~Cpr25{c38I$^ z_7!~*XWJarF1n$wQHBqn_FwmIeL_8fr?d8IRh0~|%otd>Ub64}F+(RTdsiJkdVT~d z7GCR#hmVYm9Q1vtU>3$<5Bp_JejI%cxrrMG*Yt0PtUt@^`4z%-2%&OgnH@~Rds8Mj zo`iy?IA~gTJZyO(dp3B_J%iyWJ!`a7iC^6Hndw^fqb=`(+|9OE-!v}#BW`2m3Fi#o zYD$HNF!TJg_I6h<-M;MfPpbPy^Rp^Z_g%wCx6m2CN%@%@D`Ya6)AYrtd5mw}CwKND zOuf{f3WO8*0Pl2%8Xp!ArSo4MW8np@m3t~WbsQB_AmD*)iR09>(QRRW)yZkrzwqs( zXm2-3E4C_E>I~Jm7aG@Xk!d4qx}^Kb}z3xYyri`KY{DzJ9yOMBU>tI1k7 za3HV?zB)A3BR(=-`c;EeP;dH_)0Wx1vmvq{3~WErsyD{gmfBs}Q0cC&21;(28*%@hj8&FnalR(h3u@XH}$0zTbXov;<$~k%!j_Z+S+hEaX~@C zv{qEeZ3DSaDSCP*g7t&G&_Bzs_N2yRnj()ZghNR z$H*9VYyo@GR{_8kW4GOkg~=^oJ?;-ffo)jW)wgZ_yDjFr_67zPXexBdfLAd>$eO7) z^DOxd5L8hiJ|@|tbRtn|!;G(;Zp#ZU}Ko;$KGmV{u0*U*No4j6228~b` z(UhgxnzHpl?-Ev8U}{C;N?6nAyWx3t&={oD-W{U}9Kop$X}>3T8=#7ysdt0TOXY1D QOF#H_1Sfo{m0!$%0K4WuRsaA1 literal 0 HcmV?d00001 diff --git a/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj b/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj index def555f..2b17e19 100644 --- a/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj +++ b/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj @@ -4,16 +4,21 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 6.0.0 - net5.0 + 7.0.0 + net6.0 ExtCore.Data.EntityFramework.PostgreSql ExtCore.Data.EntityFramework.PostgreSql - http://extcore.net/extcore_nuget_icon.png - http://extcore.net/ + icon.png + https://extcore.net/ + Apache-2.0 - + + + + + diff --git a/src/ExtCore.Data.EntityFramework.PostgreSql/icon.png b/src/ExtCore.Data.EntityFramework.PostgreSql/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..658aadfa4b42dc9573b7867b99b9d5a0ce54f25b GIT binary patch literal 3149 zcmaJ@c|4SB8-8XGp$_Q`ZKr8uEoR0tjw#D9GnVX2Mu#$Hh8bfPGb2mMgM1*g2s`LHv^}WCMeV^rbUDtg-&wahm?>*$=WV1qktvmo= zg`F+lP0|XN9yzGw?cnn%OVX?n5J&=dPJkec%%cGumE%u?+p)-jG&dTV8WD1bwjBT| z1jBl^A(P-rw9gV9GD8DlW$t#AVr+5m}?+!#Hy5!M)kH86pHyAYCS zJZb>e4Nv?QOENM;&;(C&HuJdk_|(KletK=K5A)6-+_*f{~yX? z{Xp{tZnS^%{hz{oj|eUe=|vr&l)GdF7FQA(PvbH6(x^lphXwz-WGv(7 zxmf*F?;Dr;^IWWd%0)_&K`s^czY6_*O5&cS?ho5a20x5XV@ur5li2#cbK+e9?|r@LKAvjVr@J)_GdG{;$=lJP8>E_(9}=O|Zi3riHG^2KES=MlwCiFBj(*9W z5w%(w@0w>mGcW1y^ zwh9e#x$3UVWm$sMS@{)5Es?;(W=D6|OCeB-weLA%sSfB)4y3_4qLfgSPp3)O0!usB z%G^9Fl_{;g3bQV5dce>0e2~BN7r@mBGRn#G4=rjiCpIdAGUU^PA|6yMwT_(J98leP z)BRa63=+LUKiGAp@DTonQLEA~@z+!y41UyZX6}qT2^Etz1>0_gsq=85c3dSob{ zEdhLe!K&B0u(-M2}bCn<$* zDy>lNs%WOW%X}E@EkFk4w%owAho;|?3u22OqGEJ{-1D{0y_zLUy@P_--&bj~-1B|p zW}?C@@MHS+HAszR;%WmUH``OIR%m$oUUnwh;g}j`2`QDDYi%B*SViOEJ}})o zi&FZYhS_wrecsxIzQ0l>_Mvn|Rw$@EA;QZRnt;pf2=eaOg;Y_@sb$#uB=Nc8#AXs< z_Wh_nzI-)qk2pqzaX4KR{ah9z)UZ!F4etw5B_ub$%C)8kW|aJOw0Xs&^Y)#&((4rt zizZ$^MGz@st=FP}m{ly|+rr0kn;)59?Hu4H&+jCunJ)U)nD_UL?%n@rO2|O%z??35 zBo7hd5y}P(<xPMjsamw| zK2o{poo<=x0TUtzG!NYI@vPNJfVH(o=dZfC zttn?pjlJzZ;e8{xDfu(ASGAP5YyM{fuA0ySyx6yX)mkVM%XpYF@m05eo?M*+oQk$`-tX<=*${HZK~Cpr25{c38I$^ z_7!~*XWJarF1n$wQHBqn_FwmIeL_8fr?d8IRh0~|%otd>Ub64}F+(RTdsiJkdVT~d z7GCR#hmVYm9Q1vtU>3$<5Bp_JejI%cxrrMG*Yt0PtUt@^`4z%-2%&OgnH@~Rds8Mj zo`iy?IA~gTJZyO(dp3B_J%iyWJ!`a7iC^6Hndw^fqb=`(+|9OE-!v}#BW`2m3Fi#o zYD$HNF!TJg_I6h<-M;MfPpbPy^Rp^Z_g%wCx6m2CN%@%@D`Ya6)AYrtd5mw}CwKND zOuf{f3WO8*0Pl2%8Xp!ArSo4MW8np@m3t~WbsQB_AmD*)iR09>(QRRW)yZkrzwqs( zXm2-3E4C_E>I~Jm7aG@Xk!d4qx}^Kb}z3xYyri`KY{DzJ9yOMBU>tI1k7 za3HV?zB)A3BR(=-`c;EeP;dH_)0Wx1vmvq{3~WErsyD{gmfBs}Q0cC&21;(28*%@hj8&FnalR(h3u@XH}$0zTbXov;<$~k%!j_Z+S+hEaX~@C zv{qEeZ3DSaDSCP*g7t&G&_Bzs_N2yRnj()ZghNR z$H*9VYyo@GR{_8kW4GOkg~=^oJ?;-ffo)jW)wgZ_yDjFr_67zPXexBdfLAd>$eO7) z^DOxd5L8hiJ|@|tbRtn|!;G(;Zp#ZU}Ko;$KGmV{u0*U*No4j6228~b` z(UhgxnzHpl?-Ev8U}{C;N?6nAyWx3t&={oD-W{U}9Kop$X}>3T8=#7ysdt0TOXY1D QOF#H_1Sfo{m0!$%0K4WuRsaA1 literal 0 HcmV?d00001 diff --git a/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj b/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj index ae51991..e4efc15 100644 --- a/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj +++ b/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj @@ -4,16 +4,21 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 6.0.0 - net5.0 + 7.0.0 + net6.0 ExtCore.Data.EntityFramework.SqlServer ExtCore.Data.EntityFramework.SqlServer - http://extcore.net/extcore_nuget_icon.png - http://extcore.net/ + icon.png + https://extcore.net/ + Apache-2.0 - + + + + + diff --git a/src/ExtCore.Data.EntityFramework.SqlServer/icon.png b/src/ExtCore.Data.EntityFramework.SqlServer/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..658aadfa4b42dc9573b7867b99b9d5a0ce54f25b GIT binary patch literal 3149 zcmaJ@c|4SB8-8XGp$_Q`ZKr8uEoR0tjw#D9GnVX2Mu#$Hh8bfPGb2mMgM1*g2s`LHv^}WCMeV^rbUDtg-&wahm?>*$=WV1qktvmo= zg`F+lP0|XN9yzGw?cnn%OVX?n5J&=dPJkec%%cGumE%u?+p)-jG&dTV8WD1bwjBT| z1jBl^A(P-rw9gV9GD8DlW$t#AVr+5m}?+!#Hy5!M)kH86pHyAYCS zJZb>e4Nv?QOENM;&;(C&HuJdk_|(KletK=K5A)6-+_*f{~yX? z{Xp{tZnS^%{hz{oj|eUe=|vr&l)GdF7FQA(PvbH6(x^lphXwz-WGv(7 zxmf*F?;Dr;^IWWd%0)_&K`s^czY6_*O5&cS?ho5a20x5XV@ur5li2#cbK+e9?|r@LKAvjVr@J)_GdG{;$=lJP8>E_(9}=O|Zi3riHG^2KES=MlwCiFBj(*9W z5w%(w@0w>mGcW1y^ zwh9e#x$3UVWm$sMS@{)5Es?;(W=D6|OCeB-weLA%sSfB)4y3_4qLfgSPp3)O0!usB z%G^9Fl_{;g3bQV5dce>0e2~BN7r@mBGRn#G4=rjiCpIdAGUU^PA|6yMwT_(J98leP z)BRa63=+LUKiGAp@DTonQLEA~@z+!y41UyZX6}qT2^Etz1>0_gsq=85c3dSob{ zEdhLe!K&B0u(-M2}bCn<$* zDy>lNs%WOW%X}E@EkFk4w%owAho;|?3u22OqGEJ{-1D{0y_zLUy@P_--&bj~-1B|p zW}?C@@MHS+HAszR;%WmUH``OIR%m$oUUnwh;g}j`2`QDDYi%B*SViOEJ}})o zi&FZYhS_wrecsxIzQ0l>_Mvn|Rw$@EA;QZRnt;pf2=eaOg;Y_@sb$#uB=Nc8#AXs< z_Wh_nzI-)qk2pqzaX4KR{ah9z)UZ!F4etw5B_ub$%C)8kW|aJOw0Xs&^Y)#&((4rt zizZ$^MGz@st=FP}m{ly|+rr0kn;)59?Hu4H&+jCunJ)U)nD_UL?%n@rO2|O%z??35 zBo7hd5y}P(<xPMjsamw| zK2o{poo<=x0TUtzG!NYI@vPNJfVH(o=dZfC zttn?pjlJzZ;e8{xDfu(ASGAP5YyM{fuA0ySyx6yX)mkVM%XpYF@m05eo?M*+oQk$`-tX<=*${HZK~Cpr25{c38I$^ z_7!~*XWJarF1n$wQHBqn_FwmIeL_8fr?d8IRh0~|%otd>Ub64}F+(RTdsiJkdVT~d z7GCR#hmVYm9Q1vtU>3$<5Bp_JejI%cxrrMG*Yt0PtUt@^`4z%-2%&OgnH@~Rds8Mj zo`iy?IA~gTJZyO(dp3B_J%iyWJ!`a7iC^6Hndw^fqb=`(+|9OE-!v}#BW`2m3Fi#o zYD$HNF!TJg_I6h<-M;MfPpbPy^Rp^Z_g%wCx6m2CN%@%@D`Ya6)AYrtd5mw}CwKND zOuf{f3WO8*0Pl2%8Xp!ArSo4MW8np@m3t~WbsQB_AmD*)iR09>(QRRW)yZkrzwqs( zXm2-3E4C_E>I~Jm7aG@Xk!d4qx}^Kb}z3xYyri`KY{DzJ9yOMBU>tI1k7 za3HV?zB)A3BR(=-`c;EeP;dH_)0Wx1vmvq{3~WErsyD{gmfBs}Q0cC&21;(28*%@hj8&FnalR(h3u@XH}$0zTbXov;<$~k%!j_Z+S+hEaX~@C zv{qEeZ3DSaDSCP*g7t&G&_Bzs_N2yRnj()ZghNR z$H*9VYyo@GR{_8kW4GOkg~=^oJ?;-ffo)jW)wgZ_yDjFr_67zPXexBdfLAd>$eO7) z^DOxd5L8hiJ|@|tbRtn|!;G(;Zp#ZU}Ko;$KGmV{u0*U*No4j6228~b` z(UhgxnzHpl?-Ev8U}{C;N?6nAyWx3t&={oD-W{U}9Kop$X}>3T8=#7ysdt0TOXY1D QOF#H_1Sfo{m0!$%0K4WuRsaA1 literal 0 HcmV?d00001 diff --git a/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj b/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj index 93923d6..56e3a6b 100644 --- a/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj +++ b/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj @@ -4,16 +4,21 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 6.0.0 - net5.0 + 7.0.0 + net6.0 ExtCore.Data.EntityFramework.Sqlite ExtCore.Data.EntityFramework.Sqlite - http://extcore.net/extcore_nuget_icon.png - http://extcore.net/ + icon.png + https://extcore.net/ + Apache-2.0 - + + + + + diff --git a/src/ExtCore.Data.EntityFramework.Sqlite/icon.png b/src/ExtCore.Data.EntityFramework.Sqlite/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..658aadfa4b42dc9573b7867b99b9d5a0ce54f25b GIT binary patch literal 3149 zcmaJ@c|4SB8-8XGp$_Q`ZKr8uEoR0tjw#D9GnVX2Mu#$Hh8bfPGb2mMgM1*g2s`LHv^}WCMeV^rbUDtg-&wahm?>*$=WV1qktvmo= zg`F+lP0|XN9yzGw?cnn%OVX?n5J&=dPJkec%%cGumE%u?+p)-jG&dTV8WD1bwjBT| z1jBl^A(P-rw9gV9GD8DlW$t#AVr+5m}?+!#Hy5!M)kH86pHyAYCS zJZb>e4Nv?QOENM;&;(C&HuJdk_|(KletK=K5A)6-+_*f{~yX? z{Xp{tZnS^%{hz{oj|eUe=|vr&l)GdF7FQA(PvbH6(x^lphXwz-WGv(7 zxmf*F?;Dr;^IWWd%0)_&K`s^czY6_*O5&cS?ho5a20x5XV@ur5li2#cbK+e9?|r@LKAvjVr@J)_GdG{;$=lJP8>E_(9}=O|Zi3riHG^2KES=MlwCiFBj(*9W z5w%(w@0w>mGcW1y^ zwh9e#x$3UVWm$sMS@{)5Es?;(W=D6|OCeB-weLA%sSfB)4y3_4qLfgSPp3)O0!usB z%G^9Fl_{;g3bQV5dce>0e2~BN7r@mBGRn#G4=rjiCpIdAGUU^PA|6yMwT_(J98leP z)BRa63=+LUKiGAp@DTonQLEA~@z+!y41UyZX6}qT2^Etz1>0_gsq=85c3dSob{ zEdhLe!K&B0u(-M2}bCn<$* zDy>lNs%WOW%X}E@EkFk4w%owAho;|?3u22OqGEJ{-1D{0y_zLUy@P_--&bj~-1B|p zW}?C@@MHS+HAszR;%WmUH``OIR%m$oUUnwh;g}j`2`QDDYi%B*SViOEJ}})o zi&FZYhS_wrecsxIzQ0l>_Mvn|Rw$@EA;QZRnt;pf2=eaOg;Y_@sb$#uB=Nc8#AXs< z_Wh_nzI-)qk2pqzaX4KR{ah9z)UZ!F4etw5B_ub$%C)8kW|aJOw0Xs&^Y)#&((4rt zizZ$^MGz@st=FP}m{ly|+rr0kn;)59?Hu4H&+jCunJ)U)nD_UL?%n@rO2|O%z??35 zBo7hd5y}P(<xPMjsamw| zK2o{poo<=x0TUtzG!NYI@vPNJfVH(o=dZfC zttn?pjlJzZ;e8{xDfu(ASGAP5YyM{fuA0ySyx6yX)mkVM%XpYF@m05eo?M*+oQk$`-tX<=*${HZK~Cpr25{c38I$^ z_7!~*XWJarF1n$wQHBqn_FwmIeL_8fr?d8IRh0~|%otd>Ub64}F+(RTdsiJkdVT~d z7GCR#hmVYm9Q1vtU>3$<5Bp_JejI%cxrrMG*Yt0PtUt@^`4z%-2%&OgnH@~Rds8Mj zo`iy?IA~gTJZyO(dp3B_J%iyWJ!`a7iC^6Hndw^fqb=`(+|9OE-!v}#BW`2m3Fi#o zYD$HNF!TJg_I6h<-M;MfPpbPy^Rp^Z_g%wCx6m2CN%@%@D`Ya6)AYrtd5mw}CwKND zOuf{f3WO8*0Pl2%8Xp!ArSo4MW8np@m3t~WbsQB_AmD*)iR09>(QRRW)yZkrzwqs( zXm2-3E4C_E>I~Jm7aG@Xk!d4qx}^Kb}z3xYyri`KY{DzJ9yOMBU>tI1k7 za3HV?zB)A3BR(=-`c;EeP;dH_)0Wx1vmvq{3~WErsyD{gmfBs}Q0cC&21;(28*%@hj8&FnalR(h3u@XH}$0zTbXov;<$~k%!j_Z+S+hEaX~@C zv{qEeZ3DSaDSCP*g7t&G&_Bzs_N2yRnj()ZghNR z$H*9VYyo@GR{_8kW4GOkg~=^oJ?;-ffo)jW)wgZ_yDjFr_67zPXexBdfLAd>$eO7) z^DOxd5L8hiJ|@|tbRtn|!;G(;Zp#ZU}Ko;$KGmV{u0*U*No4j6228~b` z(UhgxnzHpl?-Ev8U}{C;N?6nAyWx3t&={oD-W{U}9Kop$X}>3T8=#7ysdt0TOXY1D QOF#H_1Sfo{m0!$%0K4WuRsaA1 literal 0 HcmV?d00001 diff --git a/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj b/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj index 0a90351..29d493b 100644 --- a/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj +++ b/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj @@ -4,16 +4,21 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 6.0.0 - net5.0 + 7.0.0 + net6.0 ExtCore.Data.EntityFramework ExtCore.Data.EntityFramework - http://extcore.net/extcore_nuget_icon.png - http://extcore.net/ + icon.png + https://extcore.net/ + Apache-2.0 - + + + + + diff --git a/src/ExtCore.Data.EntityFramework/Extension.cs b/src/ExtCore.Data.EntityFramework/Extension.cs index b0f8cdf..45daa09 100644 --- a/src/ExtCore.Data.EntityFramework/Extension.cs +++ b/src/ExtCore.Data.EntityFramework/Extension.cs @@ -19,12 +19,12 @@ public class Extension : ExtensionBase /// /// Gets the URL of the extension. /// - public override string Url => "http://extcore.net/"; + public override string Url => "https://extcore.net/"; /// /// Gets the version of the extension. /// - public override string Version => "6.0.0"; + public override string Version => "7.0.0"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Data.EntityFramework/icon.png b/src/ExtCore.Data.EntityFramework/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..658aadfa4b42dc9573b7867b99b9d5a0ce54f25b GIT binary patch literal 3149 zcmaJ@c|4SB8-8XGp$_Q`ZKr8uEoR0tjw#D9GnVX2Mu#$Hh8bfPGb2mMgM1*g2s`LHv^}WCMeV^rbUDtg-&wahm?>*$=WV1qktvmo= zg`F+lP0|XN9yzGw?cnn%OVX?n5J&=dPJkec%%cGumE%u?+p)-jG&dTV8WD1bwjBT| z1jBl^A(P-rw9gV9GD8DlW$t#AVr+5m}?+!#Hy5!M)kH86pHyAYCS zJZb>e4Nv?QOENM;&;(C&HuJdk_|(KletK=K5A)6-+_*f{~yX? z{Xp{tZnS^%{hz{oj|eUe=|vr&l)GdF7FQA(PvbH6(x^lphXwz-WGv(7 zxmf*F?;Dr;^IWWd%0)_&K`s^czY6_*O5&cS?ho5a20x5XV@ur5li2#cbK+e9?|r@LKAvjVr@J)_GdG{;$=lJP8>E_(9}=O|Zi3riHG^2KES=MlwCiFBj(*9W z5w%(w@0w>mGcW1y^ zwh9e#x$3UVWm$sMS@{)5Es?;(W=D6|OCeB-weLA%sSfB)4y3_4qLfgSPp3)O0!usB z%G^9Fl_{;g3bQV5dce>0e2~BN7r@mBGRn#G4=rjiCpIdAGUU^PA|6yMwT_(J98leP z)BRa63=+LUKiGAp@DTonQLEA~@z+!y41UyZX6}qT2^Etz1>0_gsq=85c3dSob{ zEdhLe!K&B0u(-M2}bCn<$* zDy>lNs%WOW%X}E@EkFk4w%owAho;|?3u22OqGEJ{-1D{0y_zLUy@P_--&bj~-1B|p zW}?C@@MHS+HAszR;%WmUH``OIR%m$oUUnwh;g}j`2`QDDYi%B*SViOEJ}})o zi&FZYhS_wrecsxIzQ0l>_Mvn|Rw$@EA;QZRnt;pf2=eaOg;Y_@sb$#uB=Nc8#AXs< z_Wh_nzI-)qk2pqzaX4KR{ah9z)UZ!F4etw5B_ub$%C)8kW|aJOw0Xs&^Y)#&((4rt zizZ$^MGz@st=FP}m{ly|+rr0kn;)59?Hu4H&+jCunJ)U)nD_UL?%n@rO2|O%z??35 zBo7hd5y}P(<xPMjsamw| zK2o{poo<=x0TUtzG!NYI@vPNJfVH(o=dZfC zttn?pjlJzZ;e8{xDfu(ASGAP5YyM{fuA0ySyx6yX)mkVM%XpYF@m05eo?M*+oQk$`-tX<=*${HZK~Cpr25{c38I$^ z_7!~*XWJarF1n$wQHBqn_FwmIeL_8fr?d8IRh0~|%otd>Ub64}F+(RTdsiJkdVT~d z7GCR#hmVYm9Q1vtU>3$<5Bp_JejI%cxrrMG*Yt0PtUt@^`4z%-2%&OgnH@~Rds8Mj zo`iy?IA~gTJZyO(dp3B_J%iyWJ!`a7iC^6Hndw^fqb=`(+|9OE-!v}#BW`2m3Fi#o zYD$HNF!TJg_I6h<-M;MfPpbPy^Rp^Z_g%wCx6m2CN%@%@D`Ya6)AYrtd5mw}CwKND zOuf{f3WO8*0Pl2%8Xp!ArSo4MW8np@m3t~WbsQB_AmD*)iR09>(QRRW)yZkrzwqs( zXm2-3E4C_E>I~Jm7aG@Xk!d4qx}^Kb}z3xYyri`KY{DzJ9yOMBU>tI1k7 za3HV?zB)A3BR(=-`c;EeP;dH_)0Wx1vmvq{3~WErsyD{gmfBs}Q0cC&21;(28*%@hj8&FnalR(h3u@XH}$0zTbXov;<$~k%!j_Z+S+hEaX~@C zv{qEeZ3DSaDSCP*g7t&G&_Bzs_N2yRnj()ZghNR z$H*9VYyo@GR{_8kW4GOkg~=^oJ?;-ffo)jW)wgZ_yDjFr_67zPXexBdfLAd>$eO7) z^DOxd5L8hiJ|@|tbRtn|!;G(;Zp#ZU}Ko;$KGmV{u0*U*No4j6228~b` z(UhgxnzHpl?-Ev8U}{C;N?6nAyWx3t&={oD-W{U}9Kop$X}>3T8=#7ysdt0TOXY1D QOF#H_1Sfo{m0!$%0K4WuRsaA1 literal 0 HcmV?d00001 diff --git a/src/ExtCore.Data/ExtCore.Data.csproj b/src/ExtCore.Data/ExtCore.Data.csproj index ea2044a..b54767a 100644 --- a/src/ExtCore.Data/ExtCore.Data.csproj +++ b/src/ExtCore.Data/ExtCore.Data.csproj @@ -4,14 +4,19 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data extension component. Based on the ExtCore framework. - 6.0.0 - net5.0 + 7.0.0 + net6.0 ExtCore.Data ExtCore.Data - http://extcore.net/extcore_nuget_icon.png - http://extcore.net/ + icon.png + https://extcore.net/ + Apache-2.0 + + + + diff --git a/src/ExtCore.Data/Extension.cs b/src/ExtCore.Data/Extension.cs index 7612805..c414eec 100644 --- a/src/ExtCore.Data/Extension.cs +++ b/src/ExtCore.Data/Extension.cs @@ -18,12 +18,12 @@ public class Extension : ExtensionBase /// /// Gets the URL of the extension. /// - public override string Url => "http://extcore.net/"; + public override string Url => "https://extcore.net/"; /// /// Gets the version of the extension. /// - public override string Version => "6.0.0"; + public override string Version => "7.0.0"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Data/icon.png b/src/ExtCore.Data/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..658aadfa4b42dc9573b7867b99b9d5a0ce54f25b GIT binary patch literal 3149 zcmaJ@c|4SB8-8XGp$_Q`ZKr8uEoR0tjw#D9GnVX2Mu#$Hh8bfPGb2mMgM1*g2s`LHv^}WCMeV^rbUDtg-&wahm?>*$=WV1qktvmo= zg`F+lP0|XN9yzGw?cnn%OVX?n5J&=dPJkec%%cGumE%u?+p)-jG&dTV8WD1bwjBT| z1jBl^A(P-rw9gV9GD8DlW$t#AVr+5m}?+!#Hy5!M)kH86pHyAYCS zJZb>e4Nv?QOENM;&;(C&HuJdk_|(KletK=K5A)6-+_*f{~yX? z{Xp{tZnS^%{hz{oj|eUe=|vr&l)GdF7FQA(PvbH6(x^lphXwz-WGv(7 zxmf*F?;Dr;^IWWd%0)_&K`s^czY6_*O5&cS?ho5a20x5XV@ur5li2#cbK+e9?|r@LKAvjVr@J)_GdG{;$=lJP8>E_(9}=O|Zi3riHG^2KES=MlwCiFBj(*9W z5w%(w@0w>mGcW1y^ zwh9e#x$3UVWm$sMS@{)5Es?;(W=D6|OCeB-weLA%sSfB)4y3_4qLfgSPp3)O0!usB z%G^9Fl_{;g3bQV5dce>0e2~BN7r@mBGRn#G4=rjiCpIdAGUU^PA|6yMwT_(J98leP z)BRa63=+LUKiGAp@DTonQLEA~@z+!y41UyZX6}qT2^Etz1>0_gsq=85c3dSob{ zEdhLe!K&B0u(-M2}bCn<$* zDy>lNs%WOW%X}E@EkFk4w%owAho;|?3u22OqGEJ{-1D{0y_zLUy@P_--&bj~-1B|p zW}?C@@MHS+HAszR;%WmUH``OIR%m$oUUnwh;g}j`2`QDDYi%B*SViOEJ}})o zi&FZYhS_wrecsxIzQ0l>_Mvn|Rw$@EA;QZRnt;pf2=eaOg;Y_@sb$#uB=Nc8#AXs< z_Wh_nzI-)qk2pqzaX4KR{ah9z)UZ!F4etw5B_ub$%C)8kW|aJOw0Xs&^Y)#&((4rt zizZ$^MGz@st=FP}m{ly|+rr0kn;)59?Hu4H&+jCunJ)U)nD_UL?%n@rO2|O%z??35 zBo7hd5y}P(<xPMjsamw| zK2o{poo<=x0TUtzG!NYI@vPNJfVH(o=dZfC zttn?pjlJzZ;e8{xDfu(ASGAP5YyM{fuA0ySyx6yX)mkVM%XpYF@m05eo?M*+oQk$`-tX<=*${HZK~Cpr25{c38I$^ z_7!~*XWJarF1n$wQHBqn_FwmIeL_8fr?d8IRh0~|%otd>Ub64}F+(RTdsiJkdVT~d z7GCR#hmVYm9Q1vtU>3$<5Bp_JejI%cxrrMG*Yt0PtUt@^`4z%-2%&OgnH@~Rds8Mj zo`iy?IA~gTJZyO(dp3B_J%iyWJ!`a7iC^6Hndw^fqb=`(+|9OE-!v}#BW`2m3Fi#o zYD$HNF!TJg_I6h<-M;MfPpbPy^Rp^Z_g%wCx6m2CN%@%@D`Ya6)AYrtd5mw}CwKND zOuf{f3WO8*0Pl2%8Xp!ArSo4MW8np@m3t~WbsQB_AmD*)iR09>(QRRW)yZkrzwqs( zXm2-3E4C_E>I~Jm7aG@Xk!d4qx}^Kb}z3xYyri`KY{DzJ9yOMBU>tI1k7 za3HV?zB)A3BR(=-`c;EeP;dH_)0Wx1vmvq{3~WErsyD{gmfBs}Q0cC&21;(28*%@hj8&FnalR(h3u@XH}$0zTbXov;<$~k%!j_Z+S+hEaX~@C zv{qEeZ3DSaDSCP*g7t&G&_Bzs_N2yRnj()ZghNR z$H*9VYyo@GR{_8kW4GOkg~=^oJ?;-ffo)jW)wgZ_yDjFr_67zPXexBdfLAd>$eO7) z^DOxd5L8hiJ|@|tbRtn|!;G(;Zp#ZU}Ko;$KGmV{u0*U*No4j6228~b` z(UhgxnzHpl?-Ev8U}{C;N?6nAyWx3t&={oD-W{U}9Kop$X}>3T8=#7ysdt0TOXY1D QOF#H_1Sfo{m0!$%0K4WuRsaA1 literal 0 HcmV?d00001 diff --git a/src/ExtCore.Events/ExtCore.Events.csproj b/src/ExtCore.Events/ExtCore.Events.csproj index 4009f41..1bf18ea 100644 --- a/src/ExtCore.Events/ExtCore.Events.csproj +++ b/src/ExtCore.Events/ExtCore.Events.csproj @@ -4,14 +4,19 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Events extension component. Based on the ExtCore framework. - 6.0.0 - net5.0 + 7.0.0 + net6.0 ExtCore.Events ExtCore.Events - http://extcore.net/extcore_nuget_icon.png - http://extcore.net/ + icon.png + https://extcore.net/ + Apache-2.0 + + + + diff --git a/src/ExtCore.Events/Extension.cs b/src/ExtCore.Events/Extension.cs index 3d0a505..4a3adee 100644 --- a/src/ExtCore.Events/Extension.cs +++ b/src/ExtCore.Events/Extension.cs @@ -18,12 +18,12 @@ public class Extension : ExtensionBase /// /// Gets the URL of the extension. /// - public override string Url => "http://extcore.net/"; + public override string Url => "https://extcore.net/"; /// /// Gets the version of the extension. /// - public override string Version => "6.0.0"; + public override string Version => "7.0.0"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Events/icon.png b/src/ExtCore.Events/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..658aadfa4b42dc9573b7867b99b9d5a0ce54f25b GIT binary patch literal 3149 zcmaJ@c|4SB8-8XGp$_Q`ZKr8uEoR0tjw#D9GnVX2Mu#$Hh8bfPGb2mMgM1*g2s`LHv^}WCMeV^rbUDtg-&wahm?>*$=WV1qktvmo= zg`F+lP0|XN9yzGw?cnn%OVX?n5J&=dPJkec%%cGumE%u?+p)-jG&dTV8WD1bwjBT| z1jBl^A(P-rw9gV9GD8DlW$t#AVr+5m}?+!#Hy5!M)kH86pHyAYCS zJZb>e4Nv?QOENM;&;(C&HuJdk_|(KletK=K5A)6-+_*f{~yX? z{Xp{tZnS^%{hz{oj|eUe=|vr&l)GdF7FQA(PvbH6(x^lphXwz-WGv(7 zxmf*F?;Dr;^IWWd%0)_&K`s^czY6_*O5&cS?ho5a20x5XV@ur5li2#cbK+e9?|r@LKAvjVr@J)_GdG{;$=lJP8>E_(9}=O|Zi3riHG^2KES=MlwCiFBj(*9W z5w%(w@0w>mGcW1y^ zwh9e#x$3UVWm$sMS@{)5Es?;(W=D6|OCeB-weLA%sSfB)4y3_4qLfgSPp3)O0!usB z%G^9Fl_{;g3bQV5dce>0e2~BN7r@mBGRn#G4=rjiCpIdAGUU^PA|6yMwT_(J98leP z)BRa63=+LUKiGAp@DTonQLEA~@z+!y41UyZX6}qT2^Etz1>0_gsq=85c3dSob{ zEdhLe!K&B0u(-M2}bCn<$* zDy>lNs%WOW%X}E@EkFk4w%owAho;|?3u22OqGEJ{-1D{0y_zLUy@P_--&bj~-1B|p zW}?C@@MHS+HAszR;%WmUH``OIR%m$oUUnwh;g}j`2`QDDYi%B*SViOEJ}})o zi&FZYhS_wrecsxIzQ0l>_Mvn|Rw$@EA;QZRnt;pf2=eaOg;Y_@sb$#uB=Nc8#AXs< z_Wh_nzI-)qk2pqzaX4KR{ah9z)UZ!F4etw5B_ub$%C)8kW|aJOw0Xs&^Y)#&((4rt zizZ$^MGz@st=FP}m{ly|+rr0kn;)59?Hu4H&+jCunJ)U)nD_UL?%n@rO2|O%z??35 zBo7hd5y}P(<xPMjsamw| zK2o{poo<=x0TUtzG!NYI@vPNJfVH(o=dZfC zttn?pjlJzZ;e8{xDfu(ASGAP5YyM{fuA0ySyx6yX)mkVM%XpYF@m05eo?M*+oQk$`-tX<=*${HZK~Cpr25{c38I$^ z_7!~*XWJarF1n$wQHBqn_FwmIeL_8fr?d8IRh0~|%otd>Ub64}F+(RTdsiJkdVT~d z7GCR#hmVYm9Q1vtU>3$<5Bp_JejI%cxrrMG*Yt0PtUt@^`4z%-2%&OgnH@~Rds8Mj zo`iy?IA~gTJZyO(dp3B_J%iyWJ!`a7iC^6Hndw^fqb=`(+|9OE-!v}#BW`2m3Fi#o zYD$HNF!TJg_I6h<-M;MfPpbPy^Rp^Z_g%wCx6m2CN%@%@D`Ya6)AYrtd5mw}CwKND zOuf{f3WO8*0Pl2%8Xp!ArSo4MW8np@m3t~WbsQB_AmD*)iR09>(QRRW)yZkrzwqs( zXm2-3E4C_E>I~Jm7aG@Xk!d4qx}^Kb}z3xYyri`KY{DzJ9yOMBU>tI1k7 za3HV?zB)A3BR(=-`c;EeP;dH_)0Wx1vmvq{3~WErsyD{gmfBs}Q0cC&21;(28*%@hj8&FnalR(h3u@XH}$0zTbXov;<$~k%!j_Z+S+hEaX~@C zv{qEeZ3DSaDSCP*g7t&G&_Bzs_N2yRnj()ZghNR z$H*9VYyo@GR{_8kW4GOkg~=^oJ?;-ffo)jW)wgZ_yDjFr_67zPXexBdfLAd>$eO7) z^DOxd5L8hiJ|@|tbRtn|!;G(;Zp#ZU}Ko;$KGmV{u0*U*No4j6228~b` z(UhgxnzHpl?-Ev8U}{C;N?6nAyWx3t&={oD-W{U}9Kop$X}>3T8=#7ysdt0TOXY1D QOF#H_1Sfo{m0!$%0K4WuRsaA1 literal 0 HcmV?d00001 diff --git a/src/ExtCore.FileStorage.Abstractions/ExtCore.FileStorage.Abstractions.csproj b/src/ExtCore.FileStorage.Abstractions/ExtCore.FileStorage.Abstractions.csproj index 2864430..f2d9621 100644 --- a/src/ExtCore.FileStorage.Abstractions/ExtCore.FileStorage.Abstractions.csproj +++ b/src/ExtCore.FileStorage.Abstractions/ExtCore.FileStorage.Abstractions.csproj @@ -4,12 +4,17 @@ Dmitry Sikorsky Copyright © 2018 Dmitry Sikorsky The ExtCore.FileStorage extension component. Based on the ExtCore framework. - 6.0.0 + 7.0.0 netstandard2.0 ExtCore.FileStorage.Abstractions ExtCore.FileStorage.Abstractions - http://extcore.net/extcore_nuget_icon.png - http://extcore.net/ + icon.png + https://extcore.net/ + Apache-2.0 + + + + diff --git a/src/ExtCore.FileStorage.Abstractions/icon.png b/src/ExtCore.FileStorage.Abstractions/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..658aadfa4b42dc9573b7867b99b9d5a0ce54f25b GIT binary patch literal 3149 zcmaJ@c|4SB8-8XGp$_Q`ZKr8uEoR0tjw#D9GnVX2Mu#$Hh8bfPGb2mMgM1*g2s`LHv^}WCMeV^rbUDtg-&wahm?>*$=WV1qktvmo= zg`F+lP0|XN9yzGw?cnn%OVX?n5J&=dPJkec%%cGumE%u?+p)-jG&dTV8WD1bwjBT| z1jBl^A(P-rw9gV9GD8DlW$t#AVr+5m}?+!#Hy5!M)kH86pHyAYCS zJZb>e4Nv?QOENM;&;(C&HuJdk_|(KletK=K5A)6-+_*f{~yX? z{Xp{tZnS^%{hz{oj|eUe=|vr&l)GdF7FQA(PvbH6(x^lphXwz-WGv(7 zxmf*F?;Dr;^IWWd%0)_&K`s^czY6_*O5&cS?ho5a20x5XV@ur5li2#cbK+e9?|r@LKAvjVr@J)_GdG{;$=lJP8>E_(9}=O|Zi3riHG^2KES=MlwCiFBj(*9W z5w%(w@0w>mGcW1y^ zwh9e#x$3UVWm$sMS@{)5Es?;(W=D6|OCeB-weLA%sSfB)4y3_4qLfgSPp3)O0!usB z%G^9Fl_{;g3bQV5dce>0e2~BN7r@mBGRn#G4=rjiCpIdAGUU^PA|6yMwT_(J98leP z)BRa63=+LUKiGAp@DTonQLEA~@z+!y41UyZX6}qT2^Etz1>0_gsq=85c3dSob{ zEdhLe!K&B0u(-M2}bCn<$* zDy>lNs%WOW%X}E@EkFk4w%owAho;|?3u22OqGEJ{-1D{0y_zLUy@P_--&bj~-1B|p zW}?C@@MHS+HAszR;%WmUH``OIR%m$oUUnwh;g}j`2`QDDYi%B*SViOEJ}})o zi&FZYhS_wrecsxIzQ0l>_Mvn|Rw$@EA;QZRnt;pf2=eaOg;Y_@sb$#uB=Nc8#AXs< z_Wh_nzI-)qk2pqzaX4KR{ah9z)UZ!F4etw5B_ub$%C)8kW|aJOw0Xs&^Y)#&((4rt zizZ$^MGz@st=FP}m{ly|+rr0kn;)59?Hu4H&+jCunJ)U)nD_UL?%n@rO2|O%z??35 zBo7hd5y}P(<xPMjsamw| zK2o{poo<=x0TUtzG!NYI@vPNJfVH(o=dZfC zttn?pjlJzZ;e8{xDfu(ASGAP5YyM{fuA0ySyx6yX)mkVM%XpYF@m05eo?M*+oQk$`-tX<=*${HZK~Cpr25{c38I$^ z_7!~*XWJarF1n$wQHBqn_FwmIeL_8fr?d8IRh0~|%otd>Ub64}F+(RTdsiJkdVT~d z7GCR#hmVYm9Q1vtU>3$<5Bp_JejI%cxrrMG*Yt0PtUt@^`4z%-2%&OgnH@~Rds8Mj zo`iy?IA~gTJZyO(dp3B_J%iyWJ!`a7iC^6Hndw^fqb=`(+|9OE-!v}#BW`2m3Fi#o zYD$HNF!TJg_I6h<-M;MfPpbPy^Rp^Z_g%wCx6m2CN%@%@D`Ya6)AYrtd5mw}CwKND zOuf{f3WO8*0Pl2%8Xp!ArSo4MW8np@m3t~WbsQB_AmD*)iR09>(QRRW)yZkrzwqs( zXm2-3E4C_E>I~Jm7aG@Xk!d4qx}^Kb}z3xYyri`KY{DzJ9yOMBU>tI1k7 za3HV?zB)A3BR(=-`c;EeP;dH_)0Wx1vmvq{3~WErsyD{gmfBs}Q0cC&21;(28*%@hj8&FnalR(h3u@XH}$0zTbXov;<$~k%!j_Z+S+hEaX~@C zv{qEeZ3DSaDSCP*g7t&G&_Bzs_N2yRnj()ZghNR z$H*9VYyo@GR{_8kW4GOkg~=^oJ?;-ffo)jW)wgZ_yDjFr_67zPXexBdfLAd>$eO7) z^DOxd5L8hiJ|@|tbRtn|!;G(;Zp#ZU}Ko;$KGmV{u0*U*No4j6228~b` z(UhgxnzHpl?-Ev8U}{C;N?6nAyWx3t&={oD-W{U}9Kop$X}>3T8=#7ysdt0TOXY1D QOF#H_1Sfo{m0!$%0K4WuRsaA1 literal 0 HcmV?d00001 diff --git a/src/ExtCore.FileStorage.Dropbox/ExtCore.FileStorage.Dropbox.csproj b/src/ExtCore.FileStorage.Dropbox/ExtCore.FileStorage.Dropbox.csproj index 3ff22c2..d2e5cd5 100644 --- a/src/ExtCore.FileStorage.Dropbox/ExtCore.FileStorage.Dropbox.csproj +++ b/src/ExtCore.FileStorage.Dropbox/ExtCore.FileStorage.Dropbox.csproj @@ -4,17 +4,22 @@ Dmitry Sikorsky Copyright © 2018 Dmitry Sikorsky The ExtCore.FileStorage extension component. Based on the ExtCore framework. - 6.0.0 + 7.0.0 netstandard2.0 ExtCore.FileStorage.Dropbox ExtCore.FileStorage.Dropbox - http://extcore.net/extcore_nuget_icon.png - http://extcore.net/ + icon.png + https://extcore.net/ + Apache-2.0 - - + + + + + + diff --git a/src/ExtCore.FileStorage.Dropbox/icon.png b/src/ExtCore.FileStorage.Dropbox/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..658aadfa4b42dc9573b7867b99b9d5a0ce54f25b GIT binary patch literal 3149 zcmaJ@c|4SB8-8XGp$_Q`ZKr8uEoR0tjw#D9GnVX2Mu#$Hh8bfPGb2mMgM1*g2s`LHv^}WCMeV^rbUDtg-&wahm?>*$=WV1qktvmo= zg`F+lP0|XN9yzGw?cnn%OVX?n5J&=dPJkec%%cGumE%u?+p)-jG&dTV8WD1bwjBT| z1jBl^A(P-rw9gV9GD8DlW$t#AVr+5m}?+!#Hy5!M)kH86pHyAYCS zJZb>e4Nv?QOENM;&;(C&HuJdk_|(KletK=K5A)6-+_*f{~yX? z{Xp{tZnS^%{hz{oj|eUe=|vr&l)GdF7FQA(PvbH6(x^lphXwz-WGv(7 zxmf*F?;Dr;^IWWd%0)_&K`s^czY6_*O5&cS?ho5a20x5XV@ur5li2#cbK+e9?|r@LKAvjVr@J)_GdG{;$=lJP8>E_(9}=O|Zi3riHG^2KES=MlwCiFBj(*9W z5w%(w@0w>mGcW1y^ zwh9e#x$3UVWm$sMS@{)5Es?;(W=D6|OCeB-weLA%sSfB)4y3_4qLfgSPp3)O0!usB z%G^9Fl_{;g3bQV5dce>0e2~BN7r@mBGRn#G4=rjiCpIdAGUU^PA|6yMwT_(J98leP z)BRa63=+LUKiGAp@DTonQLEA~@z+!y41UyZX6}qT2^Etz1>0_gsq=85c3dSob{ zEdhLe!K&B0u(-M2}bCn<$* zDy>lNs%WOW%X}E@EkFk4w%owAho;|?3u22OqGEJ{-1D{0y_zLUy@P_--&bj~-1B|p zW}?C@@MHS+HAszR;%WmUH``OIR%m$oUUnwh;g}j`2`QDDYi%B*SViOEJ}})o zi&FZYhS_wrecsxIzQ0l>_Mvn|Rw$@EA;QZRnt;pf2=eaOg;Y_@sb$#uB=Nc8#AXs< z_Wh_nzI-)qk2pqzaX4KR{ah9z)UZ!F4etw5B_ub$%C)8kW|aJOw0Xs&^Y)#&((4rt zizZ$^MGz@st=FP}m{ly|+rr0kn;)59?Hu4H&+jCunJ)U)nD_UL?%n@rO2|O%z??35 zBo7hd5y}P(<xPMjsamw| zK2o{poo<=x0TUtzG!NYI@vPNJfVH(o=dZfC zttn?pjlJzZ;e8{xDfu(ASGAP5YyM{fuA0ySyx6yX)mkVM%XpYF@m05eo?M*+oQk$`-tX<=*${HZK~Cpr25{c38I$^ z_7!~*XWJarF1n$wQHBqn_FwmIeL_8fr?d8IRh0~|%otd>Ub64}F+(RTdsiJkdVT~d z7GCR#hmVYm9Q1vtU>3$<5Bp_JejI%cxrrMG*Yt0PtUt@^`4z%-2%&OgnH@~Rds8Mj zo`iy?IA~gTJZyO(dp3B_J%iyWJ!`a7iC^6Hndw^fqb=`(+|9OE-!v}#BW`2m3Fi#o zYD$HNF!TJg_I6h<-M;MfPpbPy^Rp^Z_g%wCx6m2CN%@%@D`Ya6)AYrtd5mw}CwKND zOuf{f3WO8*0Pl2%8Xp!ArSo4MW8np@m3t~WbsQB_AmD*)iR09>(QRRW)yZkrzwqs( zXm2-3E4C_E>I~Jm7aG@Xk!d4qx}^Kb}z3xYyri`KY{DzJ9yOMBU>tI1k7 za3HV?zB)A3BR(=-`c;EeP;dH_)0Wx1vmvq{3~WErsyD{gmfBs}Q0cC&21;(28*%@hj8&FnalR(h3u@XH}$0zTbXov;<$~k%!j_Z+S+hEaX~@C zv{qEeZ3DSaDSCP*g7t&G&_Bzs_N2yRnj()ZghNR z$H*9VYyo@GR{_8kW4GOkg~=^oJ?;-ffo)jW)wgZ_yDjFr_67zPXexBdfLAd>$eO7) z^DOxd5L8hiJ|@|tbRtn|!;G(;Zp#ZU}Ko;$KGmV{u0*U*No4j6228~b` z(UhgxnzHpl?-Ev8U}{C;N?6nAyWx3t&={oD-W{U}9Kop$X}>3T8=#7ysdt0TOXY1D QOF#H_1Sfo{m0!$%0K4WuRsaA1 literal 0 HcmV?d00001 diff --git a/src/ExtCore.FileStorage.FileSystem/ExtCore.FileStorage.FileSystem.csproj b/src/ExtCore.FileStorage.FileSystem/ExtCore.FileStorage.FileSystem.csproj index 0cfceda..20c2383 100644 --- a/src/ExtCore.FileStorage.FileSystem/ExtCore.FileStorage.FileSystem.csproj +++ b/src/ExtCore.FileStorage.FileSystem/ExtCore.FileStorage.FileSystem.csproj @@ -4,16 +4,21 @@ Dmitry Sikorsky Copyright © 2018 Dmitry Sikorsky The ExtCore.FileStorage extension component. Based on the ExtCore framework. - 6.0.0 + 7.0.0 netstandard2.0 ExtCore.FileStorage.FileSystem ExtCore.FileStorage.FileSystem - http://extcore.net/extcore_nuget_icon.png - http://extcore.net/ + icon.png + https://extcore.net/ + Apache-2.0 - + + + + + diff --git a/src/ExtCore.FileStorage.FileSystem/icon.png b/src/ExtCore.FileStorage.FileSystem/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..658aadfa4b42dc9573b7867b99b9d5a0ce54f25b GIT binary patch literal 3149 zcmaJ@c|4SB8-8XGp$_Q`ZKr8uEoR0tjw#D9GnVX2Mu#$Hh8bfPGb2mMgM1*g2s`LHv^}WCMeV^rbUDtg-&wahm?>*$=WV1qktvmo= zg`F+lP0|XN9yzGw?cnn%OVX?n5J&=dPJkec%%cGumE%u?+p)-jG&dTV8WD1bwjBT| z1jBl^A(P-rw9gV9GD8DlW$t#AVr+5m}?+!#Hy5!M)kH86pHyAYCS zJZb>e4Nv?QOENM;&;(C&HuJdk_|(KletK=K5A)6-+_*f{~yX? z{Xp{tZnS^%{hz{oj|eUe=|vr&l)GdF7FQA(PvbH6(x^lphXwz-WGv(7 zxmf*F?;Dr;^IWWd%0)_&K`s^czY6_*O5&cS?ho5a20x5XV@ur5li2#cbK+e9?|r@LKAvjVr@J)_GdG{;$=lJP8>E_(9}=O|Zi3riHG^2KES=MlwCiFBj(*9W z5w%(w@0w>mGcW1y^ zwh9e#x$3UVWm$sMS@{)5Es?;(W=D6|OCeB-weLA%sSfB)4y3_4qLfgSPp3)O0!usB z%G^9Fl_{;g3bQV5dce>0e2~BN7r@mBGRn#G4=rjiCpIdAGUU^PA|6yMwT_(J98leP z)BRa63=+LUKiGAp@DTonQLEA~@z+!y41UyZX6}qT2^Etz1>0_gsq=85c3dSob{ zEdhLe!K&B0u(-M2}bCn<$* zDy>lNs%WOW%X}E@EkFk4w%owAho;|?3u22OqGEJ{-1D{0y_zLUy@P_--&bj~-1B|p zW}?C@@MHS+HAszR;%WmUH``OIR%m$oUUnwh;g}j`2`QDDYi%B*SViOEJ}})o zi&FZYhS_wrecsxIzQ0l>_Mvn|Rw$@EA;QZRnt;pf2=eaOg;Y_@sb$#uB=Nc8#AXs< z_Wh_nzI-)qk2pqzaX4KR{ah9z)UZ!F4etw5B_ub$%C)8kW|aJOw0Xs&^Y)#&((4rt zizZ$^MGz@st=FP}m{ly|+rr0kn;)59?Hu4H&+jCunJ)U)nD_UL?%n@rO2|O%z??35 zBo7hd5y}P(<xPMjsamw| zK2o{poo<=x0TUtzG!NYI@vPNJfVH(o=dZfC zttn?pjlJzZ;e8{xDfu(ASGAP5YyM{fuA0ySyx6yX)mkVM%XpYF@m05eo?M*+oQk$`-tX<=*${HZK~Cpr25{c38I$^ z_7!~*XWJarF1n$wQHBqn_FwmIeL_8fr?d8IRh0~|%otd>Ub64}F+(RTdsiJkdVT~d z7GCR#hmVYm9Q1vtU>3$<5Bp_JejI%cxrrMG*Yt0PtUt@^`4z%-2%&OgnH@~Rds8Mj zo`iy?IA~gTJZyO(dp3B_J%iyWJ!`a7iC^6Hndw^fqb=`(+|9OE-!v}#BW`2m3Fi#o zYD$HNF!TJg_I6h<-M;MfPpbPy^Rp^Z_g%wCx6m2CN%@%@D`Ya6)AYrtd5mw}CwKND zOuf{f3WO8*0Pl2%8Xp!ArSo4MW8np@m3t~WbsQB_AmD*)iR09>(QRRW)yZkrzwqs( zXm2-3E4C_E>I~Jm7aG@Xk!d4qx}^Kb}z3xYyri`KY{DzJ9yOMBU>tI1k7 za3HV?zB)A3BR(=-`c;EeP;dH_)0Wx1vmvq{3~WErsyD{gmfBs}Q0cC&21;(28*%@hj8&FnalR(h3u@XH}$0zTbXov;<$~k%!j_Z+S+hEaX~@C zv{qEeZ3DSaDSCP*g7t&G&_Bzs_N2yRnj()ZghNR z$H*9VYyo@GR{_8kW4GOkg~=^oJ?;-ffo)jW)wgZ_yDjFr_67zPXexBdfLAd>$eO7) z^DOxd5L8hiJ|@|tbRtn|!;G(;Zp#ZU}Ko;$KGmV{u0*U*No4j6228~b` z(UhgxnzHpl?-Ev8U}{C;N?6nAyWx3t&={oD-W{U}9Kop$X}>3T8=#7ysdt0TOXY1D QOF#H_1Sfo{m0!$%0K4WuRsaA1 literal 0 HcmV?d00001 diff --git a/src/ExtCore.FileStorage/ExtCore.FileStorage.csproj b/src/ExtCore.FileStorage/ExtCore.FileStorage.csproj index f0473f9..73ff198 100644 --- a/src/ExtCore.FileStorage/ExtCore.FileStorage.csproj +++ b/src/ExtCore.FileStorage/ExtCore.FileStorage.csproj @@ -4,14 +4,19 @@ Dmitry Sikorsky Copyright © 2018 Dmitry Sikorsky The ExtCore.FileStorage extension component. Based on the ExtCore framework. - 6.0.0 - net5.0 + 7.0.0 + net6.0 ExtCore.FileStorage ExtCore.FileStorage - http://extcore.net/extcore_nuget_icon.png - http://extcore.net/ + icon.png + https://extcore.net/ + Apache-2.0 + + + + diff --git a/src/ExtCore.FileStorage/Extension.cs b/src/ExtCore.FileStorage/Extension.cs index eba5594..646ee82 100644 --- a/src/ExtCore.FileStorage/Extension.cs +++ b/src/ExtCore.FileStorage/Extension.cs @@ -18,12 +18,12 @@ public class Extension : ExtensionBase /// /// Gets the URL of the extension. /// - public override string Url => "http://extcore.net/"; + public override string Url => "https://extcore.net/"; /// /// Gets the version of the extension. /// - public override string Version => "6.0.0"; + public override string Version => "7.0.0"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.FileStorage/icon.png b/src/ExtCore.FileStorage/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..658aadfa4b42dc9573b7867b99b9d5a0ce54f25b GIT binary patch literal 3149 zcmaJ@c|4SB8-8XGp$_Q`ZKr8uEoR0tjw#D9GnVX2Mu#$Hh8bfPGb2mMgM1*g2s`LHv^}WCMeV^rbUDtg-&wahm?>*$=WV1qktvmo= zg`F+lP0|XN9yzGw?cnn%OVX?n5J&=dPJkec%%cGumE%u?+p)-jG&dTV8WD1bwjBT| z1jBl^A(P-rw9gV9GD8DlW$t#AVr+5m}?+!#Hy5!M)kH86pHyAYCS zJZb>e4Nv?QOENM;&;(C&HuJdk_|(KletK=K5A)6-+_*f{~yX? z{Xp{tZnS^%{hz{oj|eUe=|vr&l)GdF7FQA(PvbH6(x^lphXwz-WGv(7 zxmf*F?;Dr;^IWWd%0)_&K`s^czY6_*O5&cS?ho5a20x5XV@ur5li2#cbK+e9?|r@LKAvjVr@J)_GdG{;$=lJP8>E_(9}=O|Zi3riHG^2KES=MlwCiFBj(*9W z5w%(w@0w>mGcW1y^ zwh9e#x$3UVWm$sMS@{)5Es?;(W=D6|OCeB-weLA%sSfB)4y3_4qLfgSPp3)O0!usB z%G^9Fl_{;g3bQV5dce>0e2~BN7r@mBGRn#G4=rjiCpIdAGUU^PA|6yMwT_(J98leP z)BRa63=+LUKiGAp@DTonQLEA~@z+!y41UyZX6}qT2^Etz1>0_gsq=85c3dSob{ zEdhLe!K&B0u(-M2}bCn<$* zDy>lNs%WOW%X}E@EkFk4w%owAho;|?3u22OqGEJ{-1D{0y_zLUy@P_--&bj~-1B|p zW}?C@@MHS+HAszR;%WmUH``OIR%m$oUUnwh;g}j`2`QDDYi%B*SViOEJ}})o zi&FZYhS_wrecsxIzQ0l>_Mvn|Rw$@EA;QZRnt;pf2=eaOg;Y_@sb$#uB=Nc8#AXs< z_Wh_nzI-)qk2pqzaX4KR{ah9z)UZ!F4etw5B_ub$%C)8kW|aJOw0Xs&^Y)#&((4rt zizZ$^MGz@st=FP}m{ly|+rr0kn;)59?Hu4H&+jCunJ)U)nD_UL?%n@rO2|O%z??35 zBo7hd5y}P(<xPMjsamw| zK2o{poo<=x0TUtzG!NYI@vPNJfVH(o=dZfC zttn?pjlJzZ;e8{xDfu(ASGAP5YyM{fuA0ySyx6yX)mkVM%XpYF@m05eo?M*+oQk$`-tX<=*${HZK~Cpr25{c38I$^ z_7!~*XWJarF1n$wQHBqn_FwmIeL_8fr?d8IRh0~|%otd>Ub64}F+(RTdsiJkdVT~d z7GCR#hmVYm9Q1vtU>3$<5Bp_JejI%cxrrMG*Yt0PtUt@^`4z%-2%&OgnH@~Rds8Mj zo`iy?IA~gTJZyO(dp3B_J%iyWJ!`a7iC^6Hndw^fqb=`(+|9OE-!v}#BW`2m3Fi#o zYD$HNF!TJg_I6h<-M;MfPpbPy^Rp^Z_g%wCx6m2CN%@%@D`Ya6)AYrtd5mw}CwKND zOuf{f3WO8*0Pl2%8Xp!ArSo4MW8np@m3t~WbsQB_AmD*)iR09>(QRRW)yZkrzwqs( zXm2-3E4C_E>I~Jm7aG@Xk!d4qx}^Kb}z3xYyri`KY{DzJ9yOMBU>tI1k7 za3HV?zB)A3BR(=-`c;EeP;dH_)0Wx1vmvq{3~WErsyD{gmfBs}Q0cC&21;(28*%@hj8&FnalR(h3u@XH}$0zTbXov;<$~k%!j_Z+S+hEaX~@C zv{qEeZ3DSaDSCP*g7t&G&_Bzs_N2yRnj()ZghNR z$H*9VYyo@GR{_8kW4GOkg~=^oJ?;-ffo)jW)wgZ_yDjFr_67zPXexBdfLAd>$eO7) z^DOxd5L8hiJ|@|tbRtn|!;G(;Zp#ZU}Ko;$KGmV{u0*U*No4j6228~b` z(UhgxnzHpl?-Ev8U}{C;N?6nAyWx3t&={oD-W{U}9Kop$X}>3T8=#7ysdt0TOXY1D QOF#H_1Sfo{m0!$%0K4WuRsaA1 literal 0 HcmV?d00001 diff --git a/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj b/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj index cbff3bb..fd797c1 100644 --- a/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj +++ b/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj @@ -4,14 +4,19 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky Free, open source and cross-platform framework for creating modular and extendable web applications based on ASP.NET Core. - 6.0.0 - net5.0 + 7.0.0 + net6.0 ExtCore.Infrastructure ExtCore.Infrastructure - http://extcore.net/extcore_nuget_icon.png - http://extcore.net/ + icon.png + https://extcore.net/ + Apache-2.0 + + + + diff --git a/src/ExtCore.Infrastructure/icon.png b/src/ExtCore.Infrastructure/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..658aadfa4b42dc9573b7867b99b9d5a0ce54f25b GIT binary patch literal 3149 zcmaJ@c|4SB8-8XGp$_Q`ZKr8uEoR0tjw#D9GnVX2Mu#$Hh8bfPGb2mMgM1*g2s`LHv^}WCMeV^rbUDtg-&wahm?>*$=WV1qktvmo= zg`F+lP0|XN9yzGw?cnn%OVX?n5J&=dPJkec%%cGumE%u?+p)-jG&dTV8WD1bwjBT| z1jBl^A(P-rw9gV9GD8DlW$t#AVr+5m}?+!#Hy5!M)kH86pHyAYCS zJZb>e4Nv?QOENM;&;(C&HuJdk_|(KletK=K5A)6-+_*f{~yX? z{Xp{tZnS^%{hz{oj|eUe=|vr&l)GdF7FQA(PvbH6(x^lphXwz-WGv(7 zxmf*F?;Dr;^IWWd%0)_&K`s^czY6_*O5&cS?ho5a20x5XV@ur5li2#cbK+e9?|r@LKAvjVr@J)_GdG{;$=lJP8>E_(9}=O|Zi3riHG^2KES=MlwCiFBj(*9W z5w%(w@0w>mGcW1y^ zwh9e#x$3UVWm$sMS@{)5Es?;(W=D6|OCeB-weLA%sSfB)4y3_4qLfgSPp3)O0!usB z%G^9Fl_{;g3bQV5dce>0e2~BN7r@mBGRn#G4=rjiCpIdAGUU^PA|6yMwT_(J98leP z)BRa63=+LUKiGAp@DTonQLEA~@z+!y41UyZX6}qT2^Etz1>0_gsq=85c3dSob{ zEdhLe!K&B0u(-M2}bCn<$* zDy>lNs%WOW%X}E@EkFk4w%owAho;|?3u22OqGEJ{-1D{0y_zLUy@P_--&bj~-1B|p zW}?C@@MHS+HAszR;%WmUH``OIR%m$oUUnwh;g}j`2`QDDYi%B*SViOEJ}})o zi&FZYhS_wrecsxIzQ0l>_Mvn|Rw$@EA;QZRnt;pf2=eaOg;Y_@sb$#uB=Nc8#AXs< z_Wh_nzI-)qk2pqzaX4KR{ah9z)UZ!F4etw5B_ub$%C)8kW|aJOw0Xs&^Y)#&((4rt zizZ$^MGz@st=FP}m{ly|+rr0kn;)59?Hu4H&+jCunJ)U)nD_UL?%n@rO2|O%z??35 zBo7hd5y}P(<xPMjsamw| zK2o{poo<=x0TUtzG!NYI@vPNJfVH(o=dZfC zttn?pjlJzZ;e8{xDfu(ASGAP5YyM{fuA0ySyx6yX)mkVM%XpYF@m05eo?M*+oQk$`-tX<=*${HZK~Cpr25{c38I$^ z_7!~*XWJarF1n$wQHBqn_FwmIeL_8fr?d8IRh0~|%otd>Ub64}F+(RTdsiJkdVT~d z7GCR#hmVYm9Q1vtU>3$<5Bp_JejI%cxrrMG*Yt0PtUt@^`4z%-2%&OgnH@~Rds8Mj zo`iy?IA~gTJZyO(dp3B_J%iyWJ!`a7iC^6Hndw^fqb=`(+|9OE-!v}#BW`2m3Fi#o zYD$HNF!TJg_I6h<-M;MfPpbPy^Rp^Z_g%wCx6m2CN%@%@D`Ya6)AYrtd5mw}CwKND zOuf{f3WO8*0Pl2%8Xp!ArSo4MW8np@m3t~WbsQB_AmD*)iR09>(QRRW)yZkrzwqs( zXm2-3E4C_E>I~Jm7aG@Xk!d4qx}^Kb}z3xYyri`KY{DzJ9yOMBU>tI1k7 za3HV?zB)A3BR(=-`c;EeP;dH_)0Wx1vmvq{3~WErsyD{gmfBs}Q0cC&21;(28*%@hj8&FnalR(h3u@XH}$0zTbXov;<$~k%!j_Z+S+hEaX~@C zv{qEeZ3DSaDSCP*g7t&G&_Bzs_N2yRnj()ZghNR z$H*9VYyo@GR{_8kW4GOkg~=^oJ?;-ffo)jW)wgZ_yDjFr_67zPXexBdfLAd>$eO7) z^DOxd5L8hiJ|@|tbRtn|!;G(;Zp#ZU}Ko;$KGmV{u0*U*No4j6228~b` z(UhgxnzHpl?-Ev8U}{C;N?6nAyWx3t&={oD-W{U}9Kop$X}>3T8=#7ysdt0TOXY1D QOF#H_1Sfo{m0!$%0K4WuRsaA1 literal 0 HcmV?d00001 diff --git a/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj b/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj index efce63d..e49510a 100644 --- a/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj +++ b/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj @@ -4,14 +4,19 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Mvc extension component. Based on the ExtCore framework. - 6.0.0 - net5.0 + 7.0.0 + net6.0 ExtCore.Mvc.Infrastructure ExtCore.Mvc.Infrastructure - http://extcore.net/extcore_nuget_icon.png - http://extcore.net/ + icon.png + https://extcore.net/ + Apache-2.0 + + + + diff --git a/src/ExtCore.Mvc.Infrastructure/icon.png b/src/ExtCore.Mvc.Infrastructure/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..658aadfa4b42dc9573b7867b99b9d5a0ce54f25b GIT binary patch literal 3149 zcmaJ@c|4SB8-8XGp$_Q`ZKr8uEoR0tjw#D9GnVX2Mu#$Hh8bfPGb2mMgM1*g2s`LHv^}WCMeV^rbUDtg-&wahm?>*$=WV1qktvmo= zg`F+lP0|XN9yzGw?cnn%OVX?n5J&=dPJkec%%cGumE%u?+p)-jG&dTV8WD1bwjBT| z1jBl^A(P-rw9gV9GD8DlW$t#AVr+5m}?+!#Hy5!M)kH86pHyAYCS zJZb>e4Nv?QOENM;&;(C&HuJdk_|(KletK=K5A)6-+_*f{~yX? z{Xp{tZnS^%{hz{oj|eUe=|vr&l)GdF7FQA(PvbH6(x^lphXwz-WGv(7 zxmf*F?;Dr;^IWWd%0)_&K`s^czY6_*O5&cS?ho5a20x5XV@ur5li2#cbK+e9?|r@LKAvjVr@J)_GdG{;$=lJP8>E_(9}=O|Zi3riHG^2KES=MlwCiFBj(*9W z5w%(w@0w>mGcW1y^ zwh9e#x$3UVWm$sMS@{)5Es?;(W=D6|OCeB-weLA%sSfB)4y3_4qLfgSPp3)O0!usB z%G^9Fl_{;g3bQV5dce>0e2~BN7r@mBGRn#G4=rjiCpIdAGUU^PA|6yMwT_(J98leP z)BRa63=+LUKiGAp@DTonQLEA~@z+!y41UyZX6}qT2^Etz1>0_gsq=85c3dSob{ zEdhLe!K&B0u(-M2}bCn<$* zDy>lNs%WOW%X}E@EkFk4w%owAho;|?3u22OqGEJ{-1D{0y_zLUy@P_--&bj~-1B|p zW}?C@@MHS+HAszR;%WmUH``OIR%m$oUUnwh;g}j`2`QDDYi%B*SViOEJ}})o zi&FZYhS_wrecsxIzQ0l>_Mvn|Rw$@EA;QZRnt;pf2=eaOg;Y_@sb$#uB=Nc8#AXs< z_Wh_nzI-)qk2pqzaX4KR{ah9z)UZ!F4etw5B_ub$%C)8kW|aJOw0Xs&^Y)#&((4rt zizZ$^MGz@st=FP}m{ly|+rr0kn;)59?Hu4H&+jCunJ)U)nD_UL?%n@rO2|O%z??35 zBo7hd5y}P(<xPMjsamw| zK2o{poo<=x0TUtzG!NYI@vPNJfVH(o=dZfC zttn?pjlJzZ;e8{xDfu(ASGAP5YyM{fuA0ySyx6yX)mkVM%XpYF@m05eo?M*+oQk$`-tX<=*${HZK~Cpr25{c38I$^ z_7!~*XWJarF1n$wQHBqn_FwmIeL_8fr?d8IRh0~|%otd>Ub64}F+(RTdsiJkdVT~d z7GCR#hmVYm9Q1vtU>3$<5Bp_JejI%cxrrMG*Yt0PtUt@^`4z%-2%&OgnH@~Rds8Mj zo`iy?IA~gTJZyO(dp3B_J%iyWJ!`a7iC^6Hndw^fqb=`(+|9OE-!v}#BW`2m3Fi#o zYD$HNF!TJg_I6h<-M;MfPpbPy^Rp^Z_g%wCx6m2CN%@%@D`Ya6)AYrtd5mw}CwKND zOuf{f3WO8*0Pl2%8Xp!ArSo4MW8np@m3t~WbsQB_AmD*)iR09>(QRRW)yZkrzwqs( zXm2-3E4C_E>I~Jm7aG@Xk!d4qx}^Kb}z3xYyri`KY{DzJ9yOMBU>tI1k7 za3HV?zB)A3BR(=-`c;EeP;dH_)0Wx1vmvq{3~WErsyD{gmfBs}Q0cC&21;(28*%@hj8&FnalR(h3u@XH}$0zTbXov;<$~k%!j_Z+S+hEaX~@C zv{qEeZ3DSaDSCP*g7t&G&_Bzs_N2yRnj()ZghNR z$H*9VYyo@GR{_8kW4GOkg~=^oJ?;-ffo)jW)wgZ_yDjFr_67zPXexBdfLAd>$eO7) z^DOxd5L8hiJ|@|tbRtn|!;G(;Zp#ZU}Ko;$KGmV{u0*U*No4j6228~b` z(UhgxnzHpl?-Ev8U}{C;N?6nAyWx3t&={oD-W{U}9Kop$X}>3T8=#7ysdt0TOXY1D QOF#H_1Sfo{m0!$%0K4WuRsaA1 literal 0 HcmV?d00001 diff --git a/src/ExtCore.Mvc/ExtCore.Mvc.csproj b/src/ExtCore.Mvc/ExtCore.Mvc.csproj index ce62906..df8db8d 100644 --- a/src/ExtCore.Mvc/ExtCore.Mvc.csproj +++ b/src/ExtCore.Mvc/ExtCore.Mvc.csproj @@ -4,16 +4,21 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Mvc extension component. Based on the ExtCore framework. - 6.0.0 - net5.0 + 7.0.0 + net6.0 ExtCore.Mvc ExtCore.Mvc - http://extcore.net/extcore_nuget_icon.png - http://extcore.net/ + icon.png + https://extcore.net/ + Apache-2.0 - + + + + + diff --git a/src/ExtCore.Mvc/Extension.cs b/src/ExtCore.Mvc/Extension.cs index ab1364e..ef2a14d 100644 --- a/src/ExtCore.Mvc/Extension.cs +++ b/src/ExtCore.Mvc/Extension.cs @@ -18,12 +18,12 @@ public class Extension : ExtensionBase /// /// Gets the URL of the extension. /// - public override string Url => "http://extcore.net/"; + public override string Url => "https://extcore.net/"; /// /// Gets the version of the extension. /// - public override string Version => "6.0.0"; + public override string Version => "7.0.0"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Mvc/icon.png b/src/ExtCore.Mvc/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..658aadfa4b42dc9573b7867b99b9d5a0ce54f25b GIT binary patch literal 3149 zcmaJ@c|4SB8-8XGp$_Q`ZKr8uEoR0tjw#D9GnVX2Mu#$Hh8bfPGb2mMgM1*g2s`LHv^}WCMeV^rbUDtg-&wahm?>*$=WV1qktvmo= zg`F+lP0|XN9yzGw?cnn%OVX?n5J&=dPJkec%%cGumE%u?+p)-jG&dTV8WD1bwjBT| z1jBl^A(P-rw9gV9GD8DlW$t#AVr+5m}?+!#Hy5!M)kH86pHyAYCS zJZb>e4Nv?QOENM;&;(C&HuJdk_|(KletK=K5A)6-+_*f{~yX? z{Xp{tZnS^%{hz{oj|eUe=|vr&l)GdF7FQA(PvbH6(x^lphXwz-WGv(7 zxmf*F?;Dr;^IWWd%0)_&K`s^czY6_*O5&cS?ho5a20x5XV@ur5li2#cbK+e9?|r@LKAvjVr@J)_GdG{;$=lJP8>E_(9}=O|Zi3riHG^2KES=MlwCiFBj(*9W z5w%(w@0w>mGcW1y^ zwh9e#x$3UVWm$sMS@{)5Es?;(W=D6|OCeB-weLA%sSfB)4y3_4qLfgSPp3)O0!usB z%G^9Fl_{;g3bQV5dce>0e2~BN7r@mBGRn#G4=rjiCpIdAGUU^PA|6yMwT_(J98leP z)BRa63=+LUKiGAp@DTonQLEA~@z+!y41UyZX6}qT2^Etz1>0_gsq=85c3dSob{ zEdhLe!K&B0u(-M2}bCn<$* zDy>lNs%WOW%X}E@EkFk4w%owAho;|?3u22OqGEJ{-1D{0y_zLUy@P_--&bj~-1B|p zW}?C@@MHS+HAszR;%WmUH``OIR%m$oUUnwh;g}j`2`QDDYi%B*SViOEJ}})o zi&FZYhS_wrecsxIzQ0l>_Mvn|Rw$@EA;QZRnt;pf2=eaOg;Y_@sb$#uB=Nc8#AXs< z_Wh_nzI-)qk2pqzaX4KR{ah9z)UZ!F4etw5B_ub$%C)8kW|aJOw0Xs&^Y)#&((4rt zizZ$^MGz@st=FP}m{ly|+rr0kn;)59?Hu4H&+jCunJ)U)nD_UL?%n@rO2|O%z??35 zBo7hd5y}P(<xPMjsamw| zK2o{poo<=x0TUtzG!NYI@vPNJfVH(o=dZfC zttn?pjlJzZ;e8{xDfu(ASGAP5YyM{fuA0ySyx6yX)mkVM%XpYF@m05eo?M*+oQk$`-tX<=*${HZK~Cpr25{c38I$^ z_7!~*XWJarF1n$wQHBqn_FwmIeL_8fr?d8IRh0~|%otd>Ub64}F+(RTdsiJkdVT~d z7GCR#hmVYm9Q1vtU>3$<5Bp_JejI%cxrrMG*Yt0PtUt@^`4z%-2%&OgnH@~Rds8Mj zo`iy?IA~gTJZyO(dp3B_J%iyWJ!`a7iC^6Hndw^fqb=`(+|9OE-!v}#BW`2m3Fi#o zYD$HNF!TJg_I6h<-M;MfPpbPy^Rp^Z_g%wCx6m2CN%@%@D`Ya6)AYrtd5mw}CwKND zOuf{f3WO8*0Pl2%8Xp!ArSo4MW8np@m3t~WbsQB_AmD*)iR09>(QRRW)yZkrzwqs( zXm2-3E4C_E>I~Jm7aG@Xk!d4qx}^Kb}z3xYyri`KY{DzJ9yOMBU>tI1k7 za3HV?zB)A3BR(=-`c;EeP;dH_)0Wx1vmvq{3~WErsyD{gmfBs}Q0cC&21;(28*%@hj8&FnalR(h3u@XH}$0zTbXov;<$~k%!j_Z+S+hEaX~@C zv{qEeZ3DSaDSCP*g7t&G&_Bzs_N2yRnj()ZghNR z$H*9VYyo@GR{_8kW4GOkg~=^oJ?;-ffo)jW)wgZ_yDjFr_67zPXexBdfLAd>$eO7) z^DOxd5L8hiJ|@|tbRtn|!;G(;Zp#ZU}Ko;$KGmV{u0*U*No4j6228~b` z(UhgxnzHpl?-Ev8U}{C;N?6nAyWx3t&={oD-W{U}9Kop$X}>3T8=#7ysdt0TOXY1D QOF#H_1Sfo{m0!$%0K4WuRsaA1 literal 0 HcmV?d00001 diff --git a/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj b/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj index 1545824..110985a 100644 --- a/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj +++ b/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj @@ -4,16 +4,21 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky Free, open source and cross-platform framework for creating modular and extendable web applications based on ASP.NET Core. - 6.0.0 - net5.0 + 7.0.0 + net6.0 ExtCore.WebApplication ExtCore.WebApplication - http://extcore.net/extcore_nuget_icon.png - http://extcore.net/ + icon.png + https://extcore.net/ + Apache-2.0 - + + + + + diff --git a/src/ExtCore.WebApplication/icon.png b/src/ExtCore.WebApplication/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..658aadfa4b42dc9573b7867b99b9d5a0ce54f25b GIT binary patch literal 3149 zcmaJ@c|4SB8-8XGp$_Q`ZKr8uEoR0tjw#D9GnVX2Mu#$Hh8bfPGb2mMgM1*g2s`LHv^}WCMeV^rbUDtg-&wahm?>*$=WV1qktvmo= zg`F+lP0|XN9yzGw?cnn%OVX?n5J&=dPJkec%%cGumE%u?+p)-jG&dTV8WD1bwjBT| z1jBl^A(P-rw9gV9GD8DlW$t#AVr+5m}?+!#Hy5!M)kH86pHyAYCS zJZb>e4Nv?QOENM;&;(C&HuJdk_|(KletK=K5A)6-+_*f{~yX? z{Xp{tZnS^%{hz{oj|eUe=|vr&l)GdF7FQA(PvbH6(x^lphXwz-WGv(7 zxmf*F?;Dr;^IWWd%0)_&K`s^czY6_*O5&cS?ho5a20x5XV@ur5li2#cbK+e9?|r@LKAvjVr@J)_GdG{;$=lJP8>E_(9}=O|Zi3riHG^2KES=MlwCiFBj(*9W z5w%(w@0w>mGcW1y^ zwh9e#x$3UVWm$sMS@{)5Es?;(W=D6|OCeB-weLA%sSfB)4y3_4qLfgSPp3)O0!usB z%G^9Fl_{;g3bQV5dce>0e2~BN7r@mBGRn#G4=rjiCpIdAGUU^PA|6yMwT_(J98leP z)BRa63=+LUKiGAp@DTonQLEA~@z+!y41UyZX6}qT2^Etz1>0_gsq=85c3dSob{ zEdhLe!K&B0u(-M2}bCn<$* zDy>lNs%WOW%X}E@EkFk4w%owAho;|?3u22OqGEJ{-1D{0y_zLUy@P_--&bj~-1B|p zW}?C@@MHS+HAszR;%WmUH``OIR%m$oUUnwh;g}j`2`QDDYi%B*SViOEJ}})o zi&FZYhS_wrecsxIzQ0l>_Mvn|Rw$@EA;QZRnt;pf2=eaOg;Y_@sb$#uB=Nc8#AXs< z_Wh_nzI-)qk2pqzaX4KR{ah9z)UZ!F4etw5B_ub$%C)8kW|aJOw0Xs&^Y)#&((4rt zizZ$^MGz@st=FP}m{ly|+rr0kn;)59?Hu4H&+jCunJ)U)nD_UL?%n@rO2|O%z??35 zBo7hd5y}P(<xPMjsamw| zK2o{poo<=x0TUtzG!NYI@vPNJfVH(o=dZfC zttn?pjlJzZ;e8{xDfu(ASGAP5YyM{fuA0ySyx6yX)mkVM%XpYF@m05eo?M*+oQk$`-tX<=*${HZK~Cpr25{c38I$^ z_7!~*XWJarF1n$wQHBqn_FwmIeL_8fr?d8IRh0~|%otd>Ub64}F+(RTdsiJkdVT~d z7GCR#hmVYm9Q1vtU>3$<5Bp_JejI%cxrrMG*Yt0PtUt@^`4z%-2%&OgnH@~Rds8Mj zo`iy?IA~gTJZyO(dp3B_J%iyWJ!`a7iC^6Hndw^fqb=`(+|9OE-!v}#BW`2m3Fi#o zYD$HNF!TJg_I6h<-M;MfPpbPy^Rp^Z_g%wCx6m2CN%@%@D`Ya6)AYrtd5mw}CwKND zOuf{f3WO8*0Pl2%8Xp!ArSo4MW8np@m3t~WbsQB_AmD*)iR09>(QRRW)yZkrzwqs( zXm2-3E4C_E>I~Jm7aG@Xk!d4qx}^Kb}z3xYyri`KY{DzJ9yOMBU>tI1k7 za3HV?zB)A3BR(=-`c;EeP;dH_)0Wx1vmvq{3~WErsyD{gmfBs}Q0cC&21;(28*%@hj8&FnalR(h3u@XH}$0zTbXov;<$~k%!j_Z+S+hEaX~@C zv{qEeZ3DSaDSCP*g7t&G&_Bzs_N2yRnj()ZghNR z$H*9VYyo@GR{_8kW4GOkg~=^oJ?;-ffo)jW)wgZ_yDjFr_67zPXexBdfLAd>$eO7) z^DOxd5L8hiJ|@|tbRtn|!;G(;Zp#ZU}Ko;$KGmV{u0*U*No4j6228~b` z(UhgxnzHpl?-Ev8U}{C;N?6nAyWx3t&={oD-W{U}9Kop$X}>3T8=#7ysdt0TOXY1D QOF#H_1Sfo{m0!$%0K4WuRsaA1 literal 0 HcmV?d00001 From e9aca74cd646f7f02f439f8dab4c293fe1ad5e33 Mon Sep 17 00:00:00 2001 From: Dmitry Sikorsky Date: Fri, 29 Apr 2022 16:01:30 +0300 Subject: [PATCH 61/81] Fixed file storage services bug --- README.md | 2 +- .../ExtCore.Data.Abstractions.csproj | 2 +- .../ExtCore.Data.Dapper.MySql.csproj | 2 +- .../ExtCore.Data.Dapper.PostgreSql.csproj | 2 +- .../ExtCore.Data.Dapper.SqlServer.csproj | 2 +- .../ExtCore.Data.Dapper.Sqlite.csproj | 2 +- .../ExtCore.Data.Dapper.csproj | 2 +- src/ExtCore.Data.Dapper/Extension.cs | 2 +- .../ExtCore.Data.Entities.Abstractions.csproj | 2 +- .../ExtCore.Data.EntityFramework.MySql.csproj | 2 +- ...ore.Data.EntityFramework.PostgreSql.csproj | 2 +- ...Core.Data.EntityFramework.SqlServer.csproj | 2 +- ...ExtCore.Data.EntityFramework.Sqlite.csproj | 2 +- .../ExtCore.Data.EntityFramework.csproj | 2 +- src/ExtCore.Data.EntityFramework/Extension.cs | 2 +- src/ExtCore.Data/ExtCore.Data.csproj | 2 +- src/ExtCore.Data/Extension.cs | 2 +- src/ExtCore.Events/ExtCore.Events.csproj | 2 +- src/ExtCore.Events/Extension.cs | 2 +- .../ExtCore.FileStorage.Abstractions.csproj | 2 +- .../ExtCore.FileStorage.Dropbox.csproj | 2 +- .../ExtCore.FileStorage.FileSystem.csproj | 2 +- .../Actions/AddDirectoryProxyAction.cs | 50 ------------------- .../Actions/AddFileProxyAction.cs | 50 ------------------- .../ExtCore.FileStorage.csproj | 2 +- src/ExtCore.FileStorage/Extension.cs | 2 +- .../ExtCore.Infrastructure.csproj | 2 +- .../ExtCore.Mvc.Infrastructure.csproj | 2 +- src/ExtCore.Mvc/ExtCore.Mvc.csproj | 2 +- src/ExtCore.Mvc/Extension.cs | 2 +- .../ExtCore.WebApplication.csproj | 2 +- 31 files changed, 29 insertions(+), 129 deletions(-) delete mode 100644 src/ExtCore.FileStorage/Actions/AddDirectoryProxyAction.cs delete mode 100644 src/ExtCore.FileStorage/Actions/AddFileProxyAction.cs diff --git a/README.md b/README.md index 5bbc9de..89826ba 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# ExtCore 7.0.0 +# ExtCore 7.0.1 [![Join the chat at https://gitter.im/ExtCore/ExtCore](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/ExtCore/ExtCore?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) diff --git a/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj b/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj index c9ad858..d68c838 100644 --- a/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj +++ b/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data extension component. Based on the ExtCore framework. - 7.0.0 + 7.0.1 netstandard2.0 ExtCore.Data.Abstractions ExtCore.Data.Abstractions diff --git a/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj b/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj index 355c18f..633cf00 100644 --- a/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj +++ b/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 7.0.0 + 7.0.1 net6.0 ExtCore.Data.Dapper.MySql ExtCore.Data.Dapper.MySql diff --git a/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj b/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj index edf0295..2306694 100644 --- a/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj +++ b/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 7.0.0 + 7.0.1 net6.0 ExtCore.Data.Dapper.PostgreSql ExtCore.Data.Dapper.PostgreSql diff --git a/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj b/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj index 6506a23..1d87210 100644 --- a/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj +++ b/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 7.0.0 + 7.0.1 net6.0 ExtCore.Data.Dapper.SqlServer ExtCore.Data.Dapper.SqlServer diff --git a/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj b/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj index 0ef691d..526e4ef 100644 --- a/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj +++ b/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 7.0.0 + 7.0.1 net6.0 ExtCore.Data.Dapper.Sqlite ExtCore.Data.Dapper.Sqlite diff --git a/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj b/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj index 1003381..b5c5c93 100644 --- a/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj +++ b/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 7.0.0 + 7.0.1 net6.0 ExtCore.Data.Dapper ExtCore.Data.Dapper diff --git a/src/ExtCore.Data.Dapper/Extension.cs b/src/ExtCore.Data.Dapper/Extension.cs index f1b1a5e..0ead8cf 100644 --- a/src/ExtCore.Data.Dapper/Extension.cs +++ b/src/ExtCore.Data.Dapper/Extension.cs @@ -24,7 +24,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "7.0.0"; + public override string Version => "7.0.1"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj b/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj index 2f65567..d332c57 100644 --- a/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj +++ b/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data extension component. Based on the ExtCore framework. - 7.0.0 + 7.0.1 netstandard2.0 ExtCore.Data.Entities.Abstractions ExtCore.Data.Entities.Abstractions diff --git a/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj b/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj index 64c9f0b..4046b6a 100644 --- a/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj +++ b/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 7.0.0 + 7.0.1 net6.0 ExtCore.Data.EntityFramework.MySql ExtCore.Data.EntityFramework.MySql diff --git a/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj b/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj index 2b17e19..a247b1d 100644 --- a/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj +++ b/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 7.0.0 + 7.0.1 net6.0 ExtCore.Data.EntityFramework.PostgreSql ExtCore.Data.EntityFramework.PostgreSql diff --git a/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj b/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj index e4efc15..13e0955 100644 --- a/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj +++ b/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 7.0.0 + 7.0.1 net6.0 ExtCore.Data.EntityFramework.SqlServer ExtCore.Data.EntityFramework.SqlServer diff --git a/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj b/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj index 56e3a6b..5980ba0 100644 --- a/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj +++ b/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 7.0.0 + 7.0.1 net6.0 ExtCore.Data.EntityFramework.Sqlite ExtCore.Data.EntityFramework.Sqlite diff --git a/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj b/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj index 29d493b..1881065 100644 --- a/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj +++ b/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 7.0.0 + 7.0.1 net6.0 ExtCore.Data.EntityFramework ExtCore.Data.EntityFramework diff --git a/src/ExtCore.Data.EntityFramework/Extension.cs b/src/ExtCore.Data.EntityFramework/Extension.cs index 45daa09..f69b897 100644 --- a/src/ExtCore.Data.EntityFramework/Extension.cs +++ b/src/ExtCore.Data.EntityFramework/Extension.cs @@ -24,7 +24,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "7.0.0"; + public override string Version => "7.0.1"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Data/ExtCore.Data.csproj b/src/ExtCore.Data/ExtCore.Data.csproj index b54767a..3be4bca 100644 --- a/src/ExtCore.Data/ExtCore.Data.csproj +++ b/src/ExtCore.Data/ExtCore.Data.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data extension component. Based on the ExtCore framework. - 7.0.0 + 7.0.1 net6.0 ExtCore.Data ExtCore.Data diff --git a/src/ExtCore.Data/Extension.cs b/src/ExtCore.Data/Extension.cs index c414eec..26adc18 100644 --- a/src/ExtCore.Data/Extension.cs +++ b/src/ExtCore.Data/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "7.0.0"; + public override string Version => "7.0.1"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Events/ExtCore.Events.csproj b/src/ExtCore.Events/ExtCore.Events.csproj index 1bf18ea..eb10097 100644 --- a/src/ExtCore.Events/ExtCore.Events.csproj +++ b/src/ExtCore.Events/ExtCore.Events.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Events extension component. Based on the ExtCore framework. - 7.0.0 + 7.0.1 net6.0 ExtCore.Events ExtCore.Events diff --git a/src/ExtCore.Events/Extension.cs b/src/ExtCore.Events/Extension.cs index 4a3adee..178e941 100644 --- a/src/ExtCore.Events/Extension.cs +++ b/src/ExtCore.Events/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "7.0.0"; + public override string Version => "7.0.1"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.FileStorage.Abstractions/ExtCore.FileStorage.Abstractions.csproj b/src/ExtCore.FileStorage.Abstractions/ExtCore.FileStorage.Abstractions.csproj index f2d9621..6ffec1b 100644 --- a/src/ExtCore.FileStorage.Abstractions/ExtCore.FileStorage.Abstractions.csproj +++ b/src/ExtCore.FileStorage.Abstractions/ExtCore.FileStorage.Abstractions.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2018 Dmitry Sikorsky The ExtCore.FileStorage extension component. Based on the ExtCore framework. - 7.0.0 + 7.0.1 netstandard2.0 ExtCore.FileStorage.Abstractions ExtCore.FileStorage.Abstractions diff --git a/src/ExtCore.FileStorage.Dropbox/ExtCore.FileStorage.Dropbox.csproj b/src/ExtCore.FileStorage.Dropbox/ExtCore.FileStorage.Dropbox.csproj index d2e5cd5..2482bac 100644 --- a/src/ExtCore.FileStorage.Dropbox/ExtCore.FileStorage.Dropbox.csproj +++ b/src/ExtCore.FileStorage.Dropbox/ExtCore.FileStorage.Dropbox.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2018 Dmitry Sikorsky The ExtCore.FileStorage extension component. Based on the ExtCore framework. - 7.0.0 + 7.0.1 netstandard2.0 ExtCore.FileStorage.Dropbox ExtCore.FileStorage.Dropbox diff --git a/src/ExtCore.FileStorage.FileSystem/ExtCore.FileStorage.FileSystem.csproj b/src/ExtCore.FileStorage.FileSystem/ExtCore.FileStorage.FileSystem.csproj index 20c2383..5a3753b 100644 --- a/src/ExtCore.FileStorage.FileSystem/ExtCore.FileStorage.FileSystem.csproj +++ b/src/ExtCore.FileStorage.FileSystem/ExtCore.FileStorage.FileSystem.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2018 Dmitry Sikorsky The ExtCore.FileStorage extension component. Based on the ExtCore framework. - 7.0.0 + 7.0.1 netstandard2.0 ExtCore.FileStorage.FileSystem ExtCore.FileStorage.FileSystem diff --git a/src/ExtCore.FileStorage/Actions/AddDirectoryProxyAction.cs b/src/ExtCore.FileStorage/Actions/AddDirectoryProxyAction.cs deleted file mode 100644 index b7111f4..0000000 --- a/src/ExtCore.FileStorage/Actions/AddDirectoryProxyAction.cs +++ /dev/null @@ -1,50 +0,0 @@ -// Copyright © 2018 Dmitry Sikorsky. All rights reserved. -// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. - -using System; -using System.Linq; -using System.Reflection; -using ExtCore.FileStorage.Abstractions; -using ExtCore.Infrastructure; -using ExtCore.Infrastructure.Actions; -using Microsoft.Extensions.DependencyInjection; -using Microsoft.Extensions.Logging; - -namespace ExtCore.FileStorage.Actions -{ - /// - /// Implements the IConfigureServicesAction interface and - /// registers found implementation of the IDirectoryProxy interface inside the DI. - /// - public class AddDirectoryProxyAction : IConfigureServicesAction - { - /// - /// Priority of the action. The actions will be executed in the order specified by the priority (from smallest to largest). - /// - public int Priority => 1000; - - /// - /// Registers found implementation of the IDirectoryProxy interface inside the DI. - /// - /// - /// Will be provided by the ExtCore and might be used to register any service inside the DI. - /// - /// - /// Will be provided by the ExtCore and might be used to get any service that is registered inside the DI at this moment. - /// - public void Execute(IServiceCollection services, IServiceProvider serviceProvider) - { - Type type = ExtensionManager.GetImplementations()?.FirstOrDefault(t => !t.GetTypeInfo().IsAbstract); - - if (type == null) - { - ILogger logger = serviceProvider.GetService().CreateLogger("ExtCore.FileStorage"); - - logger.LogError("Implementation of ExtCore.FileStorage.Abstractions.IDirectoryProxy not found"); - return; - } - - services.AddScoped(typeof(IDirectoryProxy), type); - } - } -} \ No newline at end of file diff --git a/src/ExtCore.FileStorage/Actions/AddFileProxyAction.cs b/src/ExtCore.FileStorage/Actions/AddFileProxyAction.cs deleted file mode 100644 index 91176e2..0000000 --- a/src/ExtCore.FileStorage/Actions/AddFileProxyAction.cs +++ /dev/null @@ -1,50 +0,0 @@ -// Copyright © 2018 Dmitry Sikorsky. All rights reserved. -// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. - -using System; -using System.Linq; -using System.Reflection; -using ExtCore.FileStorage.Abstractions; -using ExtCore.Infrastructure; -using ExtCore.Infrastructure.Actions; -using Microsoft.Extensions.DependencyInjection; -using Microsoft.Extensions.Logging; - -namespace ExtCore.FileStorage.Actions -{ - /// - /// Implements the IConfigureServicesAction interface and - /// registers found implementation of the IFileProxy interface inside the DI. - /// - public class AddFileProxyAction : IConfigureServicesAction - { - /// - /// Priority of the action. The actions will be executed in the order specified by the priority (from smallest to largest). - /// - public int Priority => 1000; - - /// - /// Registers found implementation of the IFileProxy interface inside the DI. - /// - /// - /// Will be provided by the ExtCore and might be used to register any service inside the DI. - /// - /// - /// Will be provided by the ExtCore and might be used to get any service that is registered inside the DI at this moment. - /// - public void Execute(IServiceCollection services, IServiceProvider serviceProvider) - { - Type type = ExtensionManager.GetImplementations()?.FirstOrDefault(t => !t.GetTypeInfo().IsAbstract); - - if (type == null) - { - ILogger logger = serviceProvider.GetService().CreateLogger("ExtCore.FileStorage"); - - logger.LogError("Implementation of ExtCore.FileStorage.Abstractions.IFileProxy not found"); - return; - } - - services.AddScoped(typeof(IFileProxy), type); - } - } -} \ No newline at end of file diff --git a/src/ExtCore.FileStorage/ExtCore.FileStorage.csproj b/src/ExtCore.FileStorage/ExtCore.FileStorage.csproj index 73ff198..f219f50 100644 --- a/src/ExtCore.FileStorage/ExtCore.FileStorage.csproj +++ b/src/ExtCore.FileStorage/ExtCore.FileStorage.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2018 Dmitry Sikorsky The ExtCore.FileStorage extension component. Based on the ExtCore framework. - 7.0.0 + 7.0.1 net6.0 ExtCore.FileStorage ExtCore.FileStorage diff --git a/src/ExtCore.FileStorage/Extension.cs b/src/ExtCore.FileStorage/Extension.cs index 646ee82..8e21249 100644 --- a/src/ExtCore.FileStorage/Extension.cs +++ b/src/ExtCore.FileStorage/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "7.0.0"; + public override string Version => "7.0.1"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj b/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj index fd797c1..6fa96d7 100644 --- a/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj +++ b/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky Free, open source and cross-platform framework for creating modular and extendable web applications based on ASP.NET Core. - 7.0.0 + 7.0.1 net6.0 ExtCore.Infrastructure ExtCore.Infrastructure diff --git a/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj b/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj index e49510a..900156b 100644 --- a/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj +++ b/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Mvc extension component. Based on the ExtCore framework. - 7.0.0 + 7.0.1 net6.0 ExtCore.Mvc.Infrastructure ExtCore.Mvc.Infrastructure diff --git a/src/ExtCore.Mvc/ExtCore.Mvc.csproj b/src/ExtCore.Mvc/ExtCore.Mvc.csproj index df8db8d..b9a6994 100644 --- a/src/ExtCore.Mvc/ExtCore.Mvc.csproj +++ b/src/ExtCore.Mvc/ExtCore.Mvc.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Mvc extension component. Based on the ExtCore framework. - 7.0.0 + 7.0.1 net6.0 ExtCore.Mvc ExtCore.Mvc diff --git a/src/ExtCore.Mvc/Extension.cs b/src/ExtCore.Mvc/Extension.cs index ef2a14d..42836e4 100644 --- a/src/ExtCore.Mvc/Extension.cs +++ b/src/ExtCore.Mvc/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "7.0.0"; + public override string Version => "7.0.1"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj b/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj index 110985a..1c8edba 100644 --- a/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj +++ b/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky Free, open source and cross-platform framework for creating modular and extendable web applications based on ASP.NET Core. - 7.0.0 + 7.0.1 net6.0 ExtCore.WebApplication ExtCore.WebApplication From 6981e9e71ba9b666dc49e723997dfc80c03a0abf Mon Sep 17 00:00:00 2001 From: Dmitry Sikorsky Date: Thu, 8 Sep 2022 18:14:49 +0300 Subject: [PATCH 62/81] Added Azure file storage support --- README.md | 2 +- .../ExtCore.Data.Abstractions.csproj | 2 +- .../ExtCore.Data.Dapper.MySql.csproj | 4 +- .../ExtCore.Data.Dapper.PostgreSql.csproj | 4 +- .../ExtCore.Data.Dapper.SqlServer.csproj | 2 +- .../ExtCore.Data.Dapper.Sqlite.csproj | 4 +- .../ExtCore.Data.Dapper.csproj | 2 +- src/ExtCore.Data.Dapper/Extension.cs | 2 +- .../ExtCore.Data.Entities.Abstractions.csproj | 2 +- .../ExtCore.Data.EntityFramework.MySql.csproj | 4 +- ...ore.Data.EntityFramework.PostgreSql.csproj | 4 +- ...Core.Data.EntityFramework.SqlServer.csproj | 4 +- ...ExtCore.Data.EntityFramework.Sqlite.csproj | 4 +- .../ExtCore.Data.EntityFramework.csproj | 4 +- src/ExtCore.Data.EntityFramework/Extension.cs | 2 +- src/ExtCore.Data/ExtCore.Data.csproj | 2 +- src/ExtCore.Data/Extension.cs | 2 +- src/ExtCore.Events/ExtCore.Events.csproj | 2 +- src/ExtCore.Events/Extension.cs | 2 +- .../ExtCore.FileStorage.Abstractions.csproj | 2 +- .../DirectoryProxy.cs | 218 ++++++++++++++ .../ExtCore.FileStorage.Azure.csproj | 31 ++ src/ExtCore.FileStorage.Azure/FileProxy.cs | 265 ++++++++++++++++++ src/ExtCore.FileStorage.Azure/FileStorage.cs | 48 ++++ src/ExtCore.FileStorage.Azure/RelativeUrl.cs | 21 ++ src/ExtCore.FileStorage.Azure/icon.png | Bin 0 -> 3149 bytes .../ExtCore.FileStorage.Dropbox.csproj | 4 +- src/ExtCore.FileStorage.Dropbox/FileProxy.cs | 4 +- .../ExtCore.FileStorage.FileSystem.csproj | 2 +- .../ExtCore.FileStorage.csproj | 2 +- src/ExtCore.FileStorage/Extension.cs | 2 +- .../ExtCore.Infrastructure.csproj | 2 +- .../ExtCore.Mvc.Infrastructure.csproj | 2 +- src/ExtCore.Mvc/ExtCore.Mvc.csproj | 4 +- src/ExtCore.Mvc/Extension.cs | 2 +- .../ExtCore.WebApplication.csproj | 2 +- 36 files changed, 624 insertions(+), 41 deletions(-) create mode 100644 src/ExtCore.FileStorage.Azure/DirectoryProxy.cs create mode 100644 src/ExtCore.FileStorage.Azure/ExtCore.FileStorage.Azure.csproj create mode 100644 src/ExtCore.FileStorage.Azure/FileProxy.cs create mode 100644 src/ExtCore.FileStorage.Azure/FileStorage.cs create mode 100644 src/ExtCore.FileStorage.Azure/RelativeUrl.cs create mode 100644 src/ExtCore.FileStorage.Azure/icon.png diff --git a/README.md b/README.md index 89826ba..5a1ff56 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# ExtCore 7.0.1 +# ExtCore 7.1.0 [![Join the chat at https://gitter.im/ExtCore/ExtCore](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/ExtCore/ExtCore?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) diff --git a/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj b/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj index d68c838..b5b301a 100644 --- a/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj +++ b/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data extension component. Based on the ExtCore framework. - 7.0.1 + 7.1.0 netstandard2.0 ExtCore.Data.Abstractions ExtCore.Data.Abstractions diff --git a/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj b/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj index 633cf00..ca41168 100644 --- a/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj +++ b/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 7.0.1 + 7.1.0 net6.0 ExtCore.Data.Dapper.MySql ExtCore.Data.Dapper.MySql @@ -18,7 +18,7 @@ - + diff --git a/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj b/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj index 2306694..db2f075 100644 --- a/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj +++ b/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 7.0.1 + 7.1.0 net6.0 ExtCore.Data.Dapper.PostgreSql ExtCore.Data.Dapper.PostgreSql @@ -18,7 +18,7 @@ - + diff --git a/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj b/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj index 1d87210..b40163f 100644 --- a/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj +++ b/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 7.0.1 + 7.1.0 net6.0 ExtCore.Data.Dapper.SqlServer ExtCore.Data.Dapper.SqlServer diff --git a/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj b/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj index 526e4ef..bd89f8d 100644 --- a/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj +++ b/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 7.0.1 + 7.1.0 net6.0 ExtCore.Data.Dapper.Sqlite ExtCore.Data.Dapper.Sqlite @@ -18,7 +18,7 @@ - + diff --git a/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj b/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj index b5c5c93..327c3cf 100644 --- a/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj +++ b/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 7.0.1 + 7.1.0 net6.0 ExtCore.Data.Dapper ExtCore.Data.Dapper diff --git a/src/ExtCore.Data.Dapper/Extension.cs b/src/ExtCore.Data.Dapper/Extension.cs index 0ead8cf..b85d0d4 100644 --- a/src/ExtCore.Data.Dapper/Extension.cs +++ b/src/ExtCore.Data.Dapper/Extension.cs @@ -24,7 +24,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "7.0.1"; + public override string Version => "7.1.0"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj b/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj index d332c57..59ea42b 100644 --- a/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj +++ b/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data extension component. Based on the ExtCore framework. - 7.0.1 + 7.1.0 netstandard2.0 ExtCore.Data.Entities.Abstractions ExtCore.Data.Entities.Abstractions diff --git a/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj b/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj index 4046b6a..d691f02 100644 --- a/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj +++ b/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 7.0.1 + 7.1.0 net6.0 ExtCore.Data.EntityFramework.MySql ExtCore.Data.EntityFramework.MySql @@ -18,7 +18,7 @@ - + diff --git a/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj b/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj index a247b1d..29e6b66 100644 --- a/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj +++ b/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 7.0.1 + 7.1.0 net6.0 ExtCore.Data.EntityFramework.PostgreSql ExtCore.Data.EntityFramework.PostgreSql @@ -18,7 +18,7 @@ - + diff --git a/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj b/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj index 13e0955..8e187df 100644 --- a/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj +++ b/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 7.0.1 + 7.1.0 net6.0 ExtCore.Data.EntityFramework.SqlServer ExtCore.Data.EntityFramework.SqlServer @@ -18,7 +18,7 @@ - + diff --git a/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj b/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj index 5980ba0..69a0443 100644 --- a/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj +++ b/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 7.0.1 + 7.1.0 net6.0 ExtCore.Data.EntityFramework.Sqlite ExtCore.Data.EntityFramework.Sqlite @@ -18,7 +18,7 @@ - + diff --git a/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj b/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj index 1881065..e937fbb 100644 --- a/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj +++ b/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 7.0.1 + 7.1.0 net6.0 ExtCore.Data.EntityFramework ExtCore.Data.EntityFramework @@ -18,7 +18,7 @@ - + diff --git a/src/ExtCore.Data.EntityFramework/Extension.cs b/src/ExtCore.Data.EntityFramework/Extension.cs index f69b897..6fb24dd 100644 --- a/src/ExtCore.Data.EntityFramework/Extension.cs +++ b/src/ExtCore.Data.EntityFramework/Extension.cs @@ -24,7 +24,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "7.0.1"; + public override string Version => "7.1.0"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Data/ExtCore.Data.csproj b/src/ExtCore.Data/ExtCore.Data.csproj index 3be4bca..a1b51c9 100644 --- a/src/ExtCore.Data/ExtCore.Data.csproj +++ b/src/ExtCore.Data/ExtCore.Data.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data extension component. Based on the ExtCore framework. - 7.0.1 + 7.1.0 net6.0 ExtCore.Data ExtCore.Data diff --git a/src/ExtCore.Data/Extension.cs b/src/ExtCore.Data/Extension.cs index 26adc18..060116b 100644 --- a/src/ExtCore.Data/Extension.cs +++ b/src/ExtCore.Data/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "7.0.1"; + public override string Version => "7.1.0"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Events/ExtCore.Events.csproj b/src/ExtCore.Events/ExtCore.Events.csproj index eb10097..027e00a 100644 --- a/src/ExtCore.Events/ExtCore.Events.csproj +++ b/src/ExtCore.Events/ExtCore.Events.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Events extension component. Based on the ExtCore framework. - 7.0.1 + 7.1.0 net6.0 ExtCore.Events ExtCore.Events diff --git a/src/ExtCore.Events/Extension.cs b/src/ExtCore.Events/Extension.cs index 178e941..4ca4849 100644 --- a/src/ExtCore.Events/Extension.cs +++ b/src/ExtCore.Events/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "7.0.1"; + public override string Version => "7.1.0"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.FileStorage.Abstractions/ExtCore.FileStorage.Abstractions.csproj b/src/ExtCore.FileStorage.Abstractions/ExtCore.FileStorage.Abstractions.csproj index 6ffec1b..c62211d 100644 --- a/src/ExtCore.FileStorage.Abstractions/ExtCore.FileStorage.Abstractions.csproj +++ b/src/ExtCore.FileStorage.Abstractions/ExtCore.FileStorage.Abstractions.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2018 Dmitry Sikorsky The ExtCore.FileStorage extension component. Based on the ExtCore framework. - 7.0.1 + 7.1.0 netstandard2.0 ExtCore.FileStorage.Abstractions ExtCore.FileStorage.Abstractions diff --git a/src/ExtCore.FileStorage.Azure/DirectoryProxy.cs b/src/ExtCore.FileStorage.Azure/DirectoryProxy.cs new file mode 100644 index 0000000..23afa44 --- /dev/null +++ b/src/ExtCore.FileStorage.Azure/DirectoryProxy.cs @@ -0,0 +1,218 @@ +// Copyright © 2022 Dmitry Sikorsky. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using Azure; +using Azure.Storage.Blobs; +using Azure.Storage.Blobs.Models; +using ExtCore.FileStorage.Abstractions; + +namespace ExtCore.FileStorage.Azure +{ + /// + /// Implements the IDirectoryProxy interface and represents a directory in a Azure Storage account. + /// + public class DirectoryProxy : IDirectoryProxy + { + private readonly string connectionString; + private readonly string rootPath; + private readonly string path; + private readonly string containerName; + private readonly string prefix; + + /// + /// The path of the underlying directory relatively to the root one. + /// + public string RelativePath { get; private set; } + + /// + /// Initializes a new instance of the DirectoryProxy class. + /// + /// The Azure Storage account connection string. + /// The root path of the underlying directory's relative one. + /// The path of the underlying directory relatively to the root one. + /// + /// + public DirectoryProxy(string connectionString, string rootPath, string relativePath) + { + if (connectionString == string.Empty) + throw new ArgumentException($"Value can't be empty. Parameter name: connectionString."); + + if (connectionString == null) + throw new ArgumentNullException($"Value can't be null. Parameter name: connectionString.", default(Exception)); + + this.connectionString = connectionString; + this.rootPath = RelativeUrl.Combine(rootPath); + this.RelativePath = RelativeUrl.Combine(relativePath); + this.path = RelativeUrl.Combine(this.rootPath, this.RelativePath); + + string[] urlSegments = path.Split('/'); + + this.containerName = urlSegments.First(); + this.prefix = string.Join("/", urlSegments.Skip(1)); + } + + /// + /// Checks if the underlying directory exists. + /// + /// Returns a flag indicating if the underlying directory exists. + public async Task ExistsAsync() + { + try + { + BlobContainerClient blobContainerClient = this.GetBlobContainerClient(); + IAsyncEnumerable> pages = blobContainerClient.GetBlobsByHierarchyAsync(prefix: this.prefix).AsPages(); + + await foreach (Page page in pages) + return page.Values.Count != 0; + } + + catch { } + + return false; + } + + /// + /// Creates the underlying directory. + /// + /// + /// + /// + /// + public async Task CreateAsync() + { + throw new NotSupportedException(); + } + + /// + /// Moves the underlying directory. + /// + /// + /// + /// + /// + /// + /// + /// + public async Task MoveAsync(string destinationRelativePath) + { + throw new NotSupportedException(); + } + + /// + /// Deletes the underlying directory. + /// + /// Pass true to remove all the underlying directory content recursively; otherwise false. + /// + /// + /// + /// + public async Task DeleteAsync(bool recursive) + { + try + { + BlobContainerClient blobContainerClient = this.GetBlobContainerClient(); + + IAsyncEnumerable> pages = blobContainerClient.GetBlobsByHierarchyAsync(prefix: this.prefix + "/", delimiter: recursive ? null : "/").AsPages(); + + await foreach (Page page in pages) + { + foreach (BlobHierarchyItem blobItem in page.Values) + { + if (blobItem.IsBlob) + { + BlobClient blobClient = await this.GetBlobClient(blobItem.Blob); + + await blobClient.DeleteAsync(); + } + } + } + } + + catch (Exception e) + { + throw new FileStorageException($"Generic file storage exception: \"{this.path}\". See inner exception for details.", e); + } + } + + /// + /// Gets the directory proxies for the directories inside the underlying one. + /// + /// The directory proxies for the directories inside the underlying one + /// + /// + /// + /// + public async Task> GetDirectoryProxiesAsync() + { + try + { + IList directoryProxies = new List(); + BlobContainerClient blobContainerClient = this.GetBlobContainerClient(); + string prefix = string.IsNullOrEmpty(this.prefix) ? null : this.prefix + "/"; + IAsyncEnumerable> pages = blobContainerClient.GetBlobsByHierarchyAsync(prefix: prefix, delimiter: "/").AsPages(); + + await foreach (Page page in pages) + foreach (BlobHierarchyItem blobItem in page.Values) + if (blobItem.IsPrefix) + directoryProxies.Add(new DirectoryProxy(this.connectionString, this.rootPath, RelativeUrl.Combine(this.RelativePath, RelativeUrl.Combine(blobItem.Prefix).Split('/').Last()))); + + return directoryProxies; + } + + catch (Exception e) + { + throw new FileStorageException($"Generic file storage exception: \"{this.path}\". See inner exception for details.", e); + } + } + + /// + /// Gets the file proxies for the files inside the underlying one. + /// + /// The file proxies for the files inside the underlying directory. + /// + /// + /// + /// + public async Task> GetFileProxiesAsync() + { + try + { + IList fileProxies = new List(); + BlobContainerClient blobContainerClient = this.GetBlobContainerClient(); + string prefix = string.IsNullOrEmpty(this.prefix) ? null : this.prefix + "/"; + IAsyncEnumerable> pages = blobContainerClient.GetBlobsByHierarchyAsync(prefix: prefix, delimiter: "/").AsPages(); + + await foreach (Page page in pages) + foreach (BlobHierarchyItem blobItem in page.Values) + if (blobItem.IsBlob) + fileProxies.Add(new FileProxy(this.connectionString, this.rootPath, this.RelativePath, blobItem.Blob.Name.Split('/').Last())); + + return fileProxies; + } + + catch (Exception e) + { + throw new FileStorageException($"Generic file storage exception: \"{this.path}\". See inner exception for details.", e); + } + } + + private BlobContainerClient GetBlobContainerClient() + { + BlobServiceClient blobServiceClient = new BlobServiceClient(this.connectionString); + + return blobServiceClient.GetBlobContainerClient(this.containerName); + } + + private async Task GetBlobClient(BlobItem blobItem) + { + BlobContainerClient blobContainerClient = this.GetBlobContainerClient(); + + await blobContainerClient.CreateIfNotExistsAsync(PublicAccessType.Blob); + return blobContainerClient.GetBlobClient(blobItem.Name); + } + } +} \ No newline at end of file diff --git a/src/ExtCore.FileStorage.Azure/ExtCore.FileStorage.Azure.csproj b/src/ExtCore.FileStorage.Azure/ExtCore.FileStorage.Azure.csproj new file mode 100644 index 0000000..95a016b --- /dev/null +++ b/src/ExtCore.FileStorage.Azure/ExtCore.FileStorage.Azure.csproj @@ -0,0 +1,31 @@ + + + + Dmitry Sikorsky + Copyright © 2018 Dmitry Sikorsky + The ExtCore.FileStorage extension component. Based on the ExtCore framework. + 7.1.0 + netstandard2.0 + 8.0 + ExtCore.FileStorage.Dropbox + ExtCore.FileStorage.Dropbox + icon.png + https://extcore.net/ + Apache-2.0 + + + + + + + + + + + + + + + + + diff --git a/src/ExtCore.FileStorage.Azure/FileProxy.cs b/src/ExtCore.FileStorage.Azure/FileProxy.cs new file mode 100644 index 0000000..8214d78 --- /dev/null +++ b/src/ExtCore.FileStorage.Azure/FileProxy.cs @@ -0,0 +1,265 @@ +// Copyright © 2022 Dmitry Sikorsky. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.IO; +using System.Linq; +using System.Threading.Tasks; +using Azure.Storage.Blobs; +using Azure.Storage.Blobs.Models; +using ExtCore.FileStorage.Abstractions; + +namespace ExtCore.FileStorage.Azure +{ + /// + /// Implements the IDirectoryProxy interface and represents a file in a Azure Storage account. + /// + public class FileProxy : IFileProxy + { + private readonly string connectionString; + private readonly string filepath; + private readonly string containerName; + private readonly string blobName; + + /// + /// The path of the underlying file relatively to the root one. + /// + public string RelativePath { get; private set; } + + /// + /// The filename of the underlying file. + /// + public string Filename { get; private set; } + + /// + /// Initializes a new instance of the FileProxy class. + /// + /// The Azure Storage account connection string. + /// The root path of the underlying file's relative one. + /// The path of the underlying file relatively to the root one. + /// The filename of the underlying file. + /// + /// + public FileProxy(string connectionString, string rootPath, string relativePath, string filename) + { + if (connectionString == string.Empty) + throw new ArgumentException($"Value can't be empty. Parameter name: connectionString."); + + if (connectionString == null) + throw new ArgumentNullException($"Value can't be null. Parameter name: connectionString.", default(Exception)); + + if (filename == string.Empty) + throw new ArgumentException($"Value can't be empty. Parameter name: filename."); + + if (filename == null) + throw new ArgumentNullException($"Value can't be null. Parameter name: filename.", default(Exception)); + + this.connectionString = connectionString; + this.RelativePath = RelativeUrl.Combine(relativePath); + this.Filename = filename; + this.filepath = RelativeUrl.Combine(rootPath, this.RelativePath, this.Filename); + + string[] urlSegments = filepath.Split('/'); + + this.containerName = urlSegments.First(); + this.blobName = string.Join("/", urlSegments.Skip(1)); + } + + /// + /// Checks if the underlying file exists. + /// + /// Returns a flag indicating if the underlying file exists. + public async Task ExistsAsync() + { + try + { + BlobClient blobClient = await this.GetBlobClient(); + + return await blobClient.ExistsAsync(); + } + + catch + { + return false; + } + } + + /// + /// Reads content of the underlying file as a byte array. + /// + /// Content of the underlying file as a byte array. + /// + /// + /// + /// + /// + public async Task ReadStreamAsync() + { + try + { + BlobClient blobClient = await this.GetBlobClient(); + + return (await blobClient.DownloadStreamingAsync()).Value.Content; + } + + catch (Exception e) + { + throw new FileStorageException($"Generic file storage exception: \"{this.filepath}\". See inner exception for details.", e); + } + } + + /// + /// Reads content of the underlying file as a byte array. + /// + /// Content of the underlying file as a byte array. + /// + /// + /// + /// + /// + public async Task ReadBytesAsync() + { + try + { + BlobClient blobClient = await this.GetBlobClient(); + BlobDownloadResult downloadResult = await blobClient.DownloadContentAsync(); + + return downloadResult.Content.ToArray(); + } + + catch (Exception e) + { + throw new FileStorageException($"Generic file storage exception: \"{this.filepath}\". See inner exception for details.", e); + } + } + + /// + /// Reads content of the underlying file as a text string. + /// + /// Content of the underlying file as a text string. + /// + /// + /// + /// + /// + public async Task ReadTextAsync() + { + try + { + BlobClient blobClient = await this.GetBlobClient(); + BlobDownloadResult downloadResult = await blobClient.DownloadContentAsync(); + + return downloadResult.Content.ToString(); + } + + catch (Exception e) + { + throw new FileStorageException($"Generic file storage exception: \"{this.filepath}\". See inner exception for details.", e); + } + } + + /// + /// Writes content to the underlying file as a stream. + /// + /// Content to write to the underlying file as a stream. + /// + /// + /// + /// + /// + public async Task WriteStreamAsync(Stream inputStream) + { + try + { + BlobClient blobClient = await this.GetBlobClient(); + + await blobClient.UploadAsync(inputStream); + } + + catch (Exception e) + { + throw new FileStorageException($"Generic file storage exception: \"{this.filepath}\". See inner exception for details.", e); + } + } + + /// + /// Writes content to the underlying file as a byte array. + /// + /// Content to write to the underlying file as a byte array. + /// + /// + /// + /// + /// + public async Task WriteBytesAsync(byte[] bytes) + { + try + { + BlobClient blobClient = await this.GetBlobClient(); + + await blobClient.UploadAsync(BinaryData.FromBytes(bytes)); + } + + catch (Exception e) + { + throw new FileStorageException($"Generic file storage exception: \"{this.filepath}\". See inner exception for details.", e); + } + } + + /// + /// Writes content to the underlying file as a text string. + /// + /// Content to write to the underlying file as a text string. + /// + /// + /// + /// + /// + public async Task WriteTextAsync(string text) + { + try + { + BlobClient blobClient = await this.GetBlobClient(); + + await blobClient.UploadAsync(BinaryData.FromString(text)); + } + + catch (Exception e) + { + throw new FileStorageException($"Generic file storage exception: \"{this.filepath}\". See inner exception for details.", e); + } + } + + /// + /// Deletes the underlying file. + /// + /// + /// + /// + /// + /// + public async Task DeleteAsync() + { + try + { + BlobClient blobClient = await this.GetBlobClient(); + + await blobClient.DeleteAsync(); + } + + catch (Exception e) + { + throw new FileStorageException($"Generic file storage exception: \"{this.filepath}\". See inner exception for details.", e); + } + } + + private async Task GetBlobClient() + { + BlobServiceClient blobServiceClient = new BlobServiceClient(this.connectionString); + BlobContainerClient blobContainerClient = blobServiceClient.GetBlobContainerClient(this.containerName); + + await blobContainerClient.CreateIfNotExistsAsync(PublicAccessType.Blob); + return blobContainerClient.GetBlobClient(this.blobName); + } + } +} \ No newline at end of file diff --git a/src/ExtCore.FileStorage.Azure/FileStorage.cs b/src/ExtCore.FileStorage.Azure/FileStorage.cs new file mode 100644 index 0000000..71868e1 --- /dev/null +++ b/src/ExtCore.FileStorage.Azure/FileStorage.cs @@ -0,0 +1,48 @@ +// Copyright © 2022 Dmitry Sikorsky. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using ExtCore.FileStorage.Abstractions; +using Microsoft.Extensions.Options; + +namespace ExtCore.FileStorage.Azure +{ + /// + /// Implements the IFileStorage interface and represents a file storage in a Azure Storage account. + /// + public class FileStorage : IFileStorage + { + private readonly string secret; + private readonly string rootPath; + + /// + /// Initializes a new instance of the FileStorage class. + /// + /// The options that are used to configure the file storage root path. + public FileStorage(IOptions options) + { + this.secret = options.Value.Secret; + this.rootPath = options.Value.RootPath; + } + + /// + /// Creates a directory proxy which allows to manipulate an underlying directory with a specified relative path. + /// + /// The path of the underlying directory relatively to the root one. + /// Created directory proxy. + public IDirectoryProxy CreateDirectoryProxy(string relativePath) + { + return new DirectoryProxy(this.secret, this.rootPath, relativePath); + } + + /// + /// Creates a file proxy which allows to manipulate an underlying file with a specified relative path and a filename. + /// + /// The path of the underlying file relatively to the root one. + /// The filename of the underlying file. + /// Created file proxy. + public IFileProxy CreateFileProxy(string relativePath, string filename) + { + return new FileProxy(this.secret, this.rootPath, relativePath, filename); + } + } +} \ No newline at end of file diff --git a/src/ExtCore.FileStorage.Azure/RelativeUrl.cs b/src/ExtCore.FileStorage.Azure/RelativeUrl.cs new file mode 100644 index 0000000..b220ecf --- /dev/null +++ b/src/ExtCore.FileStorage.Azure/RelativeUrl.cs @@ -0,0 +1,21 @@ +// Copyright © 2022 Dmitry Sikorsky. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Linq; + +namespace ExtCore.FileStorage.Azure +{ + public static class RelativeUrl + { + public static string Combine(params string[] segments) + { + return string.Join( + "/", + segments.Where(s => !string.IsNullOrEmpty(s)).Select( + s => string.Join("/", s.Split(new char[] { '/', '\\' }, StringSplitOptions.RemoveEmptyEntries)) + ).Where(s => !string.IsNullOrEmpty(s)) + ); + } + } +} \ No newline at end of file diff --git a/src/ExtCore.FileStorage.Azure/icon.png b/src/ExtCore.FileStorage.Azure/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..658aadfa4b42dc9573b7867b99b9d5a0ce54f25b GIT binary patch literal 3149 zcmaJ@c|4SB8-8XGp$_Q`ZKr8uEoR0tjw#D9GnVX2Mu#$Hh8bfPGb2mMgM1*g2s`LHv^}WCMeV^rbUDtg-&wahm?>*$=WV1qktvmo= zg`F+lP0|XN9yzGw?cnn%OVX?n5J&=dPJkec%%cGumE%u?+p)-jG&dTV8WD1bwjBT| z1jBl^A(P-rw9gV9GD8DlW$t#AVr+5m}?+!#Hy5!M)kH86pHyAYCS zJZb>e4Nv?QOENM;&;(C&HuJdk_|(KletK=K5A)6-+_*f{~yX? z{Xp{tZnS^%{hz{oj|eUe=|vr&l)GdF7FQA(PvbH6(x^lphXwz-WGv(7 zxmf*F?;Dr;^IWWd%0)_&K`s^czY6_*O5&cS?ho5a20x5XV@ur5li2#cbK+e9?|r@LKAvjVr@J)_GdG{;$=lJP8>E_(9}=O|Zi3riHG^2KES=MlwCiFBj(*9W z5w%(w@0w>mGcW1y^ zwh9e#x$3UVWm$sMS@{)5Es?;(W=D6|OCeB-weLA%sSfB)4y3_4qLfgSPp3)O0!usB z%G^9Fl_{;g3bQV5dce>0e2~BN7r@mBGRn#G4=rjiCpIdAGUU^PA|6yMwT_(J98leP z)BRa63=+LUKiGAp@DTonQLEA~@z+!y41UyZX6}qT2^Etz1>0_gsq=85c3dSob{ zEdhLe!K&B0u(-M2}bCn<$* zDy>lNs%WOW%X}E@EkFk4w%owAho;|?3u22OqGEJ{-1D{0y_zLUy@P_--&bj~-1B|p zW}?C@@MHS+HAszR;%WmUH``OIR%m$oUUnwh;g}j`2`QDDYi%B*SViOEJ}})o zi&FZYhS_wrecsxIzQ0l>_Mvn|Rw$@EA;QZRnt;pf2=eaOg;Y_@sb$#uB=Nc8#AXs< z_Wh_nzI-)qk2pqzaX4KR{ah9z)UZ!F4etw5B_ub$%C)8kW|aJOw0Xs&^Y)#&((4rt zizZ$^MGz@st=FP}m{ly|+rr0kn;)59?Hu4H&+jCunJ)U)nD_UL?%n@rO2|O%z??35 zBo7hd5y}P(<xPMjsamw| zK2o{poo<=x0TUtzG!NYI@vPNJfVH(o=dZfC zttn?pjlJzZ;e8{xDfu(ASGAP5YyM{fuA0ySyx6yX)mkVM%XpYF@m05eo?M*+oQk$`-tX<=*${HZK~Cpr25{c38I$^ z_7!~*XWJarF1n$wQHBqn_FwmIeL_8fr?d8IRh0~|%otd>Ub64}F+(RTdsiJkdVT~d z7GCR#hmVYm9Q1vtU>3$<5Bp_JejI%cxrrMG*Yt0PtUt@^`4z%-2%&OgnH@~Rds8Mj zo`iy?IA~gTJZyO(dp3B_J%iyWJ!`a7iC^6Hndw^fqb=`(+|9OE-!v}#BW`2m3Fi#o zYD$HNF!TJg_I6h<-M;MfPpbPy^Rp^Z_g%wCx6m2CN%@%@D`Ya6)AYrtd5mw}CwKND zOuf{f3WO8*0Pl2%8Xp!ArSo4MW8np@m3t~WbsQB_AmD*)iR09>(QRRW)yZkrzwqs( zXm2-3E4C_E>I~Jm7aG@Xk!d4qx}^Kb}z3xYyri`KY{DzJ9yOMBU>tI1k7 za3HV?zB)A3BR(=-`c;EeP;dH_)0Wx1vmvq{3~WErsyD{gmfBs}Q0cC&21;(28*%@hj8&FnalR(h3u@XH}$0zTbXov;<$~k%!j_Z+S+hEaX~@C zv{qEeZ3DSaDSCP*g7t&G&_Bzs_N2yRnj()ZghNR z$H*9VYyo@GR{_8kW4GOkg~=^oJ?;-ffo)jW)wgZ_yDjFr_67zPXexBdfLAd>$eO7) z^DOxd5L8hiJ|@|tbRtn|!;G(;Zp#ZU}Ko;$KGmV{u0*U*No4j6228~b` z(UhgxnzHpl?-Ev8U}{C;N?6nAyWx3t&={oD-W{U}9Kop$X}>3T8=#7ysdt0TOXY1D QOF#H_1Sfo{m0!$%0K4WuRsaA1 literal 0 HcmV?d00001 diff --git a/src/ExtCore.FileStorage.Dropbox/ExtCore.FileStorage.Dropbox.csproj b/src/ExtCore.FileStorage.Dropbox/ExtCore.FileStorage.Dropbox.csproj index 2482bac..ddaa95c 100644 --- a/src/ExtCore.FileStorage.Dropbox/ExtCore.FileStorage.Dropbox.csproj +++ b/src/ExtCore.FileStorage.Dropbox/ExtCore.FileStorage.Dropbox.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2018 Dmitry Sikorsky The ExtCore.FileStorage extension component. Based on the ExtCore framework. - 7.0.1 + 7.1.0 netstandard2.0 ExtCore.FileStorage.Dropbox ExtCore.FileStorage.Dropbox @@ -18,7 +18,7 @@ - + diff --git a/src/ExtCore.FileStorage.Dropbox/FileProxy.cs b/src/ExtCore.FileStorage.Dropbox/FileProxy.cs index 2229210..7507606 100644 --- a/src/ExtCore.FileStorage.Dropbox/FileProxy.cs +++ b/src/ExtCore.FileStorage.Dropbox/FileProxy.cs @@ -55,8 +55,8 @@ public FileProxy(string accessToken, string rootPath, string relativePath, strin throw new ArgumentNullException($"Value can't be null. Parameter name: filename.", default(Exception)); this.accessToken = accessToken; - this.rootPath = rootPath; - this.RelativePath = relativePath; + this.rootPath = RelativeUrl.Combine(rootPath); + this.RelativePath = RelativeUrl.Combine(relativePath); this.Filename = filename; this.filepath = RelativeUrl.Combine(this.rootPath, this.RelativePath, this.Filename); } diff --git a/src/ExtCore.FileStorage.FileSystem/ExtCore.FileStorage.FileSystem.csproj b/src/ExtCore.FileStorage.FileSystem/ExtCore.FileStorage.FileSystem.csproj index 5a3753b..956519f 100644 --- a/src/ExtCore.FileStorage.FileSystem/ExtCore.FileStorage.FileSystem.csproj +++ b/src/ExtCore.FileStorage.FileSystem/ExtCore.FileStorage.FileSystem.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2018 Dmitry Sikorsky The ExtCore.FileStorage extension component. Based on the ExtCore framework. - 7.0.1 + 7.1.0 netstandard2.0 ExtCore.FileStorage.FileSystem ExtCore.FileStorage.FileSystem diff --git a/src/ExtCore.FileStorage/ExtCore.FileStorage.csproj b/src/ExtCore.FileStorage/ExtCore.FileStorage.csproj index f219f50..0c18262 100644 --- a/src/ExtCore.FileStorage/ExtCore.FileStorage.csproj +++ b/src/ExtCore.FileStorage/ExtCore.FileStorage.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2018 Dmitry Sikorsky The ExtCore.FileStorage extension component. Based on the ExtCore framework. - 7.0.1 + 7.1.0 net6.0 ExtCore.FileStorage ExtCore.FileStorage diff --git a/src/ExtCore.FileStorage/Extension.cs b/src/ExtCore.FileStorage/Extension.cs index 8e21249..1a6b354 100644 --- a/src/ExtCore.FileStorage/Extension.cs +++ b/src/ExtCore.FileStorage/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "7.0.1"; + public override string Version => "7.1.0"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj b/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj index 6fa96d7..25b0a7a 100644 --- a/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj +++ b/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky Free, open source and cross-platform framework for creating modular and extendable web applications based on ASP.NET Core. - 7.0.1 + 7.1.0 net6.0 ExtCore.Infrastructure ExtCore.Infrastructure diff --git a/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj b/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj index 900156b..248b3c0 100644 --- a/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj +++ b/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Mvc extension component. Based on the ExtCore framework. - 7.0.1 + 7.1.0 net6.0 ExtCore.Mvc.Infrastructure ExtCore.Mvc.Infrastructure diff --git a/src/ExtCore.Mvc/ExtCore.Mvc.csproj b/src/ExtCore.Mvc/ExtCore.Mvc.csproj index b9a6994..c33c2ec 100644 --- a/src/ExtCore.Mvc/ExtCore.Mvc.csproj +++ b/src/ExtCore.Mvc/ExtCore.Mvc.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Mvc extension component. Based on the ExtCore framework. - 7.0.1 + 7.1.0 net6.0 ExtCore.Mvc ExtCore.Mvc @@ -18,7 +18,7 @@ - + diff --git a/src/ExtCore.Mvc/Extension.cs b/src/ExtCore.Mvc/Extension.cs index 42836e4..aa108ff 100644 --- a/src/ExtCore.Mvc/Extension.cs +++ b/src/ExtCore.Mvc/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "7.0.1"; + public override string Version => "7.1.0"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj b/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj index 1c8edba..a7d100a 100644 --- a/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj +++ b/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky Free, open source and cross-platform framework for creating modular and extendable web applications based on ASP.NET Core. - 7.0.1 + 7.1.0 net6.0 ExtCore.WebApplication ExtCore.WebApplication From 1d738980a55b017b32872e167853213cbee8ae02 Mon Sep 17 00:00:00 2001 From: Dmitry Sikorsky Date: Thu, 8 Sep 2022 18:15:08 +0300 Subject: [PATCH 63/81] Added Azure file storage support --- ExtCore.sln | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/ExtCore.sln b/ExtCore.sln index 8c58d70..62e358a 100644 --- a/ExtCore.sln +++ b/ExtCore.sln @@ -1,7 +1,7 @@  Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 16 -VisualStudioVersion = 16.0.30711.63 +# Visual Studio Version 17 +VisualStudioVersion = 17.3.32825.248 MinimumVisualStudioVersion = 10.0.40219.1 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ExtCore.Infrastructure", "src\ExtCore.Infrastructure\ExtCore.Infrastructure.csproj", "{1A7B4E8E-9D6D-4DD2-862D-92A6BDDBC2C8}" EndProject @@ -59,6 +59,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ExtCore.FileStorage.Dropbox EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ExtCore.FileStorage.FileSystem", "src\ExtCore.FileStorage.FileSystem\ExtCore.FileStorage.FileSystem.csproj", "{2031A605-DB91-4998-94DB-8012C590152B}" EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ExtCore.FileStorage.Azure", "src\ExtCore.FileStorage.Azure\ExtCore.FileStorage.Azure.csproj", "{6BDBDD17-3529-4A03-8DF1-25BEF8577E9B}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -153,6 +155,10 @@ Global {2031A605-DB91-4998-94DB-8012C590152B}.Debug|Any CPU.Build.0 = Debug|Any CPU {2031A605-DB91-4998-94DB-8012C590152B}.Release|Any CPU.ActiveCfg = Release|Any CPU {2031A605-DB91-4998-94DB-8012C590152B}.Release|Any CPU.Build.0 = Release|Any CPU + {6BDBDD17-3529-4A03-8DF1-25BEF8577E9B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6BDBDD17-3529-4A03-8DF1-25BEF8577E9B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6BDBDD17-3529-4A03-8DF1-25BEF8577E9B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {6BDBDD17-3529-4A03-8DF1-25BEF8577E9B}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -178,6 +184,7 @@ Global {EED241F9-4900-4FB0-91FD-432A5F40983D} = {2093A913-AB5F-4597-839E-A472E25D37D8} {D9FA3F92-D638-434D-9C0C-E74A6BCFDE7A} = {2093A913-AB5F-4597-839E-A472E25D37D8} {2031A605-DB91-4998-94DB-8012C590152B} = {2093A913-AB5F-4597-839E-A472E25D37D8} + {6BDBDD17-3529-4A03-8DF1-25BEF8577E9B} = {2093A913-AB5F-4597-839E-A472E25D37D8} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {DF807CB9-3F57-4CF4-B501-26F9D4BB417C} From 1f688214b21f71bfd8642e9345a233a08ab5f86f Mon Sep 17 00:00:00 2001 From: Dmitry Sikorsky Date: Thu, 8 Sep 2022 18:21:19 +0300 Subject: [PATCH 64/81] Fixed ExtCore.FileStorage.Azure package ID --- .../ExtCore.FileStorage.Azure.csproj | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/ExtCore.FileStorage.Azure/ExtCore.FileStorage.Azure.csproj b/src/ExtCore.FileStorage.Azure/ExtCore.FileStorage.Azure.csproj index 95a016b..4d0faf5 100644 --- a/src/ExtCore.FileStorage.Azure/ExtCore.FileStorage.Azure.csproj +++ b/src/ExtCore.FileStorage.Azure/ExtCore.FileStorage.Azure.csproj @@ -7,8 +7,8 @@ 7.1.0 netstandard2.0 8.0 - ExtCore.FileStorage.Dropbox - ExtCore.FileStorage.Dropbox + ExtCore.FileStorage.Azure + ExtCore.FileStorage.Azure icon.png https://extcore.net/ Apache-2.0 From 3b9630681dfbadb8bb5c2e955cf6c3f67df0e3f3 Mon Sep 17 00:00:00 2001 From: Dmitry Sikorsky Date: Sat, 10 Sep 2022 19:02:21 +0300 Subject: [PATCH 65/81] Fixed Azure container deletion --- .../ExtCore.Data.Abstractions.csproj | 2 +- .../ExtCore.Data.Dapper.MySql.csproj | 2 +- .../ExtCore.Data.Dapper.PostgreSql.csproj | 2 +- .../ExtCore.Data.Dapper.SqlServer.csproj | 2 +- .../ExtCore.Data.Dapper.Sqlite.csproj | 2 +- src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj | 2 +- src/ExtCore.Data.Dapper/Extension.cs | 2 +- .../ExtCore.Data.Entities.Abstractions.csproj | 2 +- .../ExtCore.Data.EntityFramework.MySql.csproj | 2 +- .../ExtCore.Data.EntityFramework.PostgreSql.csproj | 2 +- .../ExtCore.Data.EntityFramework.SqlServer.csproj | 2 +- .../ExtCore.Data.EntityFramework.Sqlite.csproj | 2 +- .../ExtCore.Data.EntityFramework.csproj | 2 +- src/ExtCore.Data.EntityFramework/Extension.cs | 2 +- src/ExtCore.Data/ExtCore.Data.csproj | 2 +- src/ExtCore.Data/Extension.cs | 2 +- src/ExtCore.Events/ExtCore.Events.csproj | 2 +- src/ExtCore.Events/Extension.cs | 2 +- .../ExtCore.FileStorage.Abstractions.csproj | 2 +- src/ExtCore.FileStorage.Azure/DirectoryProxy.cs | 9 ++++++++- .../ExtCore.FileStorage.Azure.csproj | 2 +- .../ExtCore.FileStorage.Dropbox.csproj | 2 +- .../ExtCore.FileStorage.FileSystem.csproj | 2 +- src/ExtCore.FileStorage/ExtCore.FileStorage.csproj | 2 +- src/ExtCore.FileStorage/Extension.cs | 2 +- src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj | 2 +- .../ExtCore.Mvc.Infrastructure.csproj | 2 +- src/ExtCore.Mvc/ExtCore.Mvc.csproj | 2 +- src/ExtCore.Mvc/Extension.cs | 2 +- src/ExtCore.WebApplication/ExtCore.WebApplication.csproj | 2 +- 30 files changed, 37 insertions(+), 30 deletions(-) diff --git a/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj b/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj index b5b301a..1256c30 100644 --- a/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj +++ b/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data extension component. Based on the ExtCore framework. - 7.1.0 + 7.1.1 netstandard2.0 ExtCore.Data.Abstractions ExtCore.Data.Abstractions diff --git a/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj b/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj index ca41168..284980f 100644 --- a/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj +++ b/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 7.1.0 + 7.1.1 net6.0 ExtCore.Data.Dapper.MySql ExtCore.Data.Dapper.MySql diff --git a/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj b/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj index db2f075..c2b3e2c 100644 --- a/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj +++ b/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 7.1.0 + 7.1.1 net6.0 ExtCore.Data.Dapper.PostgreSql ExtCore.Data.Dapper.PostgreSql diff --git a/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj b/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj index b40163f..56d1efa 100644 --- a/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj +++ b/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 7.1.0 + 7.1.1 net6.0 ExtCore.Data.Dapper.SqlServer ExtCore.Data.Dapper.SqlServer diff --git a/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj b/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj index bd89f8d..8da3aa8 100644 --- a/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj +++ b/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 7.1.0 + 7.1.1 net6.0 ExtCore.Data.Dapper.Sqlite ExtCore.Data.Dapper.Sqlite diff --git a/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj b/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj index 327c3cf..988ad07 100644 --- a/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj +++ b/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 7.1.0 + 7.1.1 net6.0 ExtCore.Data.Dapper ExtCore.Data.Dapper diff --git a/src/ExtCore.Data.Dapper/Extension.cs b/src/ExtCore.Data.Dapper/Extension.cs index b85d0d4..ea25b41 100644 --- a/src/ExtCore.Data.Dapper/Extension.cs +++ b/src/ExtCore.Data.Dapper/Extension.cs @@ -24,7 +24,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "7.1.0"; + public override string Version => "7.1.1"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj b/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj index 59ea42b..0e9f744 100644 --- a/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj +++ b/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data extension component. Based on the ExtCore framework. - 7.1.0 + 7.1.1 netstandard2.0 ExtCore.Data.Entities.Abstractions ExtCore.Data.Entities.Abstractions diff --git a/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj b/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj index d691f02..11db204 100644 --- a/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj +++ b/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 7.1.0 + 7.1.1 net6.0 ExtCore.Data.EntityFramework.MySql ExtCore.Data.EntityFramework.MySql diff --git a/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj b/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj index 29e6b66..5073c21 100644 --- a/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj +++ b/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 7.1.0 + 7.1.1 net6.0 ExtCore.Data.EntityFramework.PostgreSql ExtCore.Data.EntityFramework.PostgreSql diff --git a/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj b/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj index 8e187df..e0b6a95 100644 --- a/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj +++ b/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 7.1.0 + 7.1.1 net6.0 ExtCore.Data.EntityFramework.SqlServer ExtCore.Data.EntityFramework.SqlServer diff --git a/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj b/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj index 69a0443..8d9e41f 100644 --- a/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj +++ b/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 7.1.0 + 7.1.1 net6.0 ExtCore.Data.EntityFramework.Sqlite ExtCore.Data.EntityFramework.Sqlite diff --git a/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj b/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj index e937fbb..973107a 100644 --- a/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj +++ b/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 7.1.0 + 7.1.1 net6.0 ExtCore.Data.EntityFramework ExtCore.Data.EntityFramework diff --git a/src/ExtCore.Data.EntityFramework/Extension.cs b/src/ExtCore.Data.EntityFramework/Extension.cs index 6fb24dd..d485a29 100644 --- a/src/ExtCore.Data.EntityFramework/Extension.cs +++ b/src/ExtCore.Data.EntityFramework/Extension.cs @@ -24,7 +24,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "7.1.0"; + public override string Version => "7.1.1"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Data/ExtCore.Data.csproj b/src/ExtCore.Data/ExtCore.Data.csproj index a1b51c9..4323fb2 100644 --- a/src/ExtCore.Data/ExtCore.Data.csproj +++ b/src/ExtCore.Data/ExtCore.Data.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data extension component. Based on the ExtCore framework. - 7.1.0 + 7.1.1 net6.0 ExtCore.Data ExtCore.Data diff --git a/src/ExtCore.Data/Extension.cs b/src/ExtCore.Data/Extension.cs index 060116b..5c4a79b 100644 --- a/src/ExtCore.Data/Extension.cs +++ b/src/ExtCore.Data/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "7.1.0"; + public override string Version => "7.1.1"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Events/ExtCore.Events.csproj b/src/ExtCore.Events/ExtCore.Events.csproj index 027e00a..132e93e 100644 --- a/src/ExtCore.Events/ExtCore.Events.csproj +++ b/src/ExtCore.Events/ExtCore.Events.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Events extension component. Based on the ExtCore framework. - 7.1.0 + 7.1.1 net6.0 ExtCore.Events ExtCore.Events diff --git a/src/ExtCore.Events/Extension.cs b/src/ExtCore.Events/Extension.cs index 4ca4849..a472f06 100644 --- a/src/ExtCore.Events/Extension.cs +++ b/src/ExtCore.Events/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "7.1.0"; + public override string Version => "7.1.1"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.FileStorage.Abstractions/ExtCore.FileStorage.Abstractions.csproj b/src/ExtCore.FileStorage.Abstractions/ExtCore.FileStorage.Abstractions.csproj index c62211d..9786a31 100644 --- a/src/ExtCore.FileStorage.Abstractions/ExtCore.FileStorage.Abstractions.csproj +++ b/src/ExtCore.FileStorage.Abstractions/ExtCore.FileStorage.Abstractions.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2018 Dmitry Sikorsky The ExtCore.FileStorage extension component. Based on the ExtCore framework. - 7.1.0 + 7.1.1 netstandard2.0 ExtCore.FileStorage.Abstractions ExtCore.FileStorage.Abstractions diff --git a/src/ExtCore.FileStorage.Azure/DirectoryProxy.cs b/src/ExtCore.FileStorage.Azure/DirectoryProxy.cs index 23afa44..5db81aa 100644 --- a/src/ExtCore.FileStorage.Azure/DirectoryProxy.cs +++ b/src/ExtCore.FileStorage.Azure/DirectoryProxy.cs @@ -116,7 +116,14 @@ public async Task DeleteAsync(bool recursive) { BlobContainerClient blobContainerClient = this.GetBlobContainerClient(); - IAsyncEnumerable> pages = blobContainerClient.GetBlobsByHierarchyAsync(prefix: this.prefix + "/", delimiter: recursive ? null : "/").AsPages(); + if (string.IsNullOrEmpty(this.prefix)) + { + await blobContainerClient.DeleteAsync(); + return; + } + + string prefix = this.prefix + "/"; + IAsyncEnumerable> pages = blobContainerClient.GetBlobsByHierarchyAsync(prefix: prefix, delimiter: recursive ? null : "/").AsPages(); await foreach (Page page in pages) { diff --git a/src/ExtCore.FileStorage.Azure/ExtCore.FileStorage.Azure.csproj b/src/ExtCore.FileStorage.Azure/ExtCore.FileStorage.Azure.csproj index 4d0faf5..c8b1e58 100644 --- a/src/ExtCore.FileStorage.Azure/ExtCore.FileStorage.Azure.csproj +++ b/src/ExtCore.FileStorage.Azure/ExtCore.FileStorage.Azure.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2018 Dmitry Sikorsky The ExtCore.FileStorage extension component. Based on the ExtCore framework. - 7.1.0 + 7.1.1 netstandard2.0 8.0 ExtCore.FileStorage.Azure diff --git a/src/ExtCore.FileStorage.Dropbox/ExtCore.FileStorage.Dropbox.csproj b/src/ExtCore.FileStorage.Dropbox/ExtCore.FileStorage.Dropbox.csproj index ddaa95c..df4ebef 100644 --- a/src/ExtCore.FileStorage.Dropbox/ExtCore.FileStorage.Dropbox.csproj +++ b/src/ExtCore.FileStorage.Dropbox/ExtCore.FileStorage.Dropbox.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2018 Dmitry Sikorsky The ExtCore.FileStorage extension component. Based on the ExtCore framework. - 7.1.0 + 7.1.1 netstandard2.0 ExtCore.FileStorage.Dropbox ExtCore.FileStorage.Dropbox diff --git a/src/ExtCore.FileStorage.FileSystem/ExtCore.FileStorage.FileSystem.csproj b/src/ExtCore.FileStorage.FileSystem/ExtCore.FileStorage.FileSystem.csproj index 956519f..bf4eed4 100644 --- a/src/ExtCore.FileStorage.FileSystem/ExtCore.FileStorage.FileSystem.csproj +++ b/src/ExtCore.FileStorage.FileSystem/ExtCore.FileStorage.FileSystem.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2018 Dmitry Sikorsky The ExtCore.FileStorage extension component. Based on the ExtCore framework. - 7.1.0 + 7.1.1 netstandard2.0 ExtCore.FileStorage.FileSystem ExtCore.FileStorage.FileSystem diff --git a/src/ExtCore.FileStorage/ExtCore.FileStorage.csproj b/src/ExtCore.FileStorage/ExtCore.FileStorage.csproj index 0c18262..756ddee 100644 --- a/src/ExtCore.FileStorage/ExtCore.FileStorage.csproj +++ b/src/ExtCore.FileStorage/ExtCore.FileStorage.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2018 Dmitry Sikorsky The ExtCore.FileStorage extension component. Based on the ExtCore framework. - 7.1.0 + 7.1.1 net6.0 ExtCore.FileStorage ExtCore.FileStorage diff --git a/src/ExtCore.FileStorage/Extension.cs b/src/ExtCore.FileStorage/Extension.cs index 1a6b354..ac6187a 100644 --- a/src/ExtCore.FileStorage/Extension.cs +++ b/src/ExtCore.FileStorage/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "7.1.0"; + public override string Version => "7.1.1"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj b/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj index 25b0a7a..1999424 100644 --- a/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj +++ b/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky Free, open source and cross-platform framework for creating modular and extendable web applications based on ASP.NET Core. - 7.1.0 + 7.1.1 net6.0 ExtCore.Infrastructure ExtCore.Infrastructure diff --git a/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj b/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj index 248b3c0..3425665 100644 --- a/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj +++ b/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Mvc extension component. Based on the ExtCore framework. - 7.1.0 + 7.1.1 net6.0 ExtCore.Mvc.Infrastructure ExtCore.Mvc.Infrastructure diff --git a/src/ExtCore.Mvc/ExtCore.Mvc.csproj b/src/ExtCore.Mvc/ExtCore.Mvc.csproj index c33c2ec..50acbce 100644 --- a/src/ExtCore.Mvc/ExtCore.Mvc.csproj +++ b/src/ExtCore.Mvc/ExtCore.Mvc.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Mvc extension component. Based on the ExtCore framework. - 7.1.0 + 7.1.1 net6.0 ExtCore.Mvc ExtCore.Mvc diff --git a/src/ExtCore.Mvc/Extension.cs b/src/ExtCore.Mvc/Extension.cs index aa108ff..e599f95 100644 --- a/src/ExtCore.Mvc/Extension.cs +++ b/src/ExtCore.Mvc/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "7.1.0"; + public override string Version => "7.1.1"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj b/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj index a7d100a..4434d71 100644 --- a/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj +++ b/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky Free, open source and cross-platform framework for creating modular and extendable web applications based on ASP.NET Core. - 7.1.0 + 7.1.1 net6.0 ExtCore.WebApplication ExtCore.WebApplication From 0095ae2a03bd19574bf717b56a80922f3b170c9f Mon Sep 17 00:00:00 2001 From: Dmitry Sikorsky Date: Sun, 11 Sep 2022 15:22:25 +0300 Subject: [PATCH 66/81] Fixed Azure blob downloading as a stream bug --- .../ExtCore.Data.Abstractions.csproj | 2 +- .../ExtCore.Data.Dapper.MySql.csproj | 2 +- .../ExtCore.Data.Dapper.PostgreSql.csproj | 2 +- .../ExtCore.Data.Dapper.SqlServer.csproj | 2 +- .../ExtCore.Data.Dapper.Sqlite.csproj | 2 +- src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj | 2 +- src/ExtCore.Data.Dapper/Extension.cs | 2 +- .../ExtCore.Data.Entities.Abstractions.csproj | 2 +- .../ExtCore.Data.EntityFramework.MySql.csproj | 2 +- .../ExtCore.Data.EntityFramework.PostgreSql.csproj | 2 +- .../ExtCore.Data.EntityFramework.SqlServer.csproj | 2 +- .../ExtCore.Data.EntityFramework.Sqlite.csproj | 2 +- .../ExtCore.Data.EntityFramework.csproj | 2 +- src/ExtCore.Data.EntityFramework/Extension.cs | 2 +- src/ExtCore.Data/ExtCore.Data.csproj | 2 +- src/ExtCore.Data/Extension.cs | 2 +- src/ExtCore.Events/ExtCore.Events.csproj | 2 +- src/ExtCore.Events/Extension.cs | 2 +- .../ExtCore.FileStorage.Abstractions.csproj | 2 +- .../ExtCore.FileStorage.Azure.csproj | 2 +- src/ExtCore.FileStorage.Azure/FileProxy.cs | 5 ++++- .../ExtCore.FileStorage.Dropbox.csproj | 2 +- .../ExtCore.FileStorage.FileSystem.csproj | 2 +- src/ExtCore.FileStorage/ExtCore.FileStorage.csproj | 2 +- src/ExtCore.FileStorage/Extension.cs | 2 +- src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj | 2 +- .../ExtCore.Mvc.Infrastructure.csproj | 2 +- src/ExtCore.Mvc/ExtCore.Mvc.csproj | 2 +- src/ExtCore.Mvc/Extension.cs | 2 +- src/ExtCore.WebApplication/ExtCore.WebApplication.csproj | 2 +- 30 files changed, 33 insertions(+), 30 deletions(-) diff --git a/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj b/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj index 1256c30..4d35c66 100644 --- a/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj +++ b/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data extension component. Based on the ExtCore framework. - 7.1.1 + 7.1.2 netstandard2.0 ExtCore.Data.Abstractions ExtCore.Data.Abstractions diff --git a/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj b/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj index 284980f..7d0915d 100644 --- a/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj +++ b/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 7.1.1 + 7.1.2 net6.0 ExtCore.Data.Dapper.MySql ExtCore.Data.Dapper.MySql diff --git a/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj b/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj index c2b3e2c..7cd82fc 100644 --- a/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj +++ b/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 7.1.1 + 7.1.2 net6.0 ExtCore.Data.Dapper.PostgreSql ExtCore.Data.Dapper.PostgreSql diff --git a/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj b/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj index 56d1efa..807273a 100644 --- a/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj +++ b/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 7.1.1 + 7.1.2 net6.0 ExtCore.Data.Dapper.SqlServer ExtCore.Data.Dapper.SqlServer diff --git a/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj b/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj index 8da3aa8..8aaab29 100644 --- a/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj +++ b/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 7.1.1 + 7.1.2 net6.0 ExtCore.Data.Dapper.Sqlite ExtCore.Data.Dapper.Sqlite diff --git a/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj b/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj index 988ad07..ddd617f 100644 --- a/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj +++ b/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 7.1.1 + 7.1.2 net6.0 ExtCore.Data.Dapper ExtCore.Data.Dapper diff --git a/src/ExtCore.Data.Dapper/Extension.cs b/src/ExtCore.Data.Dapper/Extension.cs index ea25b41..553fd03 100644 --- a/src/ExtCore.Data.Dapper/Extension.cs +++ b/src/ExtCore.Data.Dapper/Extension.cs @@ -24,7 +24,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "7.1.1"; + public override string Version => "7.1.2"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj b/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj index 0e9f744..b39376f 100644 --- a/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj +++ b/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data extension component. Based on the ExtCore framework. - 7.1.1 + 7.1.2 netstandard2.0 ExtCore.Data.Entities.Abstractions ExtCore.Data.Entities.Abstractions diff --git a/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj b/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj index 11db204..b5c8734 100644 --- a/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj +++ b/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 7.1.1 + 7.1.2 net6.0 ExtCore.Data.EntityFramework.MySql ExtCore.Data.EntityFramework.MySql diff --git a/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj b/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj index 5073c21..8802ad2 100644 --- a/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj +++ b/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 7.1.1 + 7.1.2 net6.0 ExtCore.Data.EntityFramework.PostgreSql ExtCore.Data.EntityFramework.PostgreSql diff --git a/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj b/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj index e0b6a95..379d3a2 100644 --- a/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj +++ b/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 7.1.1 + 7.1.2 net6.0 ExtCore.Data.EntityFramework.SqlServer ExtCore.Data.EntityFramework.SqlServer diff --git a/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj b/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj index 8d9e41f..2c15552 100644 --- a/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj +++ b/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 7.1.1 + 7.1.2 net6.0 ExtCore.Data.EntityFramework.Sqlite ExtCore.Data.EntityFramework.Sqlite diff --git a/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj b/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj index 973107a..0ac7cfa 100644 --- a/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj +++ b/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 7.1.1 + 7.1.2 net6.0 ExtCore.Data.EntityFramework ExtCore.Data.EntityFramework diff --git a/src/ExtCore.Data.EntityFramework/Extension.cs b/src/ExtCore.Data.EntityFramework/Extension.cs index d485a29..55ce54e 100644 --- a/src/ExtCore.Data.EntityFramework/Extension.cs +++ b/src/ExtCore.Data.EntityFramework/Extension.cs @@ -24,7 +24,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "7.1.1"; + public override string Version => "7.1.2"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Data/ExtCore.Data.csproj b/src/ExtCore.Data/ExtCore.Data.csproj index 4323fb2..61ef708 100644 --- a/src/ExtCore.Data/ExtCore.Data.csproj +++ b/src/ExtCore.Data/ExtCore.Data.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data extension component. Based on the ExtCore framework. - 7.1.1 + 7.1.2 net6.0 ExtCore.Data ExtCore.Data diff --git a/src/ExtCore.Data/Extension.cs b/src/ExtCore.Data/Extension.cs index 5c4a79b..f562fc5 100644 --- a/src/ExtCore.Data/Extension.cs +++ b/src/ExtCore.Data/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "7.1.1"; + public override string Version => "7.1.2"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Events/ExtCore.Events.csproj b/src/ExtCore.Events/ExtCore.Events.csproj index 132e93e..b860ed6 100644 --- a/src/ExtCore.Events/ExtCore.Events.csproj +++ b/src/ExtCore.Events/ExtCore.Events.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Events extension component. Based on the ExtCore framework. - 7.1.1 + 7.1.2 net6.0 ExtCore.Events ExtCore.Events diff --git a/src/ExtCore.Events/Extension.cs b/src/ExtCore.Events/Extension.cs index a472f06..03b9cf5 100644 --- a/src/ExtCore.Events/Extension.cs +++ b/src/ExtCore.Events/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "7.1.1"; + public override string Version => "7.1.2"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.FileStorage.Abstractions/ExtCore.FileStorage.Abstractions.csproj b/src/ExtCore.FileStorage.Abstractions/ExtCore.FileStorage.Abstractions.csproj index 9786a31..cbe97e6 100644 --- a/src/ExtCore.FileStorage.Abstractions/ExtCore.FileStorage.Abstractions.csproj +++ b/src/ExtCore.FileStorage.Abstractions/ExtCore.FileStorage.Abstractions.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2018 Dmitry Sikorsky The ExtCore.FileStorage extension component. Based on the ExtCore framework. - 7.1.1 + 7.1.2 netstandard2.0 ExtCore.FileStorage.Abstractions ExtCore.FileStorage.Abstractions diff --git a/src/ExtCore.FileStorage.Azure/ExtCore.FileStorage.Azure.csproj b/src/ExtCore.FileStorage.Azure/ExtCore.FileStorage.Azure.csproj index c8b1e58..3891c21 100644 --- a/src/ExtCore.FileStorage.Azure/ExtCore.FileStorage.Azure.csproj +++ b/src/ExtCore.FileStorage.Azure/ExtCore.FileStorage.Azure.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2018 Dmitry Sikorsky The ExtCore.FileStorage extension component. Based on the ExtCore framework. - 7.1.1 + 7.1.2 netstandard2.0 8.0 ExtCore.FileStorage.Azure diff --git a/src/ExtCore.FileStorage.Azure/FileProxy.cs b/src/ExtCore.FileStorage.Azure/FileProxy.cs index 8214d78..ced75b6 100644 --- a/src/ExtCore.FileStorage.Azure/FileProxy.cs +++ b/src/ExtCore.FileStorage.Azure/FileProxy.cs @@ -98,8 +98,11 @@ public async Task ReadStreamAsync() try { BlobClient blobClient = await this.GetBlobClient(); + MemoryStream stream = new MemoryStream(); - return (await blobClient.DownloadStreamingAsync()).Value.Content; + await blobClient.DownloadToAsync(stream); + stream.Position = 0; + return stream; } catch (Exception e) diff --git a/src/ExtCore.FileStorage.Dropbox/ExtCore.FileStorage.Dropbox.csproj b/src/ExtCore.FileStorage.Dropbox/ExtCore.FileStorage.Dropbox.csproj index df4ebef..a8117fa 100644 --- a/src/ExtCore.FileStorage.Dropbox/ExtCore.FileStorage.Dropbox.csproj +++ b/src/ExtCore.FileStorage.Dropbox/ExtCore.FileStorage.Dropbox.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2018 Dmitry Sikorsky The ExtCore.FileStorage extension component. Based on the ExtCore framework. - 7.1.1 + 7.1.2 netstandard2.0 ExtCore.FileStorage.Dropbox ExtCore.FileStorage.Dropbox diff --git a/src/ExtCore.FileStorage.FileSystem/ExtCore.FileStorage.FileSystem.csproj b/src/ExtCore.FileStorage.FileSystem/ExtCore.FileStorage.FileSystem.csproj index bf4eed4..99e12e3 100644 --- a/src/ExtCore.FileStorage.FileSystem/ExtCore.FileStorage.FileSystem.csproj +++ b/src/ExtCore.FileStorage.FileSystem/ExtCore.FileStorage.FileSystem.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2018 Dmitry Sikorsky The ExtCore.FileStorage extension component. Based on the ExtCore framework. - 7.1.1 + 7.1.2 netstandard2.0 ExtCore.FileStorage.FileSystem ExtCore.FileStorage.FileSystem diff --git a/src/ExtCore.FileStorage/ExtCore.FileStorage.csproj b/src/ExtCore.FileStorage/ExtCore.FileStorage.csproj index 756ddee..217938b 100644 --- a/src/ExtCore.FileStorage/ExtCore.FileStorage.csproj +++ b/src/ExtCore.FileStorage/ExtCore.FileStorage.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2018 Dmitry Sikorsky The ExtCore.FileStorage extension component. Based on the ExtCore framework. - 7.1.1 + 7.1.2 net6.0 ExtCore.FileStorage ExtCore.FileStorage diff --git a/src/ExtCore.FileStorage/Extension.cs b/src/ExtCore.FileStorage/Extension.cs index ac6187a..26206c1 100644 --- a/src/ExtCore.FileStorage/Extension.cs +++ b/src/ExtCore.FileStorage/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "7.1.1"; + public override string Version => "7.1.2"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj b/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj index 1999424..6008068 100644 --- a/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj +++ b/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky Free, open source and cross-platform framework for creating modular and extendable web applications based on ASP.NET Core. - 7.1.1 + 7.1.2 net6.0 ExtCore.Infrastructure ExtCore.Infrastructure diff --git a/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj b/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj index 3425665..9fdbecc 100644 --- a/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj +++ b/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Mvc extension component. Based on the ExtCore framework. - 7.1.1 + 7.1.2 net6.0 ExtCore.Mvc.Infrastructure ExtCore.Mvc.Infrastructure diff --git a/src/ExtCore.Mvc/ExtCore.Mvc.csproj b/src/ExtCore.Mvc/ExtCore.Mvc.csproj index 50acbce..3ab4068 100644 --- a/src/ExtCore.Mvc/ExtCore.Mvc.csproj +++ b/src/ExtCore.Mvc/ExtCore.Mvc.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Mvc extension component. Based on the ExtCore framework. - 7.1.1 + 7.1.2 net6.0 ExtCore.Mvc ExtCore.Mvc diff --git a/src/ExtCore.Mvc/Extension.cs b/src/ExtCore.Mvc/Extension.cs index e599f95..f1bfe33 100644 --- a/src/ExtCore.Mvc/Extension.cs +++ b/src/ExtCore.Mvc/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "7.1.1"; + public override string Version => "7.1.2"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj b/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj index 4434d71..26bb168 100644 --- a/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj +++ b/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky Free, open source and cross-platform framework for creating modular and extendable web applications based on ASP.NET Core. - 7.1.1 + 7.1.2 net6.0 ExtCore.WebApplication ExtCore.WebApplication From 7e169936824837d7121976dd8386624d02a63b68 Mon Sep 17 00:00:00 2001 From: Dmitry Sikorsky Date: Sun, 11 Sep 2022 15:22:50 +0300 Subject: [PATCH 67/81] Fixed version in README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 5a1ff56..612ceb0 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# ExtCore 7.1.0 +# ExtCore 7.1.2 [![Join the chat at https://gitter.im/ExtCore/ExtCore](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/ExtCore/ExtCore?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) From d7b9141ee42fde4e02e45bef080de1e59abcdfd4 Mon Sep 17 00:00:00 2001 From: Dmitry Sikorsky Date: Mon, 24 Oct 2022 13:50:52 +0300 Subject: [PATCH 68/81] Changed default Azure blob access level to private --- README.md | 2 +- src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj | 2 +- src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj | 2 +- .../ExtCore.Data.Dapper.PostgreSql.csproj | 2 +- .../ExtCore.Data.Dapper.SqlServer.csproj | 2 +- .../ExtCore.Data.Dapper.Sqlite.csproj | 2 +- src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj | 2 +- src/ExtCore.Data.Dapper/Extension.cs | 2 +- .../ExtCore.Data.Entities.Abstractions.csproj | 2 +- .../ExtCore.Data.EntityFramework.MySql.csproj | 2 +- .../ExtCore.Data.EntityFramework.PostgreSql.csproj | 2 +- .../ExtCore.Data.EntityFramework.SqlServer.csproj | 2 +- .../ExtCore.Data.EntityFramework.Sqlite.csproj | 2 +- .../ExtCore.Data.EntityFramework.csproj | 2 +- src/ExtCore.Data.EntityFramework/Extension.cs | 2 +- src/ExtCore.Data/ExtCore.Data.csproj | 2 +- src/ExtCore.Data/Extension.cs | 2 +- src/ExtCore.Events/ExtCore.Events.csproj | 2 +- src/ExtCore.Events/Extension.cs | 2 +- .../ExtCore.FileStorage.Abstractions.csproj | 2 +- src/ExtCore.FileStorage.Azure/DirectoryProxy.cs | 2 +- src/ExtCore.FileStorage.Azure/ExtCore.FileStorage.Azure.csproj | 2 +- src/ExtCore.FileStorage.Azure/FileProxy.cs | 2 +- .../ExtCore.FileStorage.Dropbox.csproj | 2 +- .../ExtCore.FileStorage.FileSystem.csproj | 2 +- src/ExtCore.FileStorage/ExtCore.FileStorage.csproj | 2 +- src/ExtCore.FileStorage/Extension.cs | 2 +- src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj | 2 +- .../ExtCore.Mvc.Infrastructure.csproj | 2 +- src/ExtCore.Mvc/ExtCore.Mvc.csproj | 2 +- src/ExtCore.Mvc/Extension.cs | 2 +- src/ExtCore.WebApplication/ExtCore.WebApplication.csproj | 2 +- 32 files changed, 32 insertions(+), 32 deletions(-) diff --git a/README.md b/README.md index 612ceb0..3835991 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# ExtCore 7.1.2 +# ExtCore 7.1.3 [![Join the chat at https://gitter.im/ExtCore/ExtCore](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/ExtCore/ExtCore?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) diff --git a/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj b/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj index 4d35c66..60010e6 100644 --- a/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj +++ b/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data extension component. Based on the ExtCore framework. - 7.1.2 + 7.1.3 netstandard2.0 ExtCore.Data.Abstractions ExtCore.Data.Abstractions diff --git a/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj b/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj index 7d0915d..1f24fcd 100644 --- a/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj +++ b/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 7.1.2 + 7.1.3 net6.0 ExtCore.Data.Dapper.MySql ExtCore.Data.Dapper.MySql diff --git a/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj b/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj index 7cd82fc..5a423fd 100644 --- a/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj +++ b/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 7.1.2 + 7.1.3 net6.0 ExtCore.Data.Dapper.PostgreSql ExtCore.Data.Dapper.PostgreSql diff --git a/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj b/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj index 807273a..4f8c1cc 100644 --- a/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj +++ b/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 7.1.2 + 7.1.3 net6.0 ExtCore.Data.Dapper.SqlServer ExtCore.Data.Dapper.SqlServer diff --git a/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj b/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj index 8aaab29..7e62b54 100644 --- a/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj +++ b/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 7.1.2 + 7.1.3 net6.0 ExtCore.Data.Dapper.Sqlite ExtCore.Data.Dapper.Sqlite diff --git a/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj b/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj index ddd617f..e6f1038 100644 --- a/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj +++ b/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 7.1.2 + 7.1.3 net6.0 ExtCore.Data.Dapper ExtCore.Data.Dapper diff --git a/src/ExtCore.Data.Dapper/Extension.cs b/src/ExtCore.Data.Dapper/Extension.cs index 553fd03..5d1c1f4 100644 --- a/src/ExtCore.Data.Dapper/Extension.cs +++ b/src/ExtCore.Data.Dapper/Extension.cs @@ -24,7 +24,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "7.1.2"; + public override string Version => "7.1.3"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj b/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj index b39376f..2c8eb1c 100644 --- a/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj +++ b/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data extension component. Based on the ExtCore framework. - 7.1.2 + 7.1.3 netstandard2.0 ExtCore.Data.Entities.Abstractions ExtCore.Data.Entities.Abstractions diff --git a/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj b/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj index b5c8734..c817e2a 100644 --- a/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj +++ b/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 7.1.2 + 7.1.3 net6.0 ExtCore.Data.EntityFramework.MySql ExtCore.Data.EntityFramework.MySql diff --git a/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj b/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj index 8802ad2..40b1c44 100644 --- a/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj +++ b/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 7.1.2 + 7.1.3 net6.0 ExtCore.Data.EntityFramework.PostgreSql ExtCore.Data.EntityFramework.PostgreSql diff --git a/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj b/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj index 379d3a2..0bf3bd3 100644 --- a/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj +++ b/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 7.1.2 + 7.1.3 net6.0 ExtCore.Data.EntityFramework.SqlServer ExtCore.Data.EntityFramework.SqlServer diff --git a/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj b/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj index 2c15552..4f5d828 100644 --- a/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj +++ b/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 7.1.2 + 7.1.3 net6.0 ExtCore.Data.EntityFramework.Sqlite ExtCore.Data.EntityFramework.Sqlite diff --git a/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj b/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj index 0ac7cfa..da7108b 100644 --- a/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj +++ b/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 7.1.2 + 7.1.3 net6.0 ExtCore.Data.EntityFramework ExtCore.Data.EntityFramework diff --git a/src/ExtCore.Data.EntityFramework/Extension.cs b/src/ExtCore.Data.EntityFramework/Extension.cs index 55ce54e..b5a0e8c 100644 --- a/src/ExtCore.Data.EntityFramework/Extension.cs +++ b/src/ExtCore.Data.EntityFramework/Extension.cs @@ -24,7 +24,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "7.1.2"; + public override string Version => "7.1.3"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Data/ExtCore.Data.csproj b/src/ExtCore.Data/ExtCore.Data.csproj index 61ef708..ff1350a 100644 --- a/src/ExtCore.Data/ExtCore.Data.csproj +++ b/src/ExtCore.Data/ExtCore.Data.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data extension component. Based on the ExtCore framework. - 7.1.2 + 7.1.3 net6.0 ExtCore.Data ExtCore.Data diff --git a/src/ExtCore.Data/Extension.cs b/src/ExtCore.Data/Extension.cs index f562fc5..054321b 100644 --- a/src/ExtCore.Data/Extension.cs +++ b/src/ExtCore.Data/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "7.1.2"; + public override string Version => "7.1.3"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Events/ExtCore.Events.csproj b/src/ExtCore.Events/ExtCore.Events.csproj index b860ed6..76ed103 100644 --- a/src/ExtCore.Events/ExtCore.Events.csproj +++ b/src/ExtCore.Events/ExtCore.Events.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Events extension component. Based on the ExtCore framework. - 7.1.2 + 7.1.3 net6.0 ExtCore.Events ExtCore.Events diff --git a/src/ExtCore.Events/Extension.cs b/src/ExtCore.Events/Extension.cs index 03b9cf5..37f04b9 100644 --- a/src/ExtCore.Events/Extension.cs +++ b/src/ExtCore.Events/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "7.1.2"; + public override string Version => "7.1.3"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.FileStorage.Abstractions/ExtCore.FileStorage.Abstractions.csproj b/src/ExtCore.FileStorage.Abstractions/ExtCore.FileStorage.Abstractions.csproj index cbe97e6..dd48ed9 100644 --- a/src/ExtCore.FileStorage.Abstractions/ExtCore.FileStorage.Abstractions.csproj +++ b/src/ExtCore.FileStorage.Abstractions/ExtCore.FileStorage.Abstractions.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2018 Dmitry Sikorsky The ExtCore.FileStorage extension component. Based on the ExtCore framework. - 7.1.2 + 7.1.3 netstandard2.0 ExtCore.FileStorage.Abstractions ExtCore.FileStorage.Abstractions diff --git a/src/ExtCore.FileStorage.Azure/DirectoryProxy.cs b/src/ExtCore.FileStorage.Azure/DirectoryProxy.cs index 5db81aa..6e0be3d 100644 --- a/src/ExtCore.FileStorage.Azure/DirectoryProxy.cs +++ b/src/ExtCore.FileStorage.Azure/DirectoryProxy.cs @@ -218,7 +218,7 @@ private async Task GetBlobClient(BlobItem blobItem) { BlobContainerClient blobContainerClient = this.GetBlobContainerClient(); - await blobContainerClient.CreateIfNotExistsAsync(PublicAccessType.Blob); + await blobContainerClient.CreateIfNotExistsAsync(); return blobContainerClient.GetBlobClient(blobItem.Name); } } diff --git a/src/ExtCore.FileStorage.Azure/ExtCore.FileStorage.Azure.csproj b/src/ExtCore.FileStorage.Azure/ExtCore.FileStorage.Azure.csproj index 3891c21..0dca7f2 100644 --- a/src/ExtCore.FileStorage.Azure/ExtCore.FileStorage.Azure.csproj +++ b/src/ExtCore.FileStorage.Azure/ExtCore.FileStorage.Azure.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2018 Dmitry Sikorsky The ExtCore.FileStorage extension component. Based on the ExtCore framework. - 7.1.2 + 7.1.3 netstandard2.0 8.0 ExtCore.FileStorage.Azure diff --git a/src/ExtCore.FileStorage.Azure/FileProxy.cs b/src/ExtCore.FileStorage.Azure/FileProxy.cs index ced75b6..b95a2ba 100644 --- a/src/ExtCore.FileStorage.Azure/FileProxy.cs +++ b/src/ExtCore.FileStorage.Azure/FileProxy.cs @@ -261,7 +261,7 @@ private async Task GetBlobClient() BlobServiceClient blobServiceClient = new BlobServiceClient(this.connectionString); BlobContainerClient blobContainerClient = blobServiceClient.GetBlobContainerClient(this.containerName); - await blobContainerClient.CreateIfNotExistsAsync(PublicAccessType.Blob); + await blobContainerClient.CreateIfNotExistsAsync(); return blobContainerClient.GetBlobClient(this.blobName); } } diff --git a/src/ExtCore.FileStorage.Dropbox/ExtCore.FileStorage.Dropbox.csproj b/src/ExtCore.FileStorage.Dropbox/ExtCore.FileStorage.Dropbox.csproj index a8117fa..09c0e44 100644 --- a/src/ExtCore.FileStorage.Dropbox/ExtCore.FileStorage.Dropbox.csproj +++ b/src/ExtCore.FileStorage.Dropbox/ExtCore.FileStorage.Dropbox.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2018 Dmitry Sikorsky The ExtCore.FileStorage extension component. Based on the ExtCore framework. - 7.1.2 + 7.1.3 netstandard2.0 ExtCore.FileStorage.Dropbox ExtCore.FileStorage.Dropbox diff --git a/src/ExtCore.FileStorage.FileSystem/ExtCore.FileStorage.FileSystem.csproj b/src/ExtCore.FileStorage.FileSystem/ExtCore.FileStorage.FileSystem.csproj index 99e12e3..954323a 100644 --- a/src/ExtCore.FileStorage.FileSystem/ExtCore.FileStorage.FileSystem.csproj +++ b/src/ExtCore.FileStorage.FileSystem/ExtCore.FileStorage.FileSystem.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2018 Dmitry Sikorsky The ExtCore.FileStorage extension component. Based on the ExtCore framework. - 7.1.2 + 7.1.3 netstandard2.0 ExtCore.FileStorage.FileSystem ExtCore.FileStorage.FileSystem diff --git a/src/ExtCore.FileStorage/ExtCore.FileStorage.csproj b/src/ExtCore.FileStorage/ExtCore.FileStorage.csproj index 217938b..0122388 100644 --- a/src/ExtCore.FileStorage/ExtCore.FileStorage.csproj +++ b/src/ExtCore.FileStorage/ExtCore.FileStorage.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2018 Dmitry Sikorsky The ExtCore.FileStorage extension component. Based on the ExtCore framework. - 7.1.2 + 7.1.3 net6.0 ExtCore.FileStorage ExtCore.FileStorage diff --git a/src/ExtCore.FileStorage/Extension.cs b/src/ExtCore.FileStorage/Extension.cs index 26206c1..8954ee9 100644 --- a/src/ExtCore.FileStorage/Extension.cs +++ b/src/ExtCore.FileStorage/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "7.1.2"; + public override string Version => "7.1.3"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj b/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj index 6008068..6b6370d 100644 --- a/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj +++ b/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky Free, open source and cross-platform framework for creating modular and extendable web applications based on ASP.NET Core. - 7.1.2 + 7.1.3 net6.0 ExtCore.Infrastructure ExtCore.Infrastructure diff --git a/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj b/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj index 9fdbecc..aad0ec1 100644 --- a/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj +++ b/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Mvc extension component. Based on the ExtCore framework. - 7.1.2 + 7.1.3 net6.0 ExtCore.Mvc.Infrastructure ExtCore.Mvc.Infrastructure diff --git a/src/ExtCore.Mvc/ExtCore.Mvc.csproj b/src/ExtCore.Mvc/ExtCore.Mvc.csproj index 3ab4068..d4b331c 100644 --- a/src/ExtCore.Mvc/ExtCore.Mvc.csproj +++ b/src/ExtCore.Mvc/ExtCore.Mvc.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Mvc extension component. Based on the ExtCore framework. - 7.1.2 + 7.1.3 net6.0 ExtCore.Mvc ExtCore.Mvc diff --git a/src/ExtCore.Mvc/Extension.cs b/src/ExtCore.Mvc/Extension.cs index f1bfe33..b580c0a 100644 --- a/src/ExtCore.Mvc/Extension.cs +++ b/src/ExtCore.Mvc/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "7.1.2"; + public override string Version => "7.1.3"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj b/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj index 26bb168..6f886c3 100644 --- a/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj +++ b/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky Free, open source and cross-platform framework for creating modular and extendable web applications based on ASP.NET Core. - 7.1.2 + 7.1.3 net6.0 ExtCore.WebApplication ExtCore.WebApplication From 9e8472fb10f222d32c385b3c58dae03d50f7833b Mon Sep 17 00:00:00 2001 From: Dmitry Sikorsky Date: Tue, 29 Nov 2022 20:34:30 +0200 Subject: [PATCH 69/81] Moved from .NET 6 to .NET 7 --- README.md | 2 +- .../ExtCore.Data.Abstractions.csproj | 2 +- .../ExtCore.Data.Dapper.MySql.csproj | 6 +++--- .../ExtCore.Data.Dapper.PostgreSql.csproj | 6 +++--- .../ExtCore.Data.Dapper.SqlServer.csproj | 4 ++-- .../ExtCore.Data.Dapper.Sqlite.csproj | 6 +++--- src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj | 4 ++-- src/ExtCore.Data.Dapper/Extension.cs | 2 +- .../ExtCore.Data.Entities.Abstractions.csproj | 2 +- .../ExtCore.Data.EntityFramework.MySql.csproj | 6 +++--- .../ExtCore.Data.EntityFramework.PostgreSql.csproj | 6 +++--- .../ExtCore.Data.EntityFramework.SqlServer.csproj | 6 +++--- .../ExtCore.Data.EntityFramework.Sqlite.csproj | 6 +++--- .../ExtCore.Data.EntityFramework.csproj | 6 +++--- src/ExtCore.Data.EntityFramework/Extension.cs | 2 +- src/ExtCore.Data/ExtCore.Data.csproj | 4 ++-- src/ExtCore.Data/Extension.cs | 2 +- src/ExtCore.Events/ExtCore.Events.csproj | 4 ++-- src/ExtCore.Events/Extension.cs | 2 +- .../ExtCore.FileStorage.Abstractions.csproj | 2 +- .../ExtCore.FileStorage.Azure.csproj | 8 ++++---- .../ExtCore.FileStorage.Dropbox.csproj | 6 +++--- .../ExtCore.FileStorage.FileSystem.csproj | 4 ++-- src/ExtCore.FileStorage/ExtCore.FileStorage.csproj | 4 ++-- src/ExtCore.FileStorage/Extension.cs | 2 +- src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj | 4 ++-- .../ExtCore.Mvc.Infrastructure.csproj | 4 ++-- src/ExtCore.Mvc/ExtCore.Mvc.csproj | 6 +++--- src/ExtCore.Mvc/Extension.cs | 2 +- src/ExtCore.WebApplication/ExtCore.WebApplication.csproj | 6 +++--- 30 files changed, 63 insertions(+), 63 deletions(-) diff --git a/README.md b/README.md index 3835991..76f5662 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# ExtCore 7.1.3 +# ExtCore 8.0.0 [![Join the chat at https://gitter.im/ExtCore/ExtCore](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/ExtCore/ExtCore?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) diff --git a/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj b/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj index 60010e6..2335d6c 100644 --- a/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj +++ b/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data extension component. Based on the ExtCore framework. - 7.1.3 + 8.0.0 netstandard2.0 ExtCore.Data.Abstractions ExtCore.Data.Abstractions diff --git a/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj b/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj index 1f24fcd..681bbcb 100644 --- a/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj +++ b/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj @@ -4,8 +4,8 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 7.1.3 - net6.0 + 8.0.0 + net7.0 ExtCore.Data.Dapper.MySql ExtCore.Data.Dapper.MySql icon.png @@ -18,7 +18,7 @@ - + diff --git a/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj b/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj index 5a423fd..8bbddf0 100644 --- a/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj +++ b/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj @@ -4,8 +4,8 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 7.1.3 - net6.0 + 8.0.0 + net7.0 ExtCore.Data.Dapper.PostgreSql ExtCore.Data.Dapper.PostgreSql icon.png @@ -18,7 +18,7 @@ - + diff --git a/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj b/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj index 4f8c1cc..497fb5a 100644 --- a/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj +++ b/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj @@ -4,8 +4,8 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 7.1.3 - net6.0 + 8.0.0 + net7.0 ExtCore.Data.Dapper.SqlServer ExtCore.Data.Dapper.SqlServer icon.png diff --git a/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj b/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj index 7e62b54..94ea910 100644 --- a/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj +++ b/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj @@ -4,8 +4,8 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 7.1.3 - net6.0 + 8.0.0 + net7.0 ExtCore.Data.Dapper.Sqlite ExtCore.Data.Dapper.Sqlite icon.png @@ -18,7 +18,7 @@ - + diff --git a/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj b/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj index e6f1038..12fd108 100644 --- a/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj +++ b/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj @@ -4,8 +4,8 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 7.1.3 - net6.0 + 8.0.0 + net7.0 ExtCore.Data.Dapper ExtCore.Data.Dapper icon.png diff --git a/src/ExtCore.Data.Dapper/Extension.cs b/src/ExtCore.Data.Dapper/Extension.cs index 5d1c1f4..03fc662 100644 --- a/src/ExtCore.Data.Dapper/Extension.cs +++ b/src/ExtCore.Data.Dapper/Extension.cs @@ -24,7 +24,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "7.1.3"; + public override string Version => "8.0.0"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj b/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj index 2c8eb1c..38cfc21 100644 --- a/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj +++ b/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data extension component. Based on the ExtCore framework. - 7.1.3 + 8.0.0 netstandard2.0 ExtCore.Data.Entities.Abstractions ExtCore.Data.Entities.Abstractions diff --git a/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj b/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj index c817e2a..02d921e 100644 --- a/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj +++ b/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj @@ -4,8 +4,8 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 7.1.3 - net6.0 + 8.0.0 + net7.0 ExtCore.Data.EntityFramework.MySql ExtCore.Data.EntityFramework.MySql icon.png @@ -18,7 +18,7 @@ - + diff --git a/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj b/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj index 40b1c44..61a346b 100644 --- a/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj +++ b/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj @@ -4,8 +4,8 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 7.1.3 - net6.0 + 8.0.0 + net7.0 ExtCore.Data.EntityFramework.PostgreSql ExtCore.Data.EntityFramework.PostgreSql icon.png @@ -18,7 +18,7 @@ - + diff --git a/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj b/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj index 0bf3bd3..a6bb98e 100644 --- a/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj +++ b/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj @@ -4,8 +4,8 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 7.1.3 - net6.0 + 8.0.0 + net7.0 ExtCore.Data.EntityFramework.SqlServer ExtCore.Data.EntityFramework.SqlServer icon.png @@ -18,7 +18,7 @@ - + diff --git a/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj b/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj index 4f5d828..fcb857d 100644 --- a/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj +++ b/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj @@ -4,8 +4,8 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 7.1.3 - net6.0 + 8.0.0 + net7.0 ExtCore.Data.EntityFramework.Sqlite ExtCore.Data.EntityFramework.Sqlite icon.png @@ -18,7 +18,7 @@ - + diff --git a/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj b/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj index da7108b..0fcdfa3 100644 --- a/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj +++ b/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj @@ -4,8 +4,8 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 7.1.3 - net6.0 + 8.0.0 + net7.0 ExtCore.Data.EntityFramework ExtCore.Data.EntityFramework icon.png @@ -18,7 +18,7 @@ - + diff --git a/src/ExtCore.Data.EntityFramework/Extension.cs b/src/ExtCore.Data.EntityFramework/Extension.cs index b5a0e8c..8490d4e 100644 --- a/src/ExtCore.Data.EntityFramework/Extension.cs +++ b/src/ExtCore.Data.EntityFramework/Extension.cs @@ -24,7 +24,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "7.1.3"; + public override string Version => "8.0.0"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Data/ExtCore.Data.csproj b/src/ExtCore.Data/ExtCore.Data.csproj index ff1350a..acb87fe 100644 --- a/src/ExtCore.Data/ExtCore.Data.csproj +++ b/src/ExtCore.Data/ExtCore.Data.csproj @@ -4,8 +4,8 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data extension component. Based on the ExtCore framework. - 7.1.3 - net6.0 + 8.0.0 + net7.0 ExtCore.Data ExtCore.Data icon.png diff --git a/src/ExtCore.Data/Extension.cs b/src/ExtCore.Data/Extension.cs index 054321b..b1cc4fd 100644 --- a/src/ExtCore.Data/Extension.cs +++ b/src/ExtCore.Data/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "7.1.3"; + public override string Version => "8.0.0"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Events/ExtCore.Events.csproj b/src/ExtCore.Events/ExtCore.Events.csproj index 76ed103..b471dd1 100644 --- a/src/ExtCore.Events/ExtCore.Events.csproj +++ b/src/ExtCore.Events/ExtCore.Events.csproj @@ -4,8 +4,8 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Events extension component. Based on the ExtCore framework. - 7.1.3 - net6.0 + 8.0.0 + net7.0 ExtCore.Events ExtCore.Events icon.png diff --git a/src/ExtCore.Events/Extension.cs b/src/ExtCore.Events/Extension.cs index 37f04b9..19c8737 100644 --- a/src/ExtCore.Events/Extension.cs +++ b/src/ExtCore.Events/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "7.1.3"; + public override string Version => "8.0.0"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.FileStorage.Abstractions/ExtCore.FileStorage.Abstractions.csproj b/src/ExtCore.FileStorage.Abstractions/ExtCore.FileStorage.Abstractions.csproj index dd48ed9..6fe5bb8 100644 --- a/src/ExtCore.FileStorage.Abstractions/ExtCore.FileStorage.Abstractions.csproj +++ b/src/ExtCore.FileStorage.Abstractions/ExtCore.FileStorage.Abstractions.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2018 Dmitry Sikorsky The ExtCore.FileStorage extension component. Based on the ExtCore framework. - 7.1.3 + 8.0.0 netstandard2.0 ExtCore.FileStorage.Abstractions ExtCore.FileStorage.Abstractions diff --git a/src/ExtCore.FileStorage.Azure/ExtCore.FileStorage.Azure.csproj b/src/ExtCore.FileStorage.Azure/ExtCore.FileStorage.Azure.csproj index 0dca7f2..01a8656 100644 --- a/src/ExtCore.FileStorage.Azure/ExtCore.FileStorage.Azure.csproj +++ b/src/ExtCore.FileStorage.Azure/ExtCore.FileStorage.Azure.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2018 Dmitry Sikorsky The ExtCore.FileStorage extension component. Based on the ExtCore framework. - 7.1.3 + 8.0.0 netstandard2.0 8.0 ExtCore.FileStorage.Azure @@ -19,9 +19,9 @@ - - - + + + diff --git a/src/ExtCore.FileStorage.Dropbox/ExtCore.FileStorage.Dropbox.csproj b/src/ExtCore.FileStorage.Dropbox/ExtCore.FileStorage.Dropbox.csproj index 09c0e44..9978be7 100644 --- a/src/ExtCore.FileStorage.Dropbox/ExtCore.FileStorage.Dropbox.csproj +++ b/src/ExtCore.FileStorage.Dropbox/ExtCore.FileStorage.Dropbox.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2018 Dmitry Sikorsky The ExtCore.FileStorage extension component. Based on the ExtCore framework. - 7.1.3 + 8.0.0 netstandard2.0 ExtCore.FileStorage.Dropbox ExtCore.FileStorage.Dropbox @@ -18,8 +18,8 @@ - - + + diff --git a/src/ExtCore.FileStorage.FileSystem/ExtCore.FileStorage.FileSystem.csproj b/src/ExtCore.FileStorage.FileSystem/ExtCore.FileStorage.FileSystem.csproj index 954323a..571db38 100644 --- a/src/ExtCore.FileStorage.FileSystem/ExtCore.FileStorage.FileSystem.csproj +++ b/src/ExtCore.FileStorage.FileSystem/ExtCore.FileStorage.FileSystem.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2018 Dmitry Sikorsky The ExtCore.FileStorage extension component. Based on the ExtCore framework. - 7.1.3 + 8.0.0 netstandard2.0 ExtCore.FileStorage.FileSystem ExtCore.FileStorage.FileSystem @@ -18,7 +18,7 @@ - + diff --git a/src/ExtCore.FileStorage/ExtCore.FileStorage.csproj b/src/ExtCore.FileStorage/ExtCore.FileStorage.csproj index 0122388..d70c115 100644 --- a/src/ExtCore.FileStorage/ExtCore.FileStorage.csproj +++ b/src/ExtCore.FileStorage/ExtCore.FileStorage.csproj @@ -4,8 +4,8 @@ Dmitry Sikorsky Copyright © 2018 Dmitry Sikorsky The ExtCore.FileStorage extension component. Based on the ExtCore framework. - 7.1.3 - net6.0 + 8.0.0 + net7.0 ExtCore.FileStorage ExtCore.FileStorage icon.png diff --git a/src/ExtCore.FileStorage/Extension.cs b/src/ExtCore.FileStorage/Extension.cs index 8954ee9..0c5cbee 100644 --- a/src/ExtCore.FileStorage/Extension.cs +++ b/src/ExtCore.FileStorage/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "7.1.3"; + public override string Version => "8.0.0"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj b/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj index 6b6370d..e177fc6 100644 --- a/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj +++ b/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj @@ -4,8 +4,8 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky Free, open source and cross-platform framework for creating modular and extendable web applications based on ASP.NET Core. - 7.1.3 - net6.0 + 8.0.0 + net7.0 ExtCore.Infrastructure ExtCore.Infrastructure icon.png diff --git a/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj b/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj index aad0ec1..4e37cfd 100644 --- a/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj +++ b/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj @@ -4,8 +4,8 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Mvc extension component. Based on the ExtCore framework. - 7.1.3 - net6.0 + 8.0.0 + net7.0 ExtCore.Mvc.Infrastructure ExtCore.Mvc.Infrastructure icon.png diff --git a/src/ExtCore.Mvc/ExtCore.Mvc.csproj b/src/ExtCore.Mvc/ExtCore.Mvc.csproj index d4b331c..eba39ce 100644 --- a/src/ExtCore.Mvc/ExtCore.Mvc.csproj +++ b/src/ExtCore.Mvc/ExtCore.Mvc.csproj @@ -4,8 +4,8 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Mvc extension component. Based on the ExtCore framework. - 7.1.3 - net6.0 + 8.0.0 + net7.0 ExtCore.Mvc ExtCore.Mvc icon.png @@ -18,7 +18,7 @@ - + diff --git a/src/ExtCore.Mvc/Extension.cs b/src/ExtCore.Mvc/Extension.cs index b580c0a..777f090 100644 --- a/src/ExtCore.Mvc/Extension.cs +++ b/src/ExtCore.Mvc/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "7.1.3"; + public override string Version => "8.0.0"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj b/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj index 6f886c3..2b86cf4 100644 --- a/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj +++ b/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj @@ -4,8 +4,8 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky Free, open source and cross-platform framework for creating modular and extendable web applications based on ASP.NET Core. - 7.1.3 - net6.0 + 8.0.0 + net7.0 ExtCore.WebApplication ExtCore.WebApplication icon.png @@ -18,7 +18,7 @@ - + From 8835c39bddbcfb662db188f2f5f06558af4b90fe Mon Sep 17 00:00:00 2001 From: Dmitry Sikorsky Date: Fri, 23 Dec 2022 12:57:49 +0200 Subject: [PATCH 70/81] Fixed storage to return number of the affected records --- README.md | 2 +- .../ExtCore.Data.Abstractions.csproj | 2 +- src/ExtCore.Data.Abstractions/IStorage.cs | 4 ++-- .../ExtCore.Data.Dapper.MySql.csproj | 2 +- .../ExtCore.Data.Dapper.PostgreSql.csproj | 2 +- .../ExtCore.Data.Dapper.SqlServer.csproj | 2 +- .../ExtCore.Data.Dapper.Sqlite.csproj | 2 +- src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj | 2 +- src/ExtCore.Data.Dapper/Extension.cs | 2 +- src/ExtCore.Data.Dapper/Storage.cs | 6 ++++-- .../ExtCore.Data.Entities.Abstractions.csproj | 2 +- .../ExtCore.Data.EntityFramework.MySql.csproj | 2 +- .../ExtCore.Data.EntityFramework.PostgreSql.csproj | 2 +- .../ExtCore.Data.EntityFramework.SqlServer.csproj | 2 +- .../ExtCore.Data.EntityFramework.Sqlite.csproj | 2 +- .../ExtCore.Data.EntityFramework.csproj | 2 +- src/ExtCore.Data.EntityFramework/Extension.cs | 2 +- src/ExtCore.Data.EntityFramework/Storage.cs | 8 ++++---- src/ExtCore.Data/ExtCore.Data.csproj | 2 +- src/ExtCore.Data/Extension.cs | 2 +- src/ExtCore.Events/ExtCore.Events.csproj | 2 +- src/ExtCore.Events/Extension.cs | 2 +- .../ExtCore.FileStorage.Abstractions.csproj | 2 +- .../ExtCore.FileStorage.Azure.csproj | 2 +- .../ExtCore.FileStorage.Dropbox.csproj | 2 +- .../ExtCore.FileStorage.FileSystem.csproj | 2 +- src/ExtCore.FileStorage/ExtCore.FileStorage.csproj | 2 +- src/ExtCore.FileStorage/Extension.cs | 2 +- src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj | 2 +- .../ExtCore.Mvc.Infrastructure.csproj | 2 +- src/ExtCore.Mvc/ExtCore.Mvc.csproj | 2 +- src/ExtCore.Mvc/Extension.cs | 2 +- src/ExtCore.WebApplication/ExtCore.WebApplication.csproj | 2 +- 33 files changed, 40 insertions(+), 38 deletions(-) diff --git a/README.md b/README.md index 76f5662..19134b1 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# ExtCore 8.0.0 +# ExtCore 8.1.0 [![Join the chat at https://gitter.im/ExtCore/ExtCore](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/ExtCore/ExtCore?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) diff --git a/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj b/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj index 2335d6c..b686aff 100644 --- a/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj +++ b/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data extension component. Based on the ExtCore framework. - 8.0.0 + 8.1.0 netstandard2.0 ExtCore.Data.Abstractions ExtCore.Data.Abstractions diff --git a/src/ExtCore.Data.Abstractions/IStorage.cs b/src/ExtCore.Data.Abstractions/IStorage.cs index a5bd713..8f82b7f 100644 --- a/src/ExtCore.Data.Abstractions/IStorage.cs +++ b/src/ExtCore.Data.Abstractions/IStorage.cs @@ -27,11 +27,11 @@ public interface IStorage /// /// Commits the changes made by all the repositories. /// - void Save(); + int Save(); /// /// Asynchronously commits the changes made by all the repositories. /// - Task SaveAsync(); + Task SaveAsync(); } } \ No newline at end of file diff --git a/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj b/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj index 681bbcb..557450b 100644 --- a/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj +++ b/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 8.0.0 + 8.1.0 net7.0 ExtCore.Data.Dapper.MySql ExtCore.Data.Dapper.MySql diff --git a/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj b/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj index 8bbddf0..b9feca0 100644 --- a/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj +++ b/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 8.0.0 + 8.1.0 net7.0 ExtCore.Data.Dapper.PostgreSql ExtCore.Data.Dapper.PostgreSql diff --git a/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj b/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj index 497fb5a..d0732d8 100644 --- a/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj +++ b/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 8.0.0 + 8.1.0 net7.0 ExtCore.Data.Dapper.SqlServer ExtCore.Data.Dapper.SqlServer diff --git a/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj b/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj index 94ea910..44d2357 100644 --- a/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj +++ b/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 8.0.0 + 8.1.0 net7.0 ExtCore.Data.Dapper.Sqlite ExtCore.Data.Dapper.Sqlite diff --git a/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj b/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj index 12fd108..0994f49 100644 --- a/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj +++ b/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 8.0.0 + 8.1.0 net7.0 ExtCore.Data.Dapper ExtCore.Data.Dapper diff --git a/src/ExtCore.Data.Dapper/Extension.cs b/src/ExtCore.Data.Dapper/Extension.cs index 03fc662..ee95334 100644 --- a/src/ExtCore.Data.Dapper/Extension.cs +++ b/src/ExtCore.Data.Dapper/Extension.cs @@ -24,7 +24,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "8.0.0"; + public override string Version => "8.1.0"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Data.Dapper/Storage.cs b/src/ExtCore.Data.Dapper/Storage.cs index 37fbab3..6744728 100644 --- a/src/ExtCore.Data.Dapper/Storage.cs +++ b/src/ExtCore.Data.Dapper/Storage.cs @@ -42,15 +42,17 @@ public TRepository GetRepository() where TRepository : IRepository /// /// Commits the changes made by all the repositories. /// - public void Save() + public int Save() { + return -1; } /// /// Asynchronously commits the changes made by all the repositories. /// - public async Task SaveAsync() + public async Task SaveAsync() { + return -1; } } } \ No newline at end of file diff --git a/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj b/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj index 38cfc21..338613f 100644 --- a/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj +++ b/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data extension component. Based on the ExtCore framework. - 8.0.0 + 8.1.0 netstandard2.0 ExtCore.Data.Entities.Abstractions ExtCore.Data.Entities.Abstractions diff --git a/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj b/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj index 02d921e..1f1b6b1 100644 --- a/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj +++ b/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 8.0.0 + 8.1.0 net7.0 ExtCore.Data.EntityFramework.MySql ExtCore.Data.EntityFramework.MySql diff --git a/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj b/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj index 61a346b..cf76bdf 100644 --- a/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj +++ b/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 8.0.0 + 8.1.0 net7.0 ExtCore.Data.EntityFramework.PostgreSql ExtCore.Data.EntityFramework.PostgreSql diff --git a/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj b/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj index a6bb98e..b0e3b61 100644 --- a/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj +++ b/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 8.0.0 + 8.1.0 net7.0 ExtCore.Data.EntityFramework.SqlServer ExtCore.Data.EntityFramework.SqlServer diff --git a/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj b/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj index fcb857d..d372e05 100644 --- a/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj +++ b/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 8.0.0 + 8.1.0 net7.0 ExtCore.Data.EntityFramework.Sqlite ExtCore.Data.EntityFramework.Sqlite diff --git a/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj b/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj index 0fcdfa3..60752e9 100644 --- a/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj +++ b/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 8.0.0 + 8.1.0 net7.0 ExtCore.Data.EntityFramework ExtCore.Data.EntityFramework diff --git a/src/ExtCore.Data.EntityFramework/Extension.cs b/src/ExtCore.Data.EntityFramework/Extension.cs index 8490d4e..4e996ed 100644 --- a/src/ExtCore.Data.EntityFramework/Extension.cs +++ b/src/ExtCore.Data.EntityFramework/Extension.cs @@ -24,7 +24,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "8.0.0"; + public override string Version => "8.1.0"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Data.EntityFramework/Storage.cs b/src/ExtCore.Data.EntityFramework/Storage.cs index eedae26..43c866d 100644 --- a/src/ExtCore.Data.EntityFramework/Storage.cs +++ b/src/ExtCore.Data.EntityFramework/Storage.cs @@ -47,17 +47,17 @@ public TRepository GetRepository() where TRepository : IRepository /// /// Commits the changes made by all the repositories. /// - public void Save() + public int Save() { - (this.StorageContext as DbContext).SaveChanges(); + return (this.StorageContext as DbContext).SaveChanges(); } /// /// Asynchronously commits the changes made by all the repositories. /// - public async Task SaveAsync() + public async Task SaveAsync() { - await (this.StorageContext as DbContext).SaveChangesAsync(); + return await (this.StorageContext as DbContext).SaveChangesAsync(); } } } \ No newline at end of file diff --git a/src/ExtCore.Data/ExtCore.Data.csproj b/src/ExtCore.Data/ExtCore.Data.csproj index acb87fe..f35c661 100644 --- a/src/ExtCore.Data/ExtCore.Data.csproj +++ b/src/ExtCore.Data/ExtCore.Data.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Data extension component. Based on the ExtCore framework. - 8.0.0 + 8.1.0 net7.0 ExtCore.Data ExtCore.Data diff --git a/src/ExtCore.Data/Extension.cs b/src/ExtCore.Data/Extension.cs index b1cc4fd..b0fe161 100644 --- a/src/ExtCore.Data/Extension.cs +++ b/src/ExtCore.Data/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "8.0.0"; + public override string Version => "8.1.0"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Events/ExtCore.Events.csproj b/src/ExtCore.Events/ExtCore.Events.csproj index b471dd1..2fb5538 100644 --- a/src/ExtCore.Events/ExtCore.Events.csproj +++ b/src/ExtCore.Events/ExtCore.Events.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2017 Dmitry Sikorsky The ExtCore.Events extension component. Based on the ExtCore framework. - 8.0.0 + 8.1.0 net7.0 ExtCore.Events ExtCore.Events diff --git a/src/ExtCore.Events/Extension.cs b/src/ExtCore.Events/Extension.cs index 19c8737..d74fc53 100644 --- a/src/ExtCore.Events/Extension.cs +++ b/src/ExtCore.Events/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "8.0.0"; + public override string Version => "8.1.0"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.FileStorage.Abstractions/ExtCore.FileStorage.Abstractions.csproj b/src/ExtCore.FileStorage.Abstractions/ExtCore.FileStorage.Abstractions.csproj index 6fe5bb8..a6c6125 100644 --- a/src/ExtCore.FileStorage.Abstractions/ExtCore.FileStorage.Abstractions.csproj +++ b/src/ExtCore.FileStorage.Abstractions/ExtCore.FileStorage.Abstractions.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2018 Dmitry Sikorsky The ExtCore.FileStorage extension component. Based on the ExtCore framework. - 8.0.0 + 8.1.0 netstandard2.0 ExtCore.FileStorage.Abstractions ExtCore.FileStorage.Abstractions diff --git a/src/ExtCore.FileStorage.Azure/ExtCore.FileStorage.Azure.csproj b/src/ExtCore.FileStorage.Azure/ExtCore.FileStorage.Azure.csproj index 01a8656..dd07d27 100644 --- a/src/ExtCore.FileStorage.Azure/ExtCore.FileStorage.Azure.csproj +++ b/src/ExtCore.FileStorage.Azure/ExtCore.FileStorage.Azure.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2018 Dmitry Sikorsky The ExtCore.FileStorage extension component. Based on the ExtCore framework. - 8.0.0 + 8.1.0 netstandard2.0 8.0 ExtCore.FileStorage.Azure diff --git a/src/ExtCore.FileStorage.Dropbox/ExtCore.FileStorage.Dropbox.csproj b/src/ExtCore.FileStorage.Dropbox/ExtCore.FileStorage.Dropbox.csproj index 9978be7..5f17af0 100644 --- a/src/ExtCore.FileStorage.Dropbox/ExtCore.FileStorage.Dropbox.csproj +++ b/src/ExtCore.FileStorage.Dropbox/ExtCore.FileStorage.Dropbox.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2018 Dmitry Sikorsky The ExtCore.FileStorage extension component. Based on the ExtCore framework. - 8.0.0 + 8.1.0 netstandard2.0 ExtCore.FileStorage.Dropbox ExtCore.FileStorage.Dropbox diff --git a/src/ExtCore.FileStorage.FileSystem/ExtCore.FileStorage.FileSystem.csproj b/src/ExtCore.FileStorage.FileSystem/ExtCore.FileStorage.FileSystem.csproj index 571db38..1ced921 100644 --- a/src/ExtCore.FileStorage.FileSystem/ExtCore.FileStorage.FileSystem.csproj +++ b/src/ExtCore.FileStorage.FileSystem/ExtCore.FileStorage.FileSystem.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2018 Dmitry Sikorsky The ExtCore.FileStorage extension component. Based on the ExtCore framework. - 8.0.0 + 8.1.0 netstandard2.0 ExtCore.FileStorage.FileSystem ExtCore.FileStorage.FileSystem diff --git a/src/ExtCore.FileStorage/ExtCore.FileStorage.csproj b/src/ExtCore.FileStorage/ExtCore.FileStorage.csproj index d70c115..a4ca170 100644 --- a/src/ExtCore.FileStorage/ExtCore.FileStorage.csproj +++ b/src/ExtCore.FileStorage/ExtCore.FileStorage.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2018 Dmitry Sikorsky The ExtCore.FileStorage extension component. Based on the ExtCore framework. - 8.0.0 + 8.1.0 net7.0 ExtCore.FileStorage ExtCore.FileStorage diff --git a/src/ExtCore.FileStorage/Extension.cs b/src/ExtCore.FileStorage/Extension.cs index 0c5cbee..fc89843 100644 --- a/src/ExtCore.FileStorage/Extension.cs +++ b/src/ExtCore.FileStorage/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "8.0.0"; + public override string Version => "8.1.0"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj b/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj index e177fc6..378a5a0 100644 --- a/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj +++ b/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky Free, open source and cross-platform framework for creating modular and extendable web applications based on ASP.NET Core. - 8.0.0 + 8.1.0 net7.0 ExtCore.Infrastructure ExtCore.Infrastructure diff --git a/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj b/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj index 4e37cfd..7bff047 100644 --- a/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj +++ b/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Mvc extension component. Based on the ExtCore framework. - 8.0.0 + 8.1.0 net7.0 ExtCore.Mvc.Infrastructure ExtCore.Mvc.Infrastructure diff --git a/src/ExtCore.Mvc/ExtCore.Mvc.csproj b/src/ExtCore.Mvc/ExtCore.Mvc.csproj index eba39ce..89dbf9b 100644 --- a/src/ExtCore.Mvc/ExtCore.Mvc.csproj +++ b/src/ExtCore.Mvc/ExtCore.Mvc.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky The ExtCore.Mvc extension component. Based on the ExtCore framework. - 8.0.0 + 8.1.0 net7.0 ExtCore.Mvc ExtCore.Mvc diff --git a/src/ExtCore.Mvc/Extension.cs b/src/ExtCore.Mvc/Extension.cs index 777f090..932b886 100644 --- a/src/ExtCore.Mvc/Extension.cs +++ b/src/ExtCore.Mvc/Extension.cs @@ -23,7 +23,7 @@ public class Extension : ExtensionBase /// /// Gets the version of the extension. /// - public override string Version => "8.0.0"; + public override string Version => "8.1.0"; /// /// Gets the authors of the extension (separated by commas). diff --git a/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj b/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj index 2b86cf4..2ea9eb9 100644 --- a/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj +++ b/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj @@ -4,7 +4,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky Free, open source and cross-platform framework for creating modular and extendable web applications based on ASP.NET Core. - 8.0.0 + 8.1.0 net7.0 ExtCore.WebApplication ExtCore.WebApplication From d0159e6dbcb3e401d573efeed67a2cf3759a2408 Mon Sep 17 00:00:00 2001 From: iyilm4z Date: Fri, 23 Dec 2022 15:09:49 +0300 Subject: [PATCH 71/81] Use a MSBuild build project for common props --- common.props | 17 +++++++++++++++++ .../ExtCore.Data.Abstractions.csproj | 11 +---------- .../ExtCore.Data.Dapper.MySql.csproj | 11 +---------- .../ExtCore.Data.Dapper.PostgreSql.csproj | 11 +---------- .../ExtCore.Data.Dapper.SqlServer.csproj | 11 +---------- .../ExtCore.Data.Dapper.Sqlite.csproj | 11 +---------- .../ExtCore.Data.Dapper.csproj | 11 +---------- .../ExtCore.Data.Entities.Abstractions.csproj | 11 +---------- .../ExtCore.Data.EntityFramework.MySql.csproj | 11 +---------- ...tCore.Data.EntityFramework.PostgreSql.csproj | 11 +---------- ...xtCore.Data.EntityFramework.SqlServer.csproj | 11 +---------- .../ExtCore.Data.EntityFramework.Sqlite.csproj | 11 +---------- .../ExtCore.Data.EntityFramework.csproj | 11 +---------- src/ExtCore.Data/ExtCore.Data.csproj | 11 +---------- src/ExtCore.Events/ExtCore.Events.csproj | 11 +---------- .../ExtCore.FileStorage.Abstractions.csproj | 11 +---------- .../ExtCore.FileStorage.Azure.csproj | 12 +----------- .../ExtCore.FileStorage.Dropbox.csproj | 11 +---------- .../ExtCore.FileStorage.FileSystem.csproj | 11 +---------- .../ExtCore.FileStorage.csproj | 11 +---------- .../ExtCore.Infrastructure.csproj | 11 +---------- .../ExtCore.Mvc.Infrastructure.csproj | 11 +---------- src/ExtCore.Mvc/ExtCore.Mvc.csproj | 11 +---------- .../ExtCore.WebApplication.csproj | 11 +---------- 24 files changed, 40 insertions(+), 231 deletions(-) create mode 100644 common.props diff --git a/common.props b/common.props new file mode 100644 index 0000000..8e498ed --- /dev/null +++ b/common.props @@ -0,0 +1,17 @@ + + + + Dmitry Sikorsky + Copyright © 2015 Dmitry Sikorsky + 8.1.0 + 8.0 + icon.png + https://extcore.net/ + Apache-2.0 + + + + + + + \ No newline at end of file diff --git a/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj b/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj index b686aff..b16ff48 100644 --- a/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj +++ b/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj @@ -1,20 +1,11 @@  + - Dmitry Sikorsky - Copyright © 2015 Dmitry Sikorsky The ExtCore.Data extension component. Based on the ExtCore framework. - 8.1.0 netstandard2.0 ExtCore.Data.Abstractions ExtCore.Data.Abstractions - icon.png - https://extcore.net/ - Apache-2.0 - - - - diff --git a/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj b/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj index 557450b..5d40a97 100644 --- a/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj +++ b/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj @@ -1,22 +1,13 @@  + - Dmitry Sikorsky - Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 8.1.0 net7.0 ExtCore.Data.Dapper.MySql ExtCore.Data.Dapper.MySql - icon.png - https://extcore.net/ - Apache-2.0 - - - - diff --git a/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj b/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj index b9feca0..dc16eff 100644 --- a/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj +++ b/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj @@ -1,22 +1,13 @@  + - Dmitry Sikorsky - Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 8.1.0 net7.0 ExtCore.Data.Dapper.PostgreSql ExtCore.Data.Dapper.PostgreSql - icon.png - https://extcore.net/ - Apache-2.0 - - - - diff --git a/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj b/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj index d0732d8..b63d7f9 100644 --- a/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj +++ b/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj @@ -1,22 +1,13 @@  + - Dmitry Sikorsky - Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 8.1.0 net7.0 ExtCore.Data.Dapper.SqlServer ExtCore.Data.Dapper.SqlServer - icon.png - https://extcore.net/ - Apache-2.0 - - - - diff --git a/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj b/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj index 44d2357..6d6e2da 100644 --- a/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj +++ b/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj @@ -1,22 +1,13 @@  + - Dmitry Sikorsky - Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 8.1.0 net7.0 ExtCore.Data.Dapper.Sqlite ExtCore.Data.Dapper.Sqlite - icon.png - https://extcore.net/ - Apache-2.0 - - - - diff --git a/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj b/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj index 0994f49..ebdce7c 100644 --- a/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj +++ b/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj @@ -1,22 +1,13 @@  + - Dmitry Sikorsky - Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - 8.1.0 net7.0 ExtCore.Data.Dapper ExtCore.Data.Dapper - icon.png - https://extcore.net/ - Apache-2.0 - - - - diff --git a/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj b/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj index 338613f..4cf297d 100644 --- a/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj +++ b/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj @@ -1,20 +1,11 @@  + - Dmitry Sikorsky - Copyright © 2015 Dmitry Sikorsky The ExtCore.Data extension component. Based on the ExtCore framework. - 8.1.0 netstandard2.0 ExtCore.Data.Entities.Abstractions ExtCore.Data.Entities.Abstractions - icon.png - https://extcore.net/ - Apache-2.0 - - - - diff --git a/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj b/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj index 1f1b6b1..750c8f0 100644 --- a/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj +++ b/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj @@ -1,22 +1,13 @@  + - Dmitry Sikorsky - Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 8.1.0 net7.0 ExtCore.Data.EntityFramework.MySql ExtCore.Data.EntityFramework.MySql - icon.png - https://extcore.net/ - Apache-2.0 - - - - diff --git a/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj b/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj index cf76bdf..94a7c08 100644 --- a/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj +++ b/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj @@ -1,22 +1,13 @@  + - Dmitry Sikorsky - Copyright © 2015 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 8.1.0 net7.0 ExtCore.Data.EntityFramework.PostgreSql ExtCore.Data.EntityFramework.PostgreSql - icon.png - https://extcore.net/ - Apache-2.0 - - - - diff --git a/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj b/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj index b0e3b61..88c0cfd 100644 --- a/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj +++ b/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj @@ -1,22 +1,13 @@  + - Dmitry Sikorsky - Copyright © 2015 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 8.1.0 net7.0 ExtCore.Data.EntityFramework.SqlServer ExtCore.Data.EntityFramework.SqlServer - icon.png - https://extcore.net/ - Apache-2.0 - - - - diff --git a/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj b/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj index d372e05..0d593c2 100644 --- a/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj +++ b/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj @@ -1,22 +1,13 @@  + - Dmitry Sikorsky - Copyright © 2015 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 8.1.0 net7.0 ExtCore.Data.EntityFramework.Sqlite ExtCore.Data.EntityFramework.Sqlite - icon.png - https://extcore.net/ - Apache-2.0 - - - - diff --git a/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj b/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj index 60752e9..948ae05 100644 --- a/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj +++ b/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj @@ -1,22 +1,13 @@  + - Dmitry Sikorsky - Copyright © 2017 Dmitry Sikorsky The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - 8.1.0 net7.0 ExtCore.Data.EntityFramework ExtCore.Data.EntityFramework - icon.png - https://extcore.net/ - Apache-2.0 - - - - diff --git a/src/ExtCore.Data/ExtCore.Data.csproj b/src/ExtCore.Data/ExtCore.Data.csproj index f35c661..e9f4774 100644 --- a/src/ExtCore.Data/ExtCore.Data.csproj +++ b/src/ExtCore.Data/ExtCore.Data.csproj @@ -1,22 +1,13 @@  + - Dmitry Sikorsky - Copyright © 2015 Dmitry Sikorsky The ExtCore.Data extension component. Based on the ExtCore framework. - 8.1.0 net7.0 ExtCore.Data ExtCore.Data - icon.png - https://extcore.net/ - Apache-2.0 - - - - diff --git a/src/ExtCore.Events/ExtCore.Events.csproj b/src/ExtCore.Events/ExtCore.Events.csproj index 2fb5538..3036ba1 100644 --- a/src/ExtCore.Events/ExtCore.Events.csproj +++ b/src/ExtCore.Events/ExtCore.Events.csproj @@ -1,22 +1,13 @@  + - Dmitry Sikorsky - Copyright © 2017 Dmitry Sikorsky The ExtCore.Events extension component. Based on the ExtCore framework. - 8.1.0 net7.0 ExtCore.Events ExtCore.Events - icon.png - https://extcore.net/ - Apache-2.0 - - - - diff --git a/src/ExtCore.FileStorage.Abstractions/ExtCore.FileStorage.Abstractions.csproj b/src/ExtCore.FileStorage.Abstractions/ExtCore.FileStorage.Abstractions.csproj index a6c6125..b85c805 100644 --- a/src/ExtCore.FileStorage.Abstractions/ExtCore.FileStorage.Abstractions.csproj +++ b/src/ExtCore.FileStorage.Abstractions/ExtCore.FileStorage.Abstractions.csproj @@ -1,20 +1,11 @@  + - Dmitry Sikorsky - Copyright © 2018 Dmitry Sikorsky The ExtCore.FileStorage extension component. Based on the ExtCore framework. - 8.1.0 netstandard2.0 ExtCore.FileStorage.Abstractions ExtCore.FileStorage.Abstractions - icon.png - https://extcore.net/ - Apache-2.0 - - - - diff --git a/src/ExtCore.FileStorage.Azure/ExtCore.FileStorage.Azure.csproj b/src/ExtCore.FileStorage.Azure/ExtCore.FileStorage.Azure.csproj index dd07d27..0440247 100644 --- a/src/ExtCore.FileStorage.Azure/ExtCore.FileStorage.Azure.csproj +++ b/src/ExtCore.FileStorage.Azure/ExtCore.FileStorage.Azure.csproj @@ -1,23 +1,13 @@ + - Dmitry Sikorsky - Copyright © 2018 Dmitry Sikorsky The ExtCore.FileStorage extension component. Based on the ExtCore framework. - 8.1.0 netstandard2.0 - 8.0 ExtCore.FileStorage.Azure ExtCore.FileStorage.Azure - icon.png - https://extcore.net/ - Apache-2.0 - - - - diff --git a/src/ExtCore.FileStorage.Dropbox/ExtCore.FileStorage.Dropbox.csproj b/src/ExtCore.FileStorage.Dropbox/ExtCore.FileStorage.Dropbox.csproj index 5f17af0..3c64647 100644 --- a/src/ExtCore.FileStorage.Dropbox/ExtCore.FileStorage.Dropbox.csproj +++ b/src/ExtCore.FileStorage.Dropbox/ExtCore.FileStorage.Dropbox.csproj @@ -1,22 +1,13 @@  + - Dmitry Sikorsky - Copyright © 2018 Dmitry Sikorsky The ExtCore.FileStorage extension component. Based on the ExtCore framework. - 8.1.0 netstandard2.0 ExtCore.FileStorage.Dropbox ExtCore.FileStorage.Dropbox - icon.png - https://extcore.net/ - Apache-2.0 - - - - diff --git a/src/ExtCore.FileStorage.FileSystem/ExtCore.FileStorage.FileSystem.csproj b/src/ExtCore.FileStorage.FileSystem/ExtCore.FileStorage.FileSystem.csproj index 1ced921..53580b0 100644 --- a/src/ExtCore.FileStorage.FileSystem/ExtCore.FileStorage.FileSystem.csproj +++ b/src/ExtCore.FileStorage.FileSystem/ExtCore.FileStorage.FileSystem.csproj @@ -1,22 +1,13 @@  + - Dmitry Sikorsky - Copyright © 2018 Dmitry Sikorsky The ExtCore.FileStorage extension component. Based on the ExtCore framework. - 8.1.0 netstandard2.0 ExtCore.FileStorage.FileSystem ExtCore.FileStorage.FileSystem - icon.png - https://extcore.net/ - Apache-2.0 - - - - diff --git a/src/ExtCore.FileStorage/ExtCore.FileStorage.csproj b/src/ExtCore.FileStorage/ExtCore.FileStorage.csproj index a4ca170..3762844 100644 --- a/src/ExtCore.FileStorage/ExtCore.FileStorage.csproj +++ b/src/ExtCore.FileStorage/ExtCore.FileStorage.csproj @@ -1,22 +1,13 @@  + - Dmitry Sikorsky - Copyright © 2018 Dmitry Sikorsky The ExtCore.FileStorage extension component. Based on the ExtCore framework. - 8.1.0 net7.0 ExtCore.FileStorage ExtCore.FileStorage - icon.png - https://extcore.net/ - Apache-2.0 - - - - diff --git a/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj b/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj index 378a5a0..eb3e27c 100644 --- a/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj +++ b/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj @@ -1,22 +1,13 @@  + - Dmitry Sikorsky - Copyright © 2015 Dmitry Sikorsky Free, open source and cross-platform framework for creating modular and extendable web applications based on ASP.NET Core. - 8.1.0 net7.0 ExtCore.Infrastructure ExtCore.Infrastructure - icon.png - https://extcore.net/ - Apache-2.0 - - - - diff --git a/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj b/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj index 7bff047..0eb7813 100644 --- a/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj +++ b/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj @@ -1,22 +1,13 @@  + - Dmitry Sikorsky - Copyright © 2015 Dmitry Sikorsky The ExtCore.Mvc extension component. Based on the ExtCore framework. - 8.1.0 net7.0 ExtCore.Mvc.Infrastructure ExtCore.Mvc.Infrastructure - icon.png - https://extcore.net/ - Apache-2.0 - - - - diff --git a/src/ExtCore.Mvc/ExtCore.Mvc.csproj b/src/ExtCore.Mvc/ExtCore.Mvc.csproj index 89dbf9b..3ff78c1 100644 --- a/src/ExtCore.Mvc/ExtCore.Mvc.csproj +++ b/src/ExtCore.Mvc/ExtCore.Mvc.csproj @@ -1,22 +1,13 @@  + - Dmitry Sikorsky - Copyright © 2015 Dmitry Sikorsky The ExtCore.Mvc extension component. Based on the ExtCore framework. - 8.1.0 net7.0 ExtCore.Mvc ExtCore.Mvc - icon.png - https://extcore.net/ - Apache-2.0 - - - - diff --git a/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj b/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj index 2ea9eb9..af8bc5c 100644 --- a/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj +++ b/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj @@ -1,22 +1,13 @@  + - Dmitry Sikorsky - Copyright © 2015 Dmitry Sikorsky Free, open source and cross-platform framework for creating modular and extendable web applications based on ASP.NET Core. - 8.1.0 net7.0 ExtCore.WebApplication ExtCore.WebApplication - icon.png - https://extcore.net/ - Apache-2.0 - - - - From 8ae20a1bce59bdd9260df73eb853322afa2fad3d Mon Sep 17 00:00:00 2001 From: iyilm4z Date: Fri, 23 Dec 2022 20:45:14 +0300 Subject: [PATCH 72/81] Use PackageIconUrl instead of PackageIcon --- common.props | 6 +----- src/ExtCore.Data.Abstractions/icon.png | Bin 3149 -> 0 bytes src/ExtCore.Data.Dapper.MySql/icon.png | Bin 3149 -> 0 bytes src/ExtCore.Data.Dapper.PostgreSql/icon.png | Bin 3149 -> 0 bytes src/ExtCore.Data.Dapper.SqlServer/icon.png | Bin 3149 -> 0 bytes src/ExtCore.Data.Dapper.Sqlite/icon.png | Bin 3149 -> 0 bytes src/ExtCore.Data.Dapper/icon.png | Bin 3149 -> 0 bytes src/ExtCore.Data.Entities.Abstractions/icon.png | Bin 3149 -> 0 bytes src/ExtCore.Data.EntityFramework.MySql/icon.png | Bin 3149 -> 0 bytes .../icon.png | Bin 3149 -> 0 bytes .../icon.png | Bin 3149 -> 0 bytes src/ExtCore.Data.EntityFramework.Sqlite/icon.png | Bin 3149 -> 0 bytes src/ExtCore.Data.EntityFramework/icon.png | Bin 3149 -> 0 bytes src/ExtCore.Data/icon.png | Bin 3149 -> 0 bytes src/ExtCore.Events/icon.png | Bin 3149 -> 0 bytes src/ExtCore.FileStorage.Abstractions/icon.png | Bin 3149 -> 0 bytes src/ExtCore.FileStorage.Azure/icon.png | Bin 3149 -> 0 bytes src/ExtCore.FileStorage.Dropbox/icon.png | Bin 3149 -> 0 bytes src/ExtCore.FileStorage.FileSystem/icon.png | Bin 3149 -> 0 bytes src/ExtCore.FileStorage/icon.png | Bin 3149 -> 0 bytes src/ExtCore.Infrastructure/icon.png | Bin 3149 -> 0 bytes src/ExtCore.Mvc.Infrastructure/icon.png | Bin 3149 -> 0 bytes src/ExtCore.Mvc/icon.png | Bin 3149 -> 0 bytes src/ExtCore.WebApplication/icon.png | Bin 3149 -> 0 bytes 24 files changed, 1 insertion(+), 5 deletions(-) delete mode 100644 src/ExtCore.Data.Abstractions/icon.png delete mode 100644 src/ExtCore.Data.Dapper.MySql/icon.png delete mode 100644 src/ExtCore.Data.Dapper.PostgreSql/icon.png delete mode 100644 src/ExtCore.Data.Dapper.SqlServer/icon.png delete mode 100644 src/ExtCore.Data.Dapper.Sqlite/icon.png delete mode 100644 src/ExtCore.Data.Dapper/icon.png delete mode 100644 src/ExtCore.Data.Entities.Abstractions/icon.png delete mode 100644 src/ExtCore.Data.EntityFramework.MySql/icon.png delete mode 100644 src/ExtCore.Data.EntityFramework.PostgreSql/icon.png delete mode 100644 src/ExtCore.Data.EntityFramework.SqlServer/icon.png delete mode 100644 src/ExtCore.Data.EntityFramework.Sqlite/icon.png delete mode 100644 src/ExtCore.Data.EntityFramework/icon.png delete mode 100644 src/ExtCore.Data/icon.png delete mode 100644 src/ExtCore.Events/icon.png delete mode 100644 src/ExtCore.FileStorage.Abstractions/icon.png delete mode 100644 src/ExtCore.FileStorage.Azure/icon.png delete mode 100644 src/ExtCore.FileStorage.Dropbox/icon.png delete mode 100644 src/ExtCore.FileStorage.FileSystem/icon.png delete mode 100644 src/ExtCore.FileStorage/icon.png delete mode 100644 src/ExtCore.Infrastructure/icon.png delete mode 100644 src/ExtCore.Mvc.Infrastructure/icon.png delete mode 100644 src/ExtCore.Mvc/icon.png delete mode 100644 src/ExtCore.WebApplication/icon.png diff --git a/common.props b/common.props index 8e498ed..f7351b6 100644 --- a/common.props +++ b/common.props @@ -5,13 +5,9 @@ Copyright © 2015 Dmitry Sikorsky 8.1.0 8.0 - icon.png + https://extcore.net/images/extcore_framework_logo_s.png https://extcore.net/ Apache-2.0 - - - - \ No newline at end of file diff --git a/src/ExtCore.Data.Abstractions/icon.png b/src/ExtCore.Data.Abstractions/icon.png deleted file mode 100644 index 658aadfa4b42dc9573b7867b99b9d5a0ce54f25b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3149 zcmaJ@c|4SB8-8XGp$_Q`ZKr8uEoR0tjw#D9GnVX2Mu#$Hh8bfPGb2mMgM1*g2s`LHv^}WCMeV^rbUDtg-&wahm?>*$=WV1qktvmo= zg`F+lP0|XN9yzGw?cnn%OVX?n5J&=dPJkec%%cGumE%u?+p)-jG&dTV8WD1bwjBT| z1jBl^A(P-rw9gV9GD8DlW$t#AVr+5m}?+!#Hy5!M)kH86pHyAYCS zJZb>e4Nv?QOENM;&;(C&HuJdk_|(KletK=K5A)6-+_*f{~yX? z{Xp{tZnS^%{hz{oj|eUe=|vr&l)GdF7FQA(PvbH6(x^lphXwz-WGv(7 zxmf*F?;Dr;^IWWd%0)_&K`s^czY6_*O5&cS?ho5a20x5XV@ur5li2#cbK+e9?|r@LKAvjVr@J)_GdG{;$=lJP8>E_(9}=O|Zi3riHG^2KES=MlwCiFBj(*9W z5w%(w@0w>mGcW1y^ zwh9e#x$3UVWm$sMS@{)5Es?;(W=D6|OCeB-weLA%sSfB)4y3_4qLfgSPp3)O0!usB z%G^9Fl_{;g3bQV5dce>0e2~BN7r@mBGRn#G4=rjiCpIdAGUU^PA|6yMwT_(J98leP z)BRa63=+LUKiGAp@DTonQLEA~@z+!y41UyZX6}qT2^Etz1>0_gsq=85c3dSob{ zEdhLe!K&B0u(-M2}bCn<$* zDy>lNs%WOW%X}E@EkFk4w%owAho;|?3u22OqGEJ{-1D{0y_zLUy@P_--&bj~-1B|p zW}?C@@MHS+HAszR;%WmUH``OIR%m$oUUnwh;g}j`2`QDDYi%B*SViOEJ}})o zi&FZYhS_wrecsxIzQ0l>_Mvn|Rw$@EA;QZRnt;pf2=eaOg;Y_@sb$#uB=Nc8#AXs< z_Wh_nzI-)qk2pqzaX4KR{ah9z)UZ!F4etw5B_ub$%C)8kW|aJOw0Xs&^Y)#&((4rt zizZ$^MGz@st=FP}m{ly|+rr0kn;)59?Hu4H&+jCunJ)U)nD_UL?%n@rO2|O%z??35 zBo7hd5y}P(<xPMjsamw| zK2o{poo<=x0TUtzG!NYI@vPNJfVH(o=dZfC zttn?pjlJzZ;e8{xDfu(ASGAP5YyM{fuA0ySyx6yX)mkVM%XpYF@m05eo?M*+oQk$`-tX<=*${HZK~Cpr25{c38I$^ z_7!~*XWJarF1n$wQHBqn_FwmIeL_8fr?d8IRh0~|%otd>Ub64}F+(RTdsiJkdVT~d z7GCR#hmVYm9Q1vtU>3$<5Bp_JejI%cxrrMG*Yt0PtUt@^`4z%-2%&OgnH@~Rds8Mj zo`iy?IA~gTJZyO(dp3B_J%iyWJ!`a7iC^6Hndw^fqb=`(+|9OE-!v}#BW`2m3Fi#o zYD$HNF!TJg_I6h<-M;MfPpbPy^Rp^Z_g%wCx6m2CN%@%@D`Ya6)AYrtd5mw}CwKND zOuf{f3WO8*0Pl2%8Xp!ArSo4MW8np@m3t~WbsQB_AmD*)iR09>(QRRW)yZkrzwqs( zXm2-3E4C_E>I~Jm7aG@Xk!d4qx}^Kb}z3xYyri`KY{DzJ9yOMBU>tI1k7 za3HV?zB)A3BR(=-`c;EeP;dH_)0Wx1vmvq{3~WErsyD{gmfBs}Q0cC&21;(28*%@hj8&FnalR(h3u@XH}$0zTbXov;<$~k%!j_Z+S+hEaX~@C zv{qEeZ3DSaDSCP*g7t&G&_Bzs_N2yRnj()ZghNR z$H*9VYyo@GR{_8kW4GOkg~=^oJ?;-ffo)jW)wgZ_yDjFr_67zPXexBdfLAd>$eO7) z^DOxd5L8hiJ|@|tbRtn|!;G(;Zp#ZU}Ko;$KGmV{u0*U*No4j6228~b` z(UhgxnzHpl?-Ev8U}{C;N?6nAyWx3t&={oD-W{U}9Kop$X}>3T8=#7ysdt0TOXY1D QOF#H_1Sfo{m0!$%0K4WuRsaA1 diff --git a/src/ExtCore.Data.Dapper.MySql/icon.png b/src/ExtCore.Data.Dapper.MySql/icon.png deleted file mode 100644 index 658aadfa4b42dc9573b7867b99b9d5a0ce54f25b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3149 zcmaJ@c|4SB8-8XGp$_Q`ZKr8uEoR0tjw#D9GnVX2Mu#$Hh8bfPGb2mMgM1*g2s`LHv^}WCMeV^rbUDtg-&wahm?>*$=WV1qktvmo= zg`F+lP0|XN9yzGw?cnn%OVX?n5J&=dPJkec%%cGumE%u?+p)-jG&dTV8WD1bwjBT| z1jBl^A(P-rw9gV9GD8DlW$t#AVr+5m}?+!#Hy5!M)kH86pHyAYCS zJZb>e4Nv?QOENM;&;(C&HuJdk_|(KletK=K5A)6-+_*f{~yX? z{Xp{tZnS^%{hz{oj|eUe=|vr&l)GdF7FQA(PvbH6(x^lphXwz-WGv(7 zxmf*F?;Dr;^IWWd%0)_&K`s^czY6_*O5&cS?ho5a20x5XV@ur5li2#cbK+e9?|r@LKAvjVr@J)_GdG{;$=lJP8>E_(9}=O|Zi3riHG^2KES=MlwCiFBj(*9W z5w%(w@0w>mGcW1y^ zwh9e#x$3UVWm$sMS@{)5Es?;(W=D6|OCeB-weLA%sSfB)4y3_4qLfgSPp3)O0!usB z%G^9Fl_{;g3bQV5dce>0e2~BN7r@mBGRn#G4=rjiCpIdAGUU^PA|6yMwT_(J98leP z)BRa63=+LUKiGAp@DTonQLEA~@z+!y41UyZX6}qT2^Etz1>0_gsq=85c3dSob{ zEdhLe!K&B0u(-M2}bCn<$* zDy>lNs%WOW%X}E@EkFk4w%owAho;|?3u22OqGEJ{-1D{0y_zLUy@P_--&bj~-1B|p zW}?C@@MHS+HAszR;%WmUH``OIR%m$oUUnwh;g}j`2`QDDYi%B*SViOEJ}})o zi&FZYhS_wrecsxIzQ0l>_Mvn|Rw$@EA;QZRnt;pf2=eaOg;Y_@sb$#uB=Nc8#AXs< z_Wh_nzI-)qk2pqzaX4KR{ah9z)UZ!F4etw5B_ub$%C)8kW|aJOw0Xs&^Y)#&((4rt zizZ$^MGz@st=FP}m{ly|+rr0kn;)59?Hu4H&+jCunJ)U)nD_UL?%n@rO2|O%z??35 zBo7hd5y}P(<xPMjsamw| zK2o{poo<=x0TUtzG!NYI@vPNJfVH(o=dZfC zttn?pjlJzZ;e8{xDfu(ASGAP5YyM{fuA0ySyx6yX)mkVM%XpYF@m05eo?M*+oQk$`-tX<=*${HZK~Cpr25{c38I$^ z_7!~*XWJarF1n$wQHBqn_FwmIeL_8fr?d8IRh0~|%otd>Ub64}F+(RTdsiJkdVT~d z7GCR#hmVYm9Q1vtU>3$<5Bp_JejI%cxrrMG*Yt0PtUt@^`4z%-2%&OgnH@~Rds8Mj zo`iy?IA~gTJZyO(dp3B_J%iyWJ!`a7iC^6Hndw^fqb=`(+|9OE-!v}#BW`2m3Fi#o zYD$HNF!TJg_I6h<-M;MfPpbPy^Rp^Z_g%wCx6m2CN%@%@D`Ya6)AYrtd5mw}CwKND zOuf{f3WO8*0Pl2%8Xp!ArSo4MW8np@m3t~WbsQB_AmD*)iR09>(QRRW)yZkrzwqs( zXm2-3E4C_E>I~Jm7aG@Xk!d4qx}^Kb}z3xYyri`KY{DzJ9yOMBU>tI1k7 za3HV?zB)A3BR(=-`c;EeP;dH_)0Wx1vmvq{3~WErsyD{gmfBs}Q0cC&21;(28*%@hj8&FnalR(h3u@XH}$0zTbXov;<$~k%!j_Z+S+hEaX~@C zv{qEeZ3DSaDSCP*g7t&G&_Bzs_N2yRnj()ZghNR z$H*9VYyo@GR{_8kW4GOkg~=^oJ?;-ffo)jW)wgZ_yDjFr_67zPXexBdfLAd>$eO7) z^DOxd5L8hiJ|@|tbRtn|!;G(;Zp#ZU}Ko;$KGmV{u0*U*No4j6228~b` z(UhgxnzHpl?-Ev8U}{C;N?6nAyWx3t&={oD-W{U}9Kop$X}>3T8=#7ysdt0TOXY1D QOF#H_1Sfo{m0!$%0K4WuRsaA1 diff --git a/src/ExtCore.Data.Dapper.PostgreSql/icon.png b/src/ExtCore.Data.Dapper.PostgreSql/icon.png deleted file mode 100644 index 658aadfa4b42dc9573b7867b99b9d5a0ce54f25b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3149 zcmaJ@c|4SB8-8XGp$_Q`ZKr8uEoR0tjw#D9GnVX2Mu#$Hh8bfPGb2mMgM1*g2s`LHv^}WCMeV^rbUDtg-&wahm?>*$=WV1qktvmo= zg`F+lP0|XN9yzGw?cnn%OVX?n5J&=dPJkec%%cGumE%u?+p)-jG&dTV8WD1bwjBT| z1jBl^A(P-rw9gV9GD8DlW$t#AVr+5m}?+!#Hy5!M)kH86pHyAYCS zJZb>e4Nv?QOENM;&;(C&HuJdk_|(KletK=K5A)6-+_*f{~yX? z{Xp{tZnS^%{hz{oj|eUe=|vr&l)GdF7FQA(PvbH6(x^lphXwz-WGv(7 zxmf*F?;Dr;^IWWd%0)_&K`s^czY6_*O5&cS?ho5a20x5XV@ur5li2#cbK+e9?|r@LKAvjVr@J)_GdG{;$=lJP8>E_(9}=O|Zi3riHG^2KES=MlwCiFBj(*9W z5w%(w@0w>mGcW1y^ zwh9e#x$3UVWm$sMS@{)5Es?;(W=D6|OCeB-weLA%sSfB)4y3_4qLfgSPp3)O0!usB z%G^9Fl_{;g3bQV5dce>0e2~BN7r@mBGRn#G4=rjiCpIdAGUU^PA|6yMwT_(J98leP z)BRa63=+LUKiGAp@DTonQLEA~@z+!y41UyZX6}qT2^Etz1>0_gsq=85c3dSob{ zEdhLe!K&B0u(-M2}bCn<$* zDy>lNs%WOW%X}E@EkFk4w%owAho;|?3u22OqGEJ{-1D{0y_zLUy@P_--&bj~-1B|p zW}?C@@MHS+HAszR;%WmUH``OIR%m$oUUnwh;g}j`2`QDDYi%B*SViOEJ}})o zi&FZYhS_wrecsxIzQ0l>_Mvn|Rw$@EA;QZRnt;pf2=eaOg;Y_@sb$#uB=Nc8#AXs< z_Wh_nzI-)qk2pqzaX4KR{ah9z)UZ!F4etw5B_ub$%C)8kW|aJOw0Xs&^Y)#&((4rt zizZ$^MGz@st=FP}m{ly|+rr0kn;)59?Hu4H&+jCunJ)U)nD_UL?%n@rO2|O%z??35 zBo7hd5y}P(<xPMjsamw| zK2o{poo<=x0TUtzG!NYI@vPNJfVH(o=dZfC zttn?pjlJzZ;e8{xDfu(ASGAP5YyM{fuA0ySyx6yX)mkVM%XpYF@m05eo?M*+oQk$`-tX<=*${HZK~Cpr25{c38I$^ z_7!~*XWJarF1n$wQHBqn_FwmIeL_8fr?d8IRh0~|%otd>Ub64}F+(RTdsiJkdVT~d z7GCR#hmVYm9Q1vtU>3$<5Bp_JejI%cxrrMG*Yt0PtUt@^`4z%-2%&OgnH@~Rds8Mj zo`iy?IA~gTJZyO(dp3B_J%iyWJ!`a7iC^6Hndw^fqb=`(+|9OE-!v}#BW`2m3Fi#o zYD$HNF!TJg_I6h<-M;MfPpbPy^Rp^Z_g%wCx6m2CN%@%@D`Ya6)AYrtd5mw}CwKND zOuf{f3WO8*0Pl2%8Xp!ArSo4MW8np@m3t~WbsQB_AmD*)iR09>(QRRW)yZkrzwqs( zXm2-3E4C_E>I~Jm7aG@Xk!d4qx}^Kb}z3xYyri`KY{DzJ9yOMBU>tI1k7 za3HV?zB)A3BR(=-`c;EeP;dH_)0Wx1vmvq{3~WErsyD{gmfBs}Q0cC&21;(28*%@hj8&FnalR(h3u@XH}$0zTbXov;<$~k%!j_Z+S+hEaX~@C zv{qEeZ3DSaDSCP*g7t&G&_Bzs_N2yRnj()ZghNR z$H*9VYyo@GR{_8kW4GOkg~=^oJ?;-ffo)jW)wgZ_yDjFr_67zPXexBdfLAd>$eO7) z^DOxd5L8hiJ|@|tbRtn|!;G(;Zp#ZU}Ko;$KGmV{u0*U*No4j6228~b` z(UhgxnzHpl?-Ev8U}{C;N?6nAyWx3t&={oD-W{U}9Kop$X}>3T8=#7ysdt0TOXY1D QOF#H_1Sfo{m0!$%0K4WuRsaA1 diff --git a/src/ExtCore.Data.Dapper.SqlServer/icon.png b/src/ExtCore.Data.Dapper.SqlServer/icon.png deleted file mode 100644 index 658aadfa4b42dc9573b7867b99b9d5a0ce54f25b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3149 zcmaJ@c|4SB8-8XGp$_Q`ZKr8uEoR0tjw#D9GnVX2Mu#$Hh8bfPGb2mMgM1*g2s`LHv^}WCMeV^rbUDtg-&wahm?>*$=WV1qktvmo= zg`F+lP0|XN9yzGw?cnn%OVX?n5J&=dPJkec%%cGumE%u?+p)-jG&dTV8WD1bwjBT| z1jBl^A(P-rw9gV9GD8DlW$t#AVr+5m}?+!#Hy5!M)kH86pHyAYCS zJZb>e4Nv?QOENM;&;(C&HuJdk_|(KletK=K5A)6-+_*f{~yX? z{Xp{tZnS^%{hz{oj|eUe=|vr&l)GdF7FQA(PvbH6(x^lphXwz-WGv(7 zxmf*F?;Dr;^IWWd%0)_&K`s^czY6_*O5&cS?ho5a20x5XV@ur5li2#cbK+e9?|r@LKAvjVr@J)_GdG{;$=lJP8>E_(9}=O|Zi3riHG^2KES=MlwCiFBj(*9W z5w%(w@0w>mGcW1y^ zwh9e#x$3UVWm$sMS@{)5Es?;(W=D6|OCeB-weLA%sSfB)4y3_4qLfgSPp3)O0!usB z%G^9Fl_{;g3bQV5dce>0e2~BN7r@mBGRn#G4=rjiCpIdAGUU^PA|6yMwT_(J98leP z)BRa63=+LUKiGAp@DTonQLEA~@z+!y41UyZX6}qT2^Etz1>0_gsq=85c3dSob{ zEdhLe!K&B0u(-M2}bCn<$* zDy>lNs%WOW%X}E@EkFk4w%owAho;|?3u22OqGEJ{-1D{0y_zLUy@P_--&bj~-1B|p zW}?C@@MHS+HAszR;%WmUH``OIR%m$oUUnwh;g}j`2`QDDYi%B*SViOEJ}})o zi&FZYhS_wrecsxIzQ0l>_Mvn|Rw$@EA;QZRnt;pf2=eaOg;Y_@sb$#uB=Nc8#AXs< z_Wh_nzI-)qk2pqzaX4KR{ah9z)UZ!F4etw5B_ub$%C)8kW|aJOw0Xs&^Y)#&((4rt zizZ$^MGz@st=FP}m{ly|+rr0kn;)59?Hu4H&+jCunJ)U)nD_UL?%n@rO2|O%z??35 zBo7hd5y}P(<xPMjsamw| zK2o{poo<=x0TUtzG!NYI@vPNJfVH(o=dZfC zttn?pjlJzZ;e8{xDfu(ASGAP5YyM{fuA0ySyx6yX)mkVM%XpYF@m05eo?M*+oQk$`-tX<=*${HZK~Cpr25{c38I$^ z_7!~*XWJarF1n$wQHBqn_FwmIeL_8fr?d8IRh0~|%otd>Ub64}F+(RTdsiJkdVT~d z7GCR#hmVYm9Q1vtU>3$<5Bp_JejI%cxrrMG*Yt0PtUt@^`4z%-2%&OgnH@~Rds8Mj zo`iy?IA~gTJZyO(dp3B_J%iyWJ!`a7iC^6Hndw^fqb=`(+|9OE-!v}#BW`2m3Fi#o zYD$HNF!TJg_I6h<-M;MfPpbPy^Rp^Z_g%wCx6m2CN%@%@D`Ya6)AYrtd5mw}CwKND zOuf{f3WO8*0Pl2%8Xp!ArSo4MW8np@m3t~WbsQB_AmD*)iR09>(QRRW)yZkrzwqs( zXm2-3E4C_E>I~Jm7aG@Xk!d4qx}^Kb}z3xYyri`KY{DzJ9yOMBU>tI1k7 za3HV?zB)A3BR(=-`c;EeP;dH_)0Wx1vmvq{3~WErsyD{gmfBs}Q0cC&21;(28*%@hj8&FnalR(h3u@XH}$0zTbXov;<$~k%!j_Z+S+hEaX~@C zv{qEeZ3DSaDSCP*g7t&G&_Bzs_N2yRnj()ZghNR z$H*9VYyo@GR{_8kW4GOkg~=^oJ?;-ffo)jW)wgZ_yDjFr_67zPXexBdfLAd>$eO7) z^DOxd5L8hiJ|@|tbRtn|!;G(;Zp#ZU}Ko;$KGmV{u0*U*No4j6228~b` z(UhgxnzHpl?-Ev8U}{C;N?6nAyWx3t&={oD-W{U}9Kop$X}>3T8=#7ysdt0TOXY1D QOF#H_1Sfo{m0!$%0K4WuRsaA1 diff --git a/src/ExtCore.Data.Dapper.Sqlite/icon.png b/src/ExtCore.Data.Dapper.Sqlite/icon.png deleted file mode 100644 index 658aadfa4b42dc9573b7867b99b9d5a0ce54f25b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3149 zcmaJ@c|4SB8-8XGp$_Q`ZKr8uEoR0tjw#D9GnVX2Mu#$Hh8bfPGb2mMgM1*g2s`LHv^}WCMeV^rbUDtg-&wahm?>*$=WV1qktvmo= zg`F+lP0|XN9yzGw?cnn%OVX?n5J&=dPJkec%%cGumE%u?+p)-jG&dTV8WD1bwjBT| z1jBl^A(P-rw9gV9GD8DlW$t#AVr+5m}?+!#Hy5!M)kH86pHyAYCS zJZb>e4Nv?QOENM;&;(C&HuJdk_|(KletK=K5A)6-+_*f{~yX? z{Xp{tZnS^%{hz{oj|eUe=|vr&l)GdF7FQA(PvbH6(x^lphXwz-WGv(7 zxmf*F?;Dr;^IWWd%0)_&K`s^czY6_*O5&cS?ho5a20x5XV@ur5li2#cbK+e9?|r@LKAvjVr@J)_GdG{;$=lJP8>E_(9}=O|Zi3riHG^2KES=MlwCiFBj(*9W z5w%(w@0w>mGcW1y^ zwh9e#x$3UVWm$sMS@{)5Es?;(W=D6|OCeB-weLA%sSfB)4y3_4qLfgSPp3)O0!usB z%G^9Fl_{;g3bQV5dce>0e2~BN7r@mBGRn#G4=rjiCpIdAGUU^PA|6yMwT_(J98leP z)BRa63=+LUKiGAp@DTonQLEA~@z+!y41UyZX6}qT2^Etz1>0_gsq=85c3dSob{ zEdhLe!K&B0u(-M2}bCn<$* zDy>lNs%WOW%X}E@EkFk4w%owAho;|?3u22OqGEJ{-1D{0y_zLUy@P_--&bj~-1B|p zW}?C@@MHS+HAszR;%WmUH``OIR%m$oUUnwh;g}j`2`QDDYi%B*SViOEJ}})o zi&FZYhS_wrecsxIzQ0l>_Mvn|Rw$@EA;QZRnt;pf2=eaOg;Y_@sb$#uB=Nc8#AXs< z_Wh_nzI-)qk2pqzaX4KR{ah9z)UZ!F4etw5B_ub$%C)8kW|aJOw0Xs&^Y)#&((4rt zizZ$^MGz@st=FP}m{ly|+rr0kn;)59?Hu4H&+jCunJ)U)nD_UL?%n@rO2|O%z??35 zBo7hd5y}P(<xPMjsamw| zK2o{poo<=x0TUtzG!NYI@vPNJfVH(o=dZfC zttn?pjlJzZ;e8{xDfu(ASGAP5YyM{fuA0ySyx6yX)mkVM%XpYF@m05eo?M*+oQk$`-tX<=*${HZK~Cpr25{c38I$^ z_7!~*XWJarF1n$wQHBqn_FwmIeL_8fr?d8IRh0~|%otd>Ub64}F+(RTdsiJkdVT~d z7GCR#hmVYm9Q1vtU>3$<5Bp_JejI%cxrrMG*Yt0PtUt@^`4z%-2%&OgnH@~Rds8Mj zo`iy?IA~gTJZyO(dp3B_J%iyWJ!`a7iC^6Hndw^fqb=`(+|9OE-!v}#BW`2m3Fi#o zYD$HNF!TJg_I6h<-M;MfPpbPy^Rp^Z_g%wCx6m2CN%@%@D`Ya6)AYrtd5mw}CwKND zOuf{f3WO8*0Pl2%8Xp!ArSo4MW8np@m3t~WbsQB_AmD*)iR09>(QRRW)yZkrzwqs( zXm2-3E4C_E>I~Jm7aG@Xk!d4qx}^Kb}z3xYyri`KY{DzJ9yOMBU>tI1k7 za3HV?zB)A3BR(=-`c;EeP;dH_)0Wx1vmvq{3~WErsyD{gmfBs}Q0cC&21;(28*%@hj8&FnalR(h3u@XH}$0zTbXov;<$~k%!j_Z+S+hEaX~@C zv{qEeZ3DSaDSCP*g7t&G&_Bzs_N2yRnj()ZghNR z$H*9VYyo@GR{_8kW4GOkg~=^oJ?;-ffo)jW)wgZ_yDjFr_67zPXexBdfLAd>$eO7) z^DOxd5L8hiJ|@|tbRtn|!;G(;Zp#ZU}Ko;$KGmV{u0*U*No4j6228~b` z(UhgxnzHpl?-Ev8U}{C;N?6nAyWx3t&={oD-W{U}9Kop$X}>3T8=#7ysdt0TOXY1D QOF#H_1Sfo{m0!$%0K4WuRsaA1 diff --git a/src/ExtCore.Data.Dapper/icon.png b/src/ExtCore.Data.Dapper/icon.png deleted file mode 100644 index 658aadfa4b42dc9573b7867b99b9d5a0ce54f25b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3149 zcmaJ@c|4SB8-8XGp$_Q`ZKr8uEoR0tjw#D9GnVX2Mu#$Hh8bfPGb2mMgM1*g2s`LHv^}WCMeV^rbUDtg-&wahm?>*$=WV1qktvmo= zg`F+lP0|XN9yzGw?cnn%OVX?n5J&=dPJkec%%cGumE%u?+p)-jG&dTV8WD1bwjBT| z1jBl^A(P-rw9gV9GD8DlW$t#AVr+5m}?+!#Hy5!M)kH86pHyAYCS zJZb>e4Nv?QOENM;&;(C&HuJdk_|(KletK=K5A)6-+_*f{~yX? z{Xp{tZnS^%{hz{oj|eUe=|vr&l)GdF7FQA(PvbH6(x^lphXwz-WGv(7 zxmf*F?;Dr;^IWWd%0)_&K`s^czY6_*O5&cS?ho5a20x5XV@ur5li2#cbK+e9?|r@LKAvjVr@J)_GdG{;$=lJP8>E_(9}=O|Zi3riHG^2KES=MlwCiFBj(*9W z5w%(w@0w>mGcW1y^ zwh9e#x$3UVWm$sMS@{)5Es?;(W=D6|OCeB-weLA%sSfB)4y3_4qLfgSPp3)O0!usB z%G^9Fl_{;g3bQV5dce>0e2~BN7r@mBGRn#G4=rjiCpIdAGUU^PA|6yMwT_(J98leP z)BRa63=+LUKiGAp@DTonQLEA~@z+!y41UyZX6}qT2^Etz1>0_gsq=85c3dSob{ zEdhLe!K&B0u(-M2}bCn<$* zDy>lNs%WOW%X}E@EkFk4w%owAho;|?3u22OqGEJ{-1D{0y_zLUy@P_--&bj~-1B|p zW}?C@@MHS+HAszR;%WmUH``OIR%m$oUUnwh;g}j`2`QDDYi%B*SViOEJ}})o zi&FZYhS_wrecsxIzQ0l>_Mvn|Rw$@EA;QZRnt;pf2=eaOg;Y_@sb$#uB=Nc8#AXs< z_Wh_nzI-)qk2pqzaX4KR{ah9z)UZ!F4etw5B_ub$%C)8kW|aJOw0Xs&^Y)#&((4rt zizZ$^MGz@st=FP}m{ly|+rr0kn;)59?Hu4H&+jCunJ)U)nD_UL?%n@rO2|O%z??35 zBo7hd5y}P(<xPMjsamw| zK2o{poo<=x0TUtzG!NYI@vPNJfVH(o=dZfC zttn?pjlJzZ;e8{xDfu(ASGAP5YyM{fuA0ySyx6yX)mkVM%XpYF@m05eo?M*+oQk$`-tX<=*${HZK~Cpr25{c38I$^ z_7!~*XWJarF1n$wQHBqn_FwmIeL_8fr?d8IRh0~|%otd>Ub64}F+(RTdsiJkdVT~d z7GCR#hmVYm9Q1vtU>3$<5Bp_JejI%cxrrMG*Yt0PtUt@^`4z%-2%&OgnH@~Rds8Mj zo`iy?IA~gTJZyO(dp3B_J%iyWJ!`a7iC^6Hndw^fqb=`(+|9OE-!v}#BW`2m3Fi#o zYD$HNF!TJg_I6h<-M;MfPpbPy^Rp^Z_g%wCx6m2CN%@%@D`Ya6)AYrtd5mw}CwKND zOuf{f3WO8*0Pl2%8Xp!ArSo4MW8np@m3t~WbsQB_AmD*)iR09>(QRRW)yZkrzwqs( zXm2-3E4C_E>I~Jm7aG@Xk!d4qx}^Kb}z3xYyri`KY{DzJ9yOMBU>tI1k7 za3HV?zB)A3BR(=-`c;EeP;dH_)0Wx1vmvq{3~WErsyD{gmfBs}Q0cC&21;(28*%@hj8&FnalR(h3u@XH}$0zTbXov;<$~k%!j_Z+S+hEaX~@C zv{qEeZ3DSaDSCP*g7t&G&_Bzs_N2yRnj()ZghNR z$H*9VYyo@GR{_8kW4GOkg~=^oJ?;-ffo)jW)wgZ_yDjFr_67zPXexBdfLAd>$eO7) z^DOxd5L8hiJ|@|tbRtn|!;G(;Zp#ZU}Ko;$KGmV{u0*U*No4j6228~b` z(UhgxnzHpl?-Ev8U}{C;N?6nAyWx3t&={oD-W{U}9Kop$X}>3T8=#7ysdt0TOXY1D QOF#H_1Sfo{m0!$%0K4WuRsaA1 diff --git a/src/ExtCore.Data.Entities.Abstractions/icon.png b/src/ExtCore.Data.Entities.Abstractions/icon.png deleted file mode 100644 index 658aadfa4b42dc9573b7867b99b9d5a0ce54f25b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3149 zcmaJ@c|4SB8-8XGp$_Q`ZKr8uEoR0tjw#D9GnVX2Mu#$Hh8bfPGb2mMgM1*g2s`LHv^}WCMeV^rbUDtg-&wahm?>*$=WV1qktvmo= zg`F+lP0|XN9yzGw?cnn%OVX?n5J&=dPJkec%%cGumE%u?+p)-jG&dTV8WD1bwjBT| z1jBl^A(P-rw9gV9GD8DlW$t#AVr+5m}?+!#Hy5!M)kH86pHyAYCS zJZb>e4Nv?QOENM;&;(C&HuJdk_|(KletK=K5A)6-+_*f{~yX? z{Xp{tZnS^%{hz{oj|eUe=|vr&l)GdF7FQA(PvbH6(x^lphXwz-WGv(7 zxmf*F?;Dr;^IWWd%0)_&K`s^czY6_*O5&cS?ho5a20x5XV@ur5li2#cbK+e9?|r@LKAvjVr@J)_GdG{;$=lJP8>E_(9}=O|Zi3riHG^2KES=MlwCiFBj(*9W z5w%(w@0w>mGcW1y^ zwh9e#x$3UVWm$sMS@{)5Es?;(W=D6|OCeB-weLA%sSfB)4y3_4qLfgSPp3)O0!usB z%G^9Fl_{;g3bQV5dce>0e2~BN7r@mBGRn#G4=rjiCpIdAGUU^PA|6yMwT_(J98leP z)BRa63=+LUKiGAp@DTonQLEA~@z+!y41UyZX6}qT2^Etz1>0_gsq=85c3dSob{ zEdhLe!K&B0u(-M2}bCn<$* zDy>lNs%WOW%X}E@EkFk4w%owAho;|?3u22OqGEJ{-1D{0y_zLUy@P_--&bj~-1B|p zW}?C@@MHS+HAszR;%WmUH``OIR%m$oUUnwh;g}j`2`QDDYi%B*SViOEJ}})o zi&FZYhS_wrecsxIzQ0l>_Mvn|Rw$@EA;QZRnt;pf2=eaOg;Y_@sb$#uB=Nc8#AXs< z_Wh_nzI-)qk2pqzaX4KR{ah9z)UZ!F4etw5B_ub$%C)8kW|aJOw0Xs&^Y)#&((4rt zizZ$^MGz@st=FP}m{ly|+rr0kn;)59?Hu4H&+jCunJ)U)nD_UL?%n@rO2|O%z??35 zBo7hd5y}P(<xPMjsamw| zK2o{poo<=x0TUtzG!NYI@vPNJfVH(o=dZfC zttn?pjlJzZ;e8{xDfu(ASGAP5YyM{fuA0ySyx6yX)mkVM%XpYF@m05eo?M*+oQk$`-tX<=*${HZK~Cpr25{c38I$^ z_7!~*XWJarF1n$wQHBqn_FwmIeL_8fr?d8IRh0~|%otd>Ub64}F+(RTdsiJkdVT~d z7GCR#hmVYm9Q1vtU>3$<5Bp_JejI%cxrrMG*Yt0PtUt@^`4z%-2%&OgnH@~Rds8Mj zo`iy?IA~gTJZyO(dp3B_J%iyWJ!`a7iC^6Hndw^fqb=`(+|9OE-!v}#BW`2m3Fi#o zYD$HNF!TJg_I6h<-M;MfPpbPy^Rp^Z_g%wCx6m2CN%@%@D`Ya6)AYrtd5mw}CwKND zOuf{f3WO8*0Pl2%8Xp!ArSo4MW8np@m3t~WbsQB_AmD*)iR09>(QRRW)yZkrzwqs( zXm2-3E4C_E>I~Jm7aG@Xk!d4qx}^Kb}z3xYyri`KY{DzJ9yOMBU>tI1k7 za3HV?zB)A3BR(=-`c;EeP;dH_)0Wx1vmvq{3~WErsyD{gmfBs}Q0cC&21;(28*%@hj8&FnalR(h3u@XH}$0zTbXov;<$~k%!j_Z+S+hEaX~@C zv{qEeZ3DSaDSCP*g7t&G&_Bzs_N2yRnj()ZghNR z$H*9VYyo@GR{_8kW4GOkg~=^oJ?;-ffo)jW)wgZ_yDjFr_67zPXexBdfLAd>$eO7) z^DOxd5L8hiJ|@|tbRtn|!;G(;Zp#ZU}Ko;$KGmV{u0*U*No4j6228~b` z(UhgxnzHpl?-Ev8U}{C;N?6nAyWx3t&={oD-W{U}9Kop$X}>3T8=#7ysdt0TOXY1D QOF#H_1Sfo{m0!$%0K4WuRsaA1 diff --git a/src/ExtCore.Data.EntityFramework.MySql/icon.png b/src/ExtCore.Data.EntityFramework.MySql/icon.png deleted file mode 100644 index 658aadfa4b42dc9573b7867b99b9d5a0ce54f25b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3149 zcmaJ@c|4SB8-8XGp$_Q`ZKr8uEoR0tjw#D9GnVX2Mu#$Hh8bfPGb2mMgM1*g2s`LHv^}WCMeV^rbUDtg-&wahm?>*$=WV1qktvmo= zg`F+lP0|XN9yzGw?cnn%OVX?n5J&=dPJkec%%cGumE%u?+p)-jG&dTV8WD1bwjBT| z1jBl^A(P-rw9gV9GD8DlW$t#AVr+5m}?+!#Hy5!M)kH86pHyAYCS zJZb>e4Nv?QOENM;&;(C&HuJdk_|(KletK=K5A)6-+_*f{~yX? z{Xp{tZnS^%{hz{oj|eUe=|vr&l)GdF7FQA(PvbH6(x^lphXwz-WGv(7 zxmf*F?;Dr;^IWWd%0)_&K`s^czY6_*O5&cS?ho5a20x5XV@ur5li2#cbK+e9?|r@LKAvjVr@J)_GdG{;$=lJP8>E_(9}=O|Zi3riHG^2KES=MlwCiFBj(*9W z5w%(w@0w>mGcW1y^ zwh9e#x$3UVWm$sMS@{)5Es?;(W=D6|OCeB-weLA%sSfB)4y3_4qLfgSPp3)O0!usB z%G^9Fl_{;g3bQV5dce>0e2~BN7r@mBGRn#G4=rjiCpIdAGUU^PA|6yMwT_(J98leP z)BRa63=+LUKiGAp@DTonQLEA~@z+!y41UyZX6}qT2^Etz1>0_gsq=85c3dSob{ zEdhLe!K&B0u(-M2}bCn<$* zDy>lNs%WOW%X}E@EkFk4w%owAho;|?3u22OqGEJ{-1D{0y_zLUy@P_--&bj~-1B|p zW}?C@@MHS+HAszR;%WmUH``OIR%m$oUUnwh;g}j`2`QDDYi%B*SViOEJ}})o zi&FZYhS_wrecsxIzQ0l>_Mvn|Rw$@EA;QZRnt;pf2=eaOg;Y_@sb$#uB=Nc8#AXs< z_Wh_nzI-)qk2pqzaX4KR{ah9z)UZ!F4etw5B_ub$%C)8kW|aJOw0Xs&^Y)#&((4rt zizZ$^MGz@st=FP}m{ly|+rr0kn;)59?Hu4H&+jCunJ)U)nD_UL?%n@rO2|O%z??35 zBo7hd5y}P(<xPMjsamw| zK2o{poo<=x0TUtzG!NYI@vPNJfVH(o=dZfC zttn?pjlJzZ;e8{xDfu(ASGAP5YyM{fuA0ySyx6yX)mkVM%XpYF@m05eo?M*+oQk$`-tX<=*${HZK~Cpr25{c38I$^ z_7!~*XWJarF1n$wQHBqn_FwmIeL_8fr?d8IRh0~|%otd>Ub64}F+(RTdsiJkdVT~d z7GCR#hmVYm9Q1vtU>3$<5Bp_JejI%cxrrMG*Yt0PtUt@^`4z%-2%&OgnH@~Rds8Mj zo`iy?IA~gTJZyO(dp3B_J%iyWJ!`a7iC^6Hndw^fqb=`(+|9OE-!v}#BW`2m3Fi#o zYD$HNF!TJg_I6h<-M;MfPpbPy^Rp^Z_g%wCx6m2CN%@%@D`Ya6)AYrtd5mw}CwKND zOuf{f3WO8*0Pl2%8Xp!ArSo4MW8np@m3t~WbsQB_AmD*)iR09>(QRRW)yZkrzwqs( zXm2-3E4C_E>I~Jm7aG@Xk!d4qx}^Kb}z3xYyri`KY{DzJ9yOMBU>tI1k7 za3HV?zB)A3BR(=-`c;EeP;dH_)0Wx1vmvq{3~WErsyD{gmfBs}Q0cC&21;(28*%@hj8&FnalR(h3u@XH}$0zTbXov;<$~k%!j_Z+S+hEaX~@C zv{qEeZ3DSaDSCP*g7t&G&_Bzs_N2yRnj()ZghNR z$H*9VYyo@GR{_8kW4GOkg~=^oJ?;-ffo)jW)wgZ_yDjFr_67zPXexBdfLAd>$eO7) z^DOxd5L8hiJ|@|tbRtn|!;G(;Zp#ZU}Ko;$KGmV{u0*U*No4j6228~b` z(UhgxnzHpl?-Ev8U}{C;N?6nAyWx3t&={oD-W{U}9Kop$X}>3T8=#7ysdt0TOXY1D QOF#H_1Sfo{m0!$%0K4WuRsaA1 diff --git a/src/ExtCore.Data.EntityFramework.PostgreSql/icon.png b/src/ExtCore.Data.EntityFramework.PostgreSql/icon.png deleted file mode 100644 index 658aadfa4b42dc9573b7867b99b9d5a0ce54f25b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3149 zcmaJ@c|4SB8-8XGp$_Q`ZKr8uEoR0tjw#D9GnVX2Mu#$Hh8bfPGb2mMgM1*g2s`LHv^}WCMeV^rbUDtg-&wahm?>*$=WV1qktvmo= zg`F+lP0|XN9yzGw?cnn%OVX?n5J&=dPJkec%%cGumE%u?+p)-jG&dTV8WD1bwjBT| z1jBl^A(P-rw9gV9GD8DlW$t#AVr+5m}?+!#Hy5!M)kH86pHyAYCS zJZb>e4Nv?QOENM;&;(C&HuJdk_|(KletK=K5A)6-+_*f{~yX? z{Xp{tZnS^%{hz{oj|eUe=|vr&l)GdF7FQA(PvbH6(x^lphXwz-WGv(7 zxmf*F?;Dr;^IWWd%0)_&K`s^czY6_*O5&cS?ho5a20x5XV@ur5li2#cbK+e9?|r@LKAvjVr@J)_GdG{;$=lJP8>E_(9}=O|Zi3riHG^2KES=MlwCiFBj(*9W z5w%(w@0w>mGcW1y^ zwh9e#x$3UVWm$sMS@{)5Es?;(W=D6|OCeB-weLA%sSfB)4y3_4qLfgSPp3)O0!usB z%G^9Fl_{;g3bQV5dce>0e2~BN7r@mBGRn#G4=rjiCpIdAGUU^PA|6yMwT_(J98leP z)BRa63=+LUKiGAp@DTonQLEA~@z+!y41UyZX6}qT2^Etz1>0_gsq=85c3dSob{ zEdhLe!K&B0u(-M2}bCn<$* zDy>lNs%WOW%X}E@EkFk4w%owAho;|?3u22OqGEJ{-1D{0y_zLUy@P_--&bj~-1B|p zW}?C@@MHS+HAszR;%WmUH``OIR%m$oUUnwh;g}j`2`QDDYi%B*SViOEJ}})o zi&FZYhS_wrecsxIzQ0l>_Mvn|Rw$@EA;QZRnt;pf2=eaOg;Y_@sb$#uB=Nc8#AXs< z_Wh_nzI-)qk2pqzaX4KR{ah9z)UZ!F4etw5B_ub$%C)8kW|aJOw0Xs&^Y)#&((4rt zizZ$^MGz@st=FP}m{ly|+rr0kn;)59?Hu4H&+jCunJ)U)nD_UL?%n@rO2|O%z??35 zBo7hd5y}P(<xPMjsamw| zK2o{poo<=x0TUtzG!NYI@vPNJfVH(o=dZfC zttn?pjlJzZ;e8{xDfu(ASGAP5YyM{fuA0ySyx6yX)mkVM%XpYF@m05eo?M*+oQk$`-tX<=*${HZK~Cpr25{c38I$^ z_7!~*XWJarF1n$wQHBqn_FwmIeL_8fr?d8IRh0~|%otd>Ub64}F+(RTdsiJkdVT~d z7GCR#hmVYm9Q1vtU>3$<5Bp_JejI%cxrrMG*Yt0PtUt@^`4z%-2%&OgnH@~Rds8Mj zo`iy?IA~gTJZyO(dp3B_J%iyWJ!`a7iC^6Hndw^fqb=`(+|9OE-!v}#BW`2m3Fi#o zYD$HNF!TJg_I6h<-M;MfPpbPy^Rp^Z_g%wCx6m2CN%@%@D`Ya6)AYrtd5mw}CwKND zOuf{f3WO8*0Pl2%8Xp!ArSo4MW8np@m3t~WbsQB_AmD*)iR09>(QRRW)yZkrzwqs( zXm2-3E4C_E>I~Jm7aG@Xk!d4qx}^Kb}z3xYyri`KY{DzJ9yOMBU>tI1k7 za3HV?zB)A3BR(=-`c;EeP;dH_)0Wx1vmvq{3~WErsyD{gmfBs}Q0cC&21;(28*%@hj8&FnalR(h3u@XH}$0zTbXov;<$~k%!j_Z+S+hEaX~@C zv{qEeZ3DSaDSCP*g7t&G&_Bzs_N2yRnj()ZghNR z$H*9VYyo@GR{_8kW4GOkg~=^oJ?;-ffo)jW)wgZ_yDjFr_67zPXexBdfLAd>$eO7) z^DOxd5L8hiJ|@|tbRtn|!;G(;Zp#ZU}Ko;$KGmV{u0*U*No4j6228~b` z(UhgxnzHpl?-Ev8U}{C;N?6nAyWx3t&={oD-W{U}9Kop$X}>3T8=#7ysdt0TOXY1D QOF#H_1Sfo{m0!$%0K4WuRsaA1 diff --git a/src/ExtCore.Data.EntityFramework.SqlServer/icon.png b/src/ExtCore.Data.EntityFramework.SqlServer/icon.png deleted file mode 100644 index 658aadfa4b42dc9573b7867b99b9d5a0ce54f25b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3149 zcmaJ@c|4SB8-8XGp$_Q`ZKr8uEoR0tjw#D9GnVX2Mu#$Hh8bfPGb2mMgM1*g2s`LHv^}WCMeV^rbUDtg-&wahm?>*$=WV1qktvmo= zg`F+lP0|XN9yzGw?cnn%OVX?n5J&=dPJkec%%cGumE%u?+p)-jG&dTV8WD1bwjBT| z1jBl^A(P-rw9gV9GD8DlW$t#AVr+5m}?+!#Hy5!M)kH86pHyAYCS zJZb>e4Nv?QOENM;&;(C&HuJdk_|(KletK=K5A)6-+_*f{~yX? z{Xp{tZnS^%{hz{oj|eUe=|vr&l)GdF7FQA(PvbH6(x^lphXwz-WGv(7 zxmf*F?;Dr;^IWWd%0)_&K`s^czY6_*O5&cS?ho5a20x5XV@ur5li2#cbK+e9?|r@LKAvjVr@J)_GdG{;$=lJP8>E_(9}=O|Zi3riHG^2KES=MlwCiFBj(*9W z5w%(w@0w>mGcW1y^ zwh9e#x$3UVWm$sMS@{)5Es?;(W=D6|OCeB-weLA%sSfB)4y3_4qLfgSPp3)O0!usB z%G^9Fl_{;g3bQV5dce>0e2~BN7r@mBGRn#G4=rjiCpIdAGUU^PA|6yMwT_(J98leP z)BRa63=+LUKiGAp@DTonQLEA~@z+!y41UyZX6}qT2^Etz1>0_gsq=85c3dSob{ zEdhLe!K&B0u(-M2}bCn<$* zDy>lNs%WOW%X}E@EkFk4w%owAho;|?3u22OqGEJ{-1D{0y_zLUy@P_--&bj~-1B|p zW}?C@@MHS+HAszR;%WmUH``OIR%m$oUUnwh;g}j`2`QDDYi%B*SViOEJ}})o zi&FZYhS_wrecsxIzQ0l>_Mvn|Rw$@EA;QZRnt;pf2=eaOg;Y_@sb$#uB=Nc8#AXs< z_Wh_nzI-)qk2pqzaX4KR{ah9z)UZ!F4etw5B_ub$%C)8kW|aJOw0Xs&^Y)#&((4rt zizZ$^MGz@st=FP}m{ly|+rr0kn;)59?Hu4H&+jCunJ)U)nD_UL?%n@rO2|O%z??35 zBo7hd5y}P(<xPMjsamw| zK2o{poo<=x0TUtzG!NYI@vPNJfVH(o=dZfC zttn?pjlJzZ;e8{xDfu(ASGAP5YyM{fuA0ySyx6yX)mkVM%XpYF@m05eo?M*+oQk$`-tX<=*${HZK~Cpr25{c38I$^ z_7!~*XWJarF1n$wQHBqn_FwmIeL_8fr?d8IRh0~|%otd>Ub64}F+(RTdsiJkdVT~d z7GCR#hmVYm9Q1vtU>3$<5Bp_JejI%cxrrMG*Yt0PtUt@^`4z%-2%&OgnH@~Rds8Mj zo`iy?IA~gTJZyO(dp3B_J%iyWJ!`a7iC^6Hndw^fqb=`(+|9OE-!v}#BW`2m3Fi#o zYD$HNF!TJg_I6h<-M;MfPpbPy^Rp^Z_g%wCx6m2CN%@%@D`Ya6)AYrtd5mw}CwKND zOuf{f3WO8*0Pl2%8Xp!ArSo4MW8np@m3t~WbsQB_AmD*)iR09>(QRRW)yZkrzwqs( zXm2-3E4C_E>I~Jm7aG@Xk!d4qx}^Kb}z3xYyri`KY{DzJ9yOMBU>tI1k7 za3HV?zB)A3BR(=-`c;EeP;dH_)0Wx1vmvq{3~WErsyD{gmfBs}Q0cC&21;(28*%@hj8&FnalR(h3u@XH}$0zTbXov;<$~k%!j_Z+S+hEaX~@C zv{qEeZ3DSaDSCP*g7t&G&_Bzs_N2yRnj()ZghNR z$H*9VYyo@GR{_8kW4GOkg~=^oJ?;-ffo)jW)wgZ_yDjFr_67zPXexBdfLAd>$eO7) z^DOxd5L8hiJ|@|tbRtn|!;G(;Zp#ZU}Ko;$KGmV{u0*U*No4j6228~b` z(UhgxnzHpl?-Ev8U}{C;N?6nAyWx3t&={oD-W{U}9Kop$X}>3T8=#7ysdt0TOXY1D QOF#H_1Sfo{m0!$%0K4WuRsaA1 diff --git a/src/ExtCore.Data.EntityFramework.Sqlite/icon.png b/src/ExtCore.Data.EntityFramework.Sqlite/icon.png deleted file mode 100644 index 658aadfa4b42dc9573b7867b99b9d5a0ce54f25b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3149 zcmaJ@c|4SB8-8XGp$_Q`ZKr8uEoR0tjw#D9GnVX2Mu#$Hh8bfPGb2mMgM1*g2s`LHv^}WCMeV^rbUDtg-&wahm?>*$=WV1qktvmo= zg`F+lP0|XN9yzGw?cnn%OVX?n5J&=dPJkec%%cGumE%u?+p)-jG&dTV8WD1bwjBT| z1jBl^A(P-rw9gV9GD8DlW$t#AVr+5m}?+!#Hy5!M)kH86pHyAYCS zJZb>e4Nv?QOENM;&;(C&HuJdk_|(KletK=K5A)6-+_*f{~yX? z{Xp{tZnS^%{hz{oj|eUe=|vr&l)GdF7FQA(PvbH6(x^lphXwz-WGv(7 zxmf*F?;Dr;^IWWd%0)_&K`s^czY6_*O5&cS?ho5a20x5XV@ur5li2#cbK+e9?|r@LKAvjVr@J)_GdG{;$=lJP8>E_(9}=O|Zi3riHG^2KES=MlwCiFBj(*9W z5w%(w@0w>mGcW1y^ zwh9e#x$3UVWm$sMS@{)5Es?;(W=D6|OCeB-weLA%sSfB)4y3_4qLfgSPp3)O0!usB z%G^9Fl_{;g3bQV5dce>0e2~BN7r@mBGRn#G4=rjiCpIdAGUU^PA|6yMwT_(J98leP z)BRa63=+LUKiGAp@DTonQLEA~@z+!y41UyZX6}qT2^Etz1>0_gsq=85c3dSob{ zEdhLe!K&B0u(-M2}bCn<$* zDy>lNs%WOW%X}E@EkFk4w%owAho;|?3u22OqGEJ{-1D{0y_zLUy@P_--&bj~-1B|p zW}?C@@MHS+HAszR;%WmUH``OIR%m$oUUnwh;g}j`2`QDDYi%B*SViOEJ}})o zi&FZYhS_wrecsxIzQ0l>_Mvn|Rw$@EA;QZRnt;pf2=eaOg;Y_@sb$#uB=Nc8#AXs< z_Wh_nzI-)qk2pqzaX4KR{ah9z)UZ!F4etw5B_ub$%C)8kW|aJOw0Xs&^Y)#&((4rt zizZ$^MGz@st=FP}m{ly|+rr0kn;)59?Hu4H&+jCunJ)U)nD_UL?%n@rO2|O%z??35 zBo7hd5y}P(<xPMjsamw| zK2o{poo<=x0TUtzG!NYI@vPNJfVH(o=dZfC zttn?pjlJzZ;e8{xDfu(ASGAP5YyM{fuA0ySyx6yX)mkVM%XpYF@m05eo?M*+oQk$`-tX<=*${HZK~Cpr25{c38I$^ z_7!~*XWJarF1n$wQHBqn_FwmIeL_8fr?d8IRh0~|%otd>Ub64}F+(RTdsiJkdVT~d z7GCR#hmVYm9Q1vtU>3$<5Bp_JejI%cxrrMG*Yt0PtUt@^`4z%-2%&OgnH@~Rds8Mj zo`iy?IA~gTJZyO(dp3B_J%iyWJ!`a7iC^6Hndw^fqb=`(+|9OE-!v}#BW`2m3Fi#o zYD$HNF!TJg_I6h<-M;MfPpbPy^Rp^Z_g%wCx6m2CN%@%@D`Ya6)AYrtd5mw}CwKND zOuf{f3WO8*0Pl2%8Xp!ArSo4MW8np@m3t~WbsQB_AmD*)iR09>(QRRW)yZkrzwqs( zXm2-3E4C_E>I~Jm7aG@Xk!d4qx}^Kb}z3xYyri`KY{DzJ9yOMBU>tI1k7 za3HV?zB)A3BR(=-`c;EeP;dH_)0Wx1vmvq{3~WErsyD{gmfBs}Q0cC&21;(28*%@hj8&FnalR(h3u@XH}$0zTbXov;<$~k%!j_Z+S+hEaX~@C zv{qEeZ3DSaDSCP*g7t&G&_Bzs_N2yRnj()ZghNR z$H*9VYyo@GR{_8kW4GOkg~=^oJ?;-ffo)jW)wgZ_yDjFr_67zPXexBdfLAd>$eO7) z^DOxd5L8hiJ|@|tbRtn|!;G(;Zp#ZU}Ko;$KGmV{u0*U*No4j6228~b` z(UhgxnzHpl?-Ev8U}{C;N?6nAyWx3t&={oD-W{U}9Kop$X}>3T8=#7ysdt0TOXY1D QOF#H_1Sfo{m0!$%0K4WuRsaA1 diff --git a/src/ExtCore.Data.EntityFramework/icon.png b/src/ExtCore.Data.EntityFramework/icon.png deleted file mode 100644 index 658aadfa4b42dc9573b7867b99b9d5a0ce54f25b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3149 zcmaJ@c|4SB8-8XGp$_Q`ZKr8uEoR0tjw#D9GnVX2Mu#$Hh8bfPGb2mMgM1*g2s`LHv^}WCMeV^rbUDtg-&wahm?>*$=WV1qktvmo= zg`F+lP0|XN9yzGw?cnn%OVX?n5J&=dPJkec%%cGumE%u?+p)-jG&dTV8WD1bwjBT| z1jBl^A(P-rw9gV9GD8DlW$t#AVr+5m}?+!#Hy5!M)kH86pHyAYCS zJZb>e4Nv?QOENM;&;(C&HuJdk_|(KletK=K5A)6-+_*f{~yX? z{Xp{tZnS^%{hz{oj|eUe=|vr&l)GdF7FQA(PvbH6(x^lphXwz-WGv(7 zxmf*F?;Dr;^IWWd%0)_&K`s^czY6_*O5&cS?ho5a20x5XV@ur5li2#cbK+e9?|r@LKAvjVr@J)_GdG{;$=lJP8>E_(9}=O|Zi3riHG^2KES=MlwCiFBj(*9W z5w%(w@0w>mGcW1y^ zwh9e#x$3UVWm$sMS@{)5Es?;(W=D6|OCeB-weLA%sSfB)4y3_4qLfgSPp3)O0!usB z%G^9Fl_{;g3bQV5dce>0e2~BN7r@mBGRn#G4=rjiCpIdAGUU^PA|6yMwT_(J98leP z)BRa63=+LUKiGAp@DTonQLEA~@z+!y41UyZX6}qT2^Etz1>0_gsq=85c3dSob{ zEdhLe!K&B0u(-M2}bCn<$* zDy>lNs%WOW%X}E@EkFk4w%owAho;|?3u22OqGEJ{-1D{0y_zLUy@P_--&bj~-1B|p zW}?C@@MHS+HAszR;%WmUH``OIR%m$oUUnwh;g}j`2`QDDYi%B*SViOEJ}})o zi&FZYhS_wrecsxIzQ0l>_Mvn|Rw$@EA;QZRnt;pf2=eaOg;Y_@sb$#uB=Nc8#AXs< z_Wh_nzI-)qk2pqzaX4KR{ah9z)UZ!F4etw5B_ub$%C)8kW|aJOw0Xs&^Y)#&((4rt zizZ$^MGz@st=FP}m{ly|+rr0kn;)59?Hu4H&+jCunJ)U)nD_UL?%n@rO2|O%z??35 zBo7hd5y}P(<xPMjsamw| zK2o{poo<=x0TUtzG!NYI@vPNJfVH(o=dZfC zttn?pjlJzZ;e8{xDfu(ASGAP5YyM{fuA0ySyx6yX)mkVM%XpYF@m05eo?M*+oQk$`-tX<=*${HZK~Cpr25{c38I$^ z_7!~*XWJarF1n$wQHBqn_FwmIeL_8fr?d8IRh0~|%otd>Ub64}F+(RTdsiJkdVT~d z7GCR#hmVYm9Q1vtU>3$<5Bp_JejI%cxrrMG*Yt0PtUt@^`4z%-2%&OgnH@~Rds8Mj zo`iy?IA~gTJZyO(dp3B_J%iyWJ!`a7iC^6Hndw^fqb=`(+|9OE-!v}#BW`2m3Fi#o zYD$HNF!TJg_I6h<-M;MfPpbPy^Rp^Z_g%wCx6m2CN%@%@D`Ya6)AYrtd5mw}CwKND zOuf{f3WO8*0Pl2%8Xp!ArSo4MW8np@m3t~WbsQB_AmD*)iR09>(QRRW)yZkrzwqs( zXm2-3E4C_E>I~Jm7aG@Xk!d4qx}^Kb}z3xYyri`KY{DzJ9yOMBU>tI1k7 za3HV?zB)A3BR(=-`c;EeP;dH_)0Wx1vmvq{3~WErsyD{gmfBs}Q0cC&21;(28*%@hj8&FnalR(h3u@XH}$0zTbXov;<$~k%!j_Z+S+hEaX~@C zv{qEeZ3DSaDSCP*g7t&G&_Bzs_N2yRnj()ZghNR z$H*9VYyo@GR{_8kW4GOkg~=^oJ?;-ffo)jW)wgZ_yDjFr_67zPXexBdfLAd>$eO7) z^DOxd5L8hiJ|@|tbRtn|!;G(;Zp#ZU}Ko;$KGmV{u0*U*No4j6228~b` z(UhgxnzHpl?-Ev8U}{C;N?6nAyWx3t&={oD-W{U}9Kop$X}>3T8=#7ysdt0TOXY1D QOF#H_1Sfo{m0!$%0K4WuRsaA1 diff --git a/src/ExtCore.Data/icon.png b/src/ExtCore.Data/icon.png deleted file mode 100644 index 658aadfa4b42dc9573b7867b99b9d5a0ce54f25b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3149 zcmaJ@c|4SB8-8XGp$_Q`ZKr8uEoR0tjw#D9GnVX2Mu#$Hh8bfPGb2mMgM1*g2s`LHv^}WCMeV^rbUDtg-&wahm?>*$=WV1qktvmo= zg`F+lP0|XN9yzGw?cnn%OVX?n5J&=dPJkec%%cGumE%u?+p)-jG&dTV8WD1bwjBT| z1jBl^A(P-rw9gV9GD8DlW$t#AVr+5m}?+!#Hy5!M)kH86pHyAYCS zJZb>e4Nv?QOENM;&;(C&HuJdk_|(KletK=K5A)6-+_*f{~yX? z{Xp{tZnS^%{hz{oj|eUe=|vr&l)GdF7FQA(PvbH6(x^lphXwz-WGv(7 zxmf*F?;Dr;^IWWd%0)_&K`s^czY6_*O5&cS?ho5a20x5XV@ur5li2#cbK+e9?|r@LKAvjVr@J)_GdG{;$=lJP8>E_(9}=O|Zi3riHG^2KES=MlwCiFBj(*9W z5w%(w@0w>mGcW1y^ zwh9e#x$3UVWm$sMS@{)5Es?;(W=D6|OCeB-weLA%sSfB)4y3_4qLfgSPp3)O0!usB z%G^9Fl_{;g3bQV5dce>0e2~BN7r@mBGRn#G4=rjiCpIdAGUU^PA|6yMwT_(J98leP z)BRa63=+LUKiGAp@DTonQLEA~@z+!y41UyZX6}qT2^Etz1>0_gsq=85c3dSob{ zEdhLe!K&B0u(-M2}bCn<$* zDy>lNs%WOW%X}E@EkFk4w%owAho;|?3u22OqGEJ{-1D{0y_zLUy@P_--&bj~-1B|p zW}?C@@MHS+HAszR;%WmUH``OIR%m$oUUnwh;g}j`2`QDDYi%B*SViOEJ}})o zi&FZYhS_wrecsxIzQ0l>_Mvn|Rw$@EA;QZRnt;pf2=eaOg;Y_@sb$#uB=Nc8#AXs< z_Wh_nzI-)qk2pqzaX4KR{ah9z)UZ!F4etw5B_ub$%C)8kW|aJOw0Xs&^Y)#&((4rt zizZ$^MGz@st=FP}m{ly|+rr0kn;)59?Hu4H&+jCunJ)U)nD_UL?%n@rO2|O%z??35 zBo7hd5y}P(<xPMjsamw| zK2o{poo<=x0TUtzG!NYI@vPNJfVH(o=dZfC zttn?pjlJzZ;e8{xDfu(ASGAP5YyM{fuA0ySyx6yX)mkVM%XpYF@m05eo?M*+oQk$`-tX<=*${HZK~Cpr25{c38I$^ z_7!~*XWJarF1n$wQHBqn_FwmIeL_8fr?d8IRh0~|%otd>Ub64}F+(RTdsiJkdVT~d z7GCR#hmVYm9Q1vtU>3$<5Bp_JejI%cxrrMG*Yt0PtUt@^`4z%-2%&OgnH@~Rds8Mj zo`iy?IA~gTJZyO(dp3B_J%iyWJ!`a7iC^6Hndw^fqb=`(+|9OE-!v}#BW`2m3Fi#o zYD$HNF!TJg_I6h<-M;MfPpbPy^Rp^Z_g%wCx6m2CN%@%@D`Ya6)AYrtd5mw}CwKND zOuf{f3WO8*0Pl2%8Xp!ArSo4MW8np@m3t~WbsQB_AmD*)iR09>(QRRW)yZkrzwqs( zXm2-3E4C_E>I~Jm7aG@Xk!d4qx}^Kb}z3xYyri`KY{DzJ9yOMBU>tI1k7 za3HV?zB)A3BR(=-`c;EeP;dH_)0Wx1vmvq{3~WErsyD{gmfBs}Q0cC&21;(28*%@hj8&FnalR(h3u@XH}$0zTbXov;<$~k%!j_Z+S+hEaX~@C zv{qEeZ3DSaDSCP*g7t&G&_Bzs_N2yRnj()ZghNR z$H*9VYyo@GR{_8kW4GOkg~=^oJ?;-ffo)jW)wgZ_yDjFr_67zPXexBdfLAd>$eO7) z^DOxd5L8hiJ|@|tbRtn|!;G(;Zp#ZU}Ko;$KGmV{u0*U*No4j6228~b` z(UhgxnzHpl?-Ev8U}{C;N?6nAyWx3t&={oD-W{U}9Kop$X}>3T8=#7ysdt0TOXY1D QOF#H_1Sfo{m0!$%0K4WuRsaA1 diff --git a/src/ExtCore.Events/icon.png b/src/ExtCore.Events/icon.png deleted file mode 100644 index 658aadfa4b42dc9573b7867b99b9d5a0ce54f25b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3149 zcmaJ@c|4SB8-8XGp$_Q`ZKr8uEoR0tjw#D9GnVX2Mu#$Hh8bfPGb2mMgM1*g2s`LHv^}WCMeV^rbUDtg-&wahm?>*$=WV1qktvmo= zg`F+lP0|XN9yzGw?cnn%OVX?n5J&=dPJkec%%cGumE%u?+p)-jG&dTV8WD1bwjBT| z1jBl^A(P-rw9gV9GD8DlW$t#AVr+5m}?+!#Hy5!M)kH86pHyAYCS zJZb>e4Nv?QOENM;&;(C&HuJdk_|(KletK=K5A)6-+_*f{~yX? z{Xp{tZnS^%{hz{oj|eUe=|vr&l)GdF7FQA(PvbH6(x^lphXwz-WGv(7 zxmf*F?;Dr;^IWWd%0)_&K`s^czY6_*O5&cS?ho5a20x5XV@ur5li2#cbK+e9?|r@LKAvjVr@J)_GdG{;$=lJP8>E_(9}=O|Zi3riHG^2KES=MlwCiFBj(*9W z5w%(w@0w>mGcW1y^ zwh9e#x$3UVWm$sMS@{)5Es?;(W=D6|OCeB-weLA%sSfB)4y3_4qLfgSPp3)O0!usB z%G^9Fl_{;g3bQV5dce>0e2~BN7r@mBGRn#G4=rjiCpIdAGUU^PA|6yMwT_(J98leP z)BRa63=+LUKiGAp@DTonQLEA~@z+!y41UyZX6}qT2^Etz1>0_gsq=85c3dSob{ zEdhLe!K&B0u(-M2}bCn<$* zDy>lNs%WOW%X}E@EkFk4w%owAho;|?3u22OqGEJ{-1D{0y_zLUy@P_--&bj~-1B|p zW}?C@@MHS+HAszR;%WmUH``OIR%m$oUUnwh;g}j`2`QDDYi%B*SViOEJ}})o zi&FZYhS_wrecsxIzQ0l>_Mvn|Rw$@EA;QZRnt;pf2=eaOg;Y_@sb$#uB=Nc8#AXs< z_Wh_nzI-)qk2pqzaX4KR{ah9z)UZ!F4etw5B_ub$%C)8kW|aJOw0Xs&^Y)#&((4rt zizZ$^MGz@st=FP}m{ly|+rr0kn;)59?Hu4H&+jCunJ)U)nD_UL?%n@rO2|O%z??35 zBo7hd5y}P(<xPMjsamw| zK2o{poo<=x0TUtzG!NYI@vPNJfVH(o=dZfC zttn?pjlJzZ;e8{xDfu(ASGAP5YyM{fuA0ySyx6yX)mkVM%XpYF@m05eo?M*+oQk$`-tX<=*${HZK~Cpr25{c38I$^ z_7!~*XWJarF1n$wQHBqn_FwmIeL_8fr?d8IRh0~|%otd>Ub64}F+(RTdsiJkdVT~d z7GCR#hmVYm9Q1vtU>3$<5Bp_JejI%cxrrMG*Yt0PtUt@^`4z%-2%&OgnH@~Rds8Mj zo`iy?IA~gTJZyO(dp3B_J%iyWJ!`a7iC^6Hndw^fqb=`(+|9OE-!v}#BW`2m3Fi#o zYD$HNF!TJg_I6h<-M;MfPpbPy^Rp^Z_g%wCx6m2CN%@%@D`Ya6)AYrtd5mw}CwKND zOuf{f3WO8*0Pl2%8Xp!ArSo4MW8np@m3t~WbsQB_AmD*)iR09>(QRRW)yZkrzwqs( zXm2-3E4C_E>I~Jm7aG@Xk!d4qx}^Kb}z3xYyri`KY{DzJ9yOMBU>tI1k7 za3HV?zB)A3BR(=-`c;EeP;dH_)0Wx1vmvq{3~WErsyD{gmfBs}Q0cC&21;(28*%@hj8&FnalR(h3u@XH}$0zTbXov;<$~k%!j_Z+S+hEaX~@C zv{qEeZ3DSaDSCP*g7t&G&_Bzs_N2yRnj()ZghNR z$H*9VYyo@GR{_8kW4GOkg~=^oJ?;-ffo)jW)wgZ_yDjFr_67zPXexBdfLAd>$eO7) z^DOxd5L8hiJ|@|tbRtn|!;G(;Zp#ZU}Ko;$KGmV{u0*U*No4j6228~b` z(UhgxnzHpl?-Ev8U}{C;N?6nAyWx3t&={oD-W{U}9Kop$X}>3T8=#7ysdt0TOXY1D QOF#H_1Sfo{m0!$%0K4WuRsaA1 diff --git a/src/ExtCore.FileStorage.Abstractions/icon.png b/src/ExtCore.FileStorage.Abstractions/icon.png deleted file mode 100644 index 658aadfa4b42dc9573b7867b99b9d5a0ce54f25b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3149 zcmaJ@c|4SB8-8XGp$_Q`ZKr8uEoR0tjw#D9GnVX2Mu#$Hh8bfPGb2mMgM1*g2s`LHv^}WCMeV^rbUDtg-&wahm?>*$=WV1qktvmo= zg`F+lP0|XN9yzGw?cnn%OVX?n5J&=dPJkec%%cGumE%u?+p)-jG&dTV8WD1bwjBT| z1jBl^A(P-rw9gV9GD8DlW$t#AVr+5m}?+!#Hy5!M)kH86pHyAYCS zJZb>e4Nv?QOENM;&;(C&HuJdk_|(KletK=K5A)6-+_*f{~yX? z{Xp{tZnS^%{hz{oj|eUe=|vr&l)GdF7FQA(PvbH6(x^lphXwz-WGv(7 zxmf*F?;Dr;^IWWd%0)_&K`s^czY6_*O5&cS?ho5a20x5XV@ur5li2#cbK+e9?|r@LKAvjVr@J)_GdG{;$=lJP8>E_(9}=O|Zi3riHG^2KES=MlwCiFBj(*9W z5w%(w@0w>mGcW1y^ zwh9e#x$3UVWm$sMS@{)5Es?;(W=D6|OCeB-weLA%sSfB)4y3_4qLfgSPp3)O0!usB z%G^9Fl_{;g3bQV5dce>0e2~BN7r@mBGRn#G4=rjiCpIdAGUU^PA|6yMwT_(J98leP z)BRa63=+LUKiGAp@DTonQLEA~@z+!y41UyZX6}qT2^Etz1>0_gsq=85c3dSob{ zEdhLe!K&B0u(-M2}bCn<$* zDy>lNs%WOW%X}E@EkFk4w%owAho;|?3u22OqGEJ{-1D{0y_zLUy@P_--&bj~-1B|p zW}?C@@MHS+HAszR;%WmUH``OIR%m$oUUnwh;g}j`2`QDDYi%B*SViOEJ}})o zi&FZYhS_wrecsxIzQ0l>_Mvn|Rw$@EA;QZRnt;pf2=eaOg;Y_@sb$#uB=Nc8#AXs< z_Wh_nzI-)qk2pqzaX4KR{ah9z)UZ!F4etw5B_ub$%C)8kW|aJOw0Xs&^Y)#&((4rt zizZ$^MGz@st=FP}m{ly|+rr0kn;)59?Hu4H&+jCunJ)U)nD_UL?%n@rO2|O%z??35 zBo7hd5y}P(<xPMjsamw| zK2o{poo<=x0TUtzG!NYI@vPNJfVH(o=dZfC zttn?pjlJzZ;e8{xDfu(ASGAP5YyM{fuA0ySyx6yX)mkVM%XpYF@m05eo?M*+oQk$`-tX<=*${HZK~Cpr25{c38I$^ z_7!~*XWJarF1n$wQHBqn_FwmIeL_8fr?d8IRh0~|%otd>Ub64}F+(RTdsiJkdVT~d z7GCR#hmVYm9Q1vtU>3$<5Bp_JejI%cxrrMG*Yt0PtUt@^`4z%-2%&OgnH@~Rds8Mj zo`iy?IA~gTJZyO(dp3B_J%iyWJ!`a7iC^6Hndw^fqb=`(+|9OE-!v}#BW`2m3Fi#o zYD$HNF!TJg_I6h<-M;MfPpbPy^Rp^Z_g%wCx6m2CN%@%@D`Ya6)AYrtd5mw}CwKND zOuf{f3WO8*0Pl2%8Xp!ArSo4MW8np@m3t~WbsQB_AmD*)iR09>(QRRW)yZkrzwqs( zXm2-3E4C_E>I~Jm7aG@Xk!d4qx}^Kb}z3xYyri`KY{DzJ9yOMBU>tI1k7 za3HV?zB)A3BR(=-`c;EeP;dH_)0Wx1vmvq{3~WErsyD{gmfBs}Q0cC&21;(28*%@hj8&FnalR(h3u@XH}$0zTbXov;<$~k%!j_Z+S+hEaX~@C zv{qEeZ3DSaDSCP*g7t&G&_Bzs_N2yRnj()ZghNR z$H*9VYyo@GR{_8kW4GOkg~=^oJ?;-ffo)jW)wgZ_yDjFr_67zPXexBdfLAd>$eO7) z^DOxd5L8hiJ|@|tbRtn|!;G(;Zp#ZU}Ko;$KGmV{u0*U*No4j6228~b` z(UhgxnzHpl?-Ev8U}{C;N?6nAyWx3t&={oD-W{U}9Kop$X}>3T8=#7ysdt0TOXY1D QOF#H_1Sfo{m0!$%0K4WuRsaA1 diff --git a/src/ExtCore.FileStorage.Azure/icon.png b/src/ExtCore.FileStorage.Azure/icon.png deleted file mode 100644 index 658aadfa4b42dc9573b7867b99b9d5a0ce54f25b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3149 zcmaJ@c|4SB8-8XGp$_Q`ZKr8uEoR0tjw#D9GnVX2Mu#$Hh8bfPGb2mMgM1*g2s`LHv^}WCMeV^rbUDtg-&wahm?>*$=WV1qktvmo= zg`F+lP0|XN9yzGw?cnn%OVX?n5J&=dPJkec%%cGumE%u?+p)-jG&dTV8WD1bwjBT| z1jBl^A(P-rw9gV9GD8DlW$t#AVr+5m}?+!#Hy5!M)kH86pHyAYCS zJZb>e4Nv?QOENM;&;(C&HuJdk_|(KletK=K5A)6-+_*f{~yX? z{Xp{tZnS^%{hz{oj|eUe=|vr&l)GdF7FQA(PvbH6(x^lphXwz-WGv(7 zxmf*F?;Dr;^IWWd%0)_&K`s^czY6_*O5&cS?ho5a20x5XV@ur5li2#cbK+e9?|r@LKAvjVr@J)_GdG{;$=lJP8>E_(9}=O|Zi3riHG^2KES=MlwCiFBj(*9W z5w%(w@0w>mGcW1y^ zwh9e#x$3UVWm$sMS@{)5Es?;(W=D6|OCeB-weLA%sSfB)4y3_4qLfgSPp3)O0!usB z%G^9Fl_{;g3bQV5dce>0e2~BN7r@mBGRn#G4=rjiCpIdAGUU^PA|6yMwT_(J98leP z)BRa63=+LUKiGAp@DTonQLEA~@z+!y41UyZX6}qT2^Etz1>0_gsq=85c3dSob{ zEdhLe!K&B0u(-M2}bCn<$* zDy>lNs%WOW%X}E@EkFk4w%owAho;|?3u22OqGEJ{-1D{0y_zLUy@P_--&bj~-1B|p zW}?C@@MHS+HAszR;%WmUH``OIR%m$oUUnwh;g}j`2`QDDYi%B*SViOEJ}})o zi&FZYhS_wrecsxIzQ0l>_Mvn|Rw$@EA;QZRnt;pf2=eaOg;Y_@sb$#uB=Nc8#AXs< z_Wh_nzI-)qk2pqzaX4KR{ah9z)UZ!F4etw5B_ub$%C)8kW|aJOw0Xs&^Y)#&((4rt zizZ$^MGz@st=FP}m{ly|+rr0kn;)59?Hu4H&+jCunJ)U)nD_UL?%n@rO2|O%z??35 zBo7hd5y}P(<xPMjsamw| zK2o{poo<=x0TUtzG!NYI@vPNJfVH(o=dZfC zttn?pjlJzZ;e8{xDfu(ASGAP5YyM{fuA0ySyx6yX)mkVM%XpYF@m05eo?M*+oQk$`-tX<=*${HZK~Cpr25{c38I$^ z_7!~*XWJarF1n$wQHBqn_FwmIeL_8fr?d8IRh0~|%otd>Ub64}F+(RTdsiJkdVT~d z7GCR#hmVYm9Q1vtU>3$<5Bp_JejI%cxrrMG*Yt0PtUt@^`4z%-2%&OgnH@~Rds8Mj zo`iy?IA~gTJZyO(dp3B_J%iyWJ!`a7iC^6Hndw^fqb=`(+|9OE-!v}#BW`2m3Fi#o zYD$HNF!TJg_I6h<-M;MfPpbPy^Rp^Z_g%wCx6m2CN%@%@D`Ya6)AYrtd5mw}CwKND zOuf{f3WO8*0Pl2%8Xp!ArSo4MW8np@m3t~WbsQB_AmD*)iR09>(QRRW)yZkrzwqs( zXm2-3E4C_E>I~Jm7aG@Xk!d4qx}^Kb}z3xYyri`KY{DzJ9yOMBU>tI1k7 za3HV?zB)A3BR(=-`c;EeP;dH_)0Wx1vmvq{3~WErsyD{gmfBs}Q0cC&21;(28*%@hj8&FnalR(h3u@XH}$0zTbXov;<$~k%!j_Z+S+hEaX~@C zv{qEeZ3DSaDSCP*g7t&G&_Bzs_N2yRnj()ZghNR z$H*9VYyo@GR{_8kW4GOkg~=^oJ?;-ffo)jW)wgZ_yDjFr_67zPXexBdfLAd>$eO7) z^DOxd5L8hiJ|@|tbRtn|!;G(;Zp#ZU}Ko;$KGmV{u0*U*No4j6228~b` z(UhgxnzHpl?-Ev8U}{C;N?6nAyWx3t&={oD-W{U}9Kop$X}>3T8=#7ysdt0TOXY1D QOF#H_1Sfo{m0!$%0K4WuRsaA1 diff --git a/src/ExtCore.FileStorage.Dropbox/icon.png b/src/ExtCore.FileStorage.Dropbox/icon.png deleted file mode 100644 index 658aadfa4b42dc9573b7867b99b9d5a0ce54f25b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3149 zcmaJ@c|4SB8-8XGp$_Q`ZKr8uEoR0tjw#D9GnVX2Mu#$Hh8bfPGb2mMgM1*g2s`LHv^}WCMeV^rbUDtg-&wahm?>*$=WV1qktvmo= zg`F+lP0|XN9yzGw?cnn%OVX?n5J&=dPJkec%%cGumE%u?+p)-jG&dTV8WD1bwjBT| z1jBl^A(P-rw9gV9GD8DlW$t#AVr+5m}?+!#Hy5!M)kH86pHyAYCS zJZb>e4Nv?QOENM;&;(C&HuJdk_|(KletK=K5A)6-+_*f{~yX? z{Xp{tZnS^%{hz{oj|eUe=|vr&l)GdF7FQA(PvbH6(x^lphXwz-WGv(7 zxmf*F?;Dr;^IWWd%0)_&K`s^czY6_*O5&cS?ho5a20x5XV@ur5li2#cbK+e9?|r@LKAvjVr@J)_GdG{;$=lJP8>E_(9}=O|Zi3riHG^2KES=MlwCiFBj(*9W z5w%(w@0w>mGcW1y^ zwh9e#x$3UVWm$sMS@{)5Es?;(W=D6|OCeB-weLA%sSfB)4y3_4qLfgSPp3)O0!usB z%G^9Fl_{;g3bQV5dce>0e2~BN7r@mBGRn#G4=rjiCpIdAGUU^PA|6yMwT_(J98leP z)BRa63=+LUKiGAp@DTonQLEA~@z+!y41UyZX6}qT2^Etz1>0_gsq=85c3dSob{ zEdhLe!K&B0u(-M2}bCn<$* zDy>lNs%WOW%X}E@EkFk4w%owAho;|?3u22OqGEJ{-1D{0y_zLUy@P_--&bj~-1B|p zW}?C@@MHS+HAszR;%WmUH``OIR%m$oUUnwh;g}j`2`QDDYi%B*SViOEJ}})o zi&FZYhS_wrecsxIzQ0l>_Mvn|Rw$@EA;QZRnt;pf2=eaOg;Y_@sb$#uB=Nc8#AXs< z_Wh_nzI-)qk2pqzaX4KR{ah9z)UZ!F4etw5B_ub$%C)8kW|aJOw0Xs&^Y)#&((4rt zizZ$^MGz@st=FP}m{ly|+rr0kn;)59?Hu4H&+jCunJ)U)nD_UL?%n@rO2|O%z??35 zBo7hd5y}P(<xPMjsamw| zK2o{poo<=x0TUtzG!NYI@vPNJfVH(o=dZfC zttn?pjlJzZ;e8{xDfu(ASGAP5YyM{fuA0ySyx6yX)mkVM%XpYF@m05eo?M*+oQk$`-tX<=*${HZK~Cpr25{c38I$^ z_7!~*XWJarF1n$wQHBqn_FwmIeL_8fr?d8IRh0~|%otd>Ub64}F+(RTdsiJkdVT~d z7GCR#hmVYm9Q1vtU>3$<5Bp_JejI%cxrrMG*Yt0PtUt@^`4z%-2%&OgnH@~Rds8Mj zo`iy?IA~gTJZyO(dp3B_J%iyWJ!`a7iC^6Hndw^fqb=`(+|9OE-!v}#BW`2m3Fi#o zYD$HNF!TJg_I6h<-M;MfPpbPy^Rp^Z_g%wCx6m2CN%@%@D`Ya6)AYrtd5mw}CwKND zOuf{f3WO8*0Pl2%8Xp!ArSo4MW8np@m3t~WbsQB_AmD*)iR09>(QRRW)yZkrzwqs( zXm2-3E4C_E>I~Jm7aG@Xk!d4qx}^Kb}z3xYyri`KY{DzJ9yOMBU>tI1k7 za3HV?zB)A3BR(=-`c;EeP;dH_)0Wx1vmvq{3~WErsyD{gmfBs}Q0cC&21;(28*%@hj8&FnalR(h3u@XH}$0zTbXov;<$~k%!j_Z+S+hEaX~@C zv{qEeZ3DSaDSCP*g7t&G&_Bzs_N2yRnj()ZghNR z$H*9VYyo@GR{_8kW4GOkg~=^oJ?;-ffo)jW)wgZ_yDjFr_67zPXexBdfLAd>$eO7) z^DOxd5L8hiJ|@|tbRtn|!;G(;Zp#ZU}Ko;$KGmV{u0*U*No4j6228~b` z(UhgxnzHpl?-Ev8U}{C;N?6nAyWx3t&={oD-W{U}9Kop$X}>3T8=#7ysdt0TOXY1D QOF#H_1Sfo{m0!$%0K4WuRsaA1 diff --git a/src/ExtCore.FileStorage.FileSystem/icon.png b/src/ExtCore.FileStorage.FileSystem/icon.png deleted file mode 100644 index 658aadfa4b42dc9573b7867b99b9d5a0ce54f25b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3149 zcmaJ@c|4SB8-8XGp$_Q`ZKr8uEoR0tjw#D9GnVX2Mu#$Hh8bfPGb2mMgM1*g2s`LHv^}WCMeV^rbUDtg-&wahm?>*$=WV1qktvmo= zg`F+lP0|XN9yzGw?cnn%OVX?n5J&=dPJkec%%cGumE%u?+p)-jG&dTV8WD1bwjBT| z1jBl^A(P-rw9gV9GD8DlW$t#AVr+5m}?+!#Hy5!M)kH86pHyAYCS zJZb>e4Nv?QOENM;&;(C&HuJdk_|(KletK=K5A)6-+_*f{~yX? z{Xp{tZnS^%{hz{oj|eUe=|vr&l)GdF7FQA(PvbH6(x^lphXwz-WGv(7 zxmf*F?;Dr;^IWWd%0)_&K`s^czY6_*O5&cS?ho5a20x5XV@ur5li2#cbK+e9?|r@LKAvjVr@J)_GdG{;$=lJP8>E_(9}=O|Zi3riHG^2KES=MlwCiFBj(*9W z5w%(w@0w>mGcW1y^ zwh9e#x$3UVWm$sMS@{)5Es?;(W=D6|OCeB-weLA%sSfB)4y3_4qLfgSPp3)O0!usB z%G^9Fl_{;g3bQV5dce>0e2~BN7r@mBGRn#G4=rjiCpIdAGUU^PA|6yMwT_(J98leP z)BRa63=+LUKiGAp@DTonQLEA~@z+!y41UyZX6}qT2^Etz1>0_gsq=85c3dSob{ zEdhLe!K&B0u(-M2}bCn<$* zDy>lNs%WOW%X}E@EkFk4w%owAho;|?3u22OqGEJ{-1D{0y_zLUy@P_--&bj~-1B|p zW}?C@@MHS+HAszR;%WmUH``OIR%m$oUUnwh;g}j`2`QDDYi%B*SViOEJ}})o zi&FZYhS_wrecsxIzQ0l>_Mvn|Rw$@EA;QZRnt;pf2=eaOg;Y_@sb$#uB=Nc8#AXs< z_Wh_nzI-)qk2pqzaX4KR{ah9z)UZ!F4etw5B_ub$%C)8kW|aJOw0Xs&^Y)#&((4rt zizZ$^MGz@st=FP}m{ly|+rr0kn;)59?Hu4H&+jCunJ)U)nD_UL?%n@rO2|O%z??35 zBo7hd5y}P(<xPMjsamw| zK2o{poo<=x0TUtzG!NYI@vPNJfVH(o=dZfC zttn?pjlJzZ;e8{xDfu(ASGAP5YyM{fuA0ySyx6yX)mkVM%XpYF@m05eo?M*+oQk$`-tX<=*${HZK~Cpr25{c38I$^ z_7!~*XWJarF1n$wQHBqn_FwmIeL_8fr?d8IRh0~|%otd>Ub64}F+(RTdsiJkdVT~d z7GCR#hmVYm9Q1vtU>3$<5Bp_JejI%cxrrMG*Yt0PtUt@^`4z%-2%&OgnH@~Rds8Mj zo`iy?IA~gTJZyO(dp3B_J%iyWJ!`a7iC^6Hndw^fqb=`(+|9OE-!v}#BW`2m3Fi#o zYD$HNF!TJg_I6h<-M;MfPpbPy^Rp^Z_g%wCx6m2CN%@%@D`Ya6)AYrtd5mw}CwKND zOuf{f3WO8*0Pl2%8Xp!ArSo4MW8np@m3t~WbsQB_AmD*)iR09>(QRRW)yZkrzwqs( zXm2-3E4C_E>I~Jm7aG@Xk!d4qx}^Kb}z3xYyri`KY{DzJ9yOMBU>tI1k7 za3HV?zB)A3BR(=-`c;EeP;dH_)0Wx1vmvq{3~WErsyD{gmfBs}Q0cC&21;(28*%@hj8&FnalR(h3u@XH}$0zTbXov;<$~k%!j_Z+S+hEaX~@C zv{qEeZ3DSaDSCP*g7t&G&_Bzs_N2yRnj()ZghNR z$H*9VYyo@GR{_8kW4GOkg~=^oJ?;-ffo)jW)wgZ_yDjFr_67zPXexBdfLAd>$eO7) z^DOxd5L8hiJ|@|tbRtn|!;G(;Zp#ZU}Ko;$KGmV{u0*U*No4j6228~b` z(UhgxnzHpl?-Ev8U}{C;N?6nAyWx3t&={oD-W{U}9Kop$X}>3T8=#7ysdt0TOXY1D QOF#H_1Sfo{m0!$%0K4WuRsaA1 diff --git a/src/ExtCore.FileStorage/icon.png b/src/ExtCore.FileStorage/icon.png deleted file mode 100644 index 658aadfa4b42dc9573b7867b99b9d5a0ce54f25b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3149 zcmaJ@c|4SB8-8XGp$_Q`ZKr8uEoR0tjw#D9GnVX2Mu#$Hh8bfPGb2mMgM1*g2s`LHv^}WCMeV^rbUDtg-&wahm?>*$=WV1qktvmo= zg`F+lP0|XN9yzGw?cnn%OVX?n5J&=dPJkec%%cGumE%u?+p)-jG&dTV8WD1bwjBT| z1jBl^A(P-rw9gV9GD8DlW$t#AVr+5m}?+!#Hy5!M)kH86pHyAYCS zJZb>e4Nv?QOENM;&;(C&HuJdk_|(KletK=K5A)6-+_*f{~yX? z{Xp{tZnS^%{hz{oj|eUe=|vr&l)GdF7FQA(PvbH6(x^lphXwz-WGv(7 zxmf*F?;Dr;^IWWd%0)_&K`s^czY6_*O5&cS?ho5a20x5XV@ur5li2#cbK+e9?|r@LKAvjVr@J)_GdG{;$=lJP8>E_(9}=O|Zi3riHG^2KES=MlwCiFBj(*9W z5w%(w@0w>mGcW1y^ zwh9e#x$3UVWm$sMS@{)5Es?;(W=D6|OCeB-weLA%sSfB)4y3_4qLfgSPp3)O0!usB z%G^9Fl_{;g3bQV5dce>0e2~BN7r@mBGRn#G4=rjiCpIdAGUU^PA|6yMwT_(J98leP z)BRa63=+LUKiGAp@DTonQLEA~@z+!y41UyZX6}qT2^Etz1>0_gsq=85c3dSob{ zEdhLe!K&B0u(-M2}bCn<$* zDy>lNs%WOW%X}E@EkFk4w%owAho;|?3u22OqGEJ{-1D{0y_zLUy@P_--&bj~-1B|p zW}?C@@MHS+HAszR;%WmUH``OIR%m$oUUnwh;g}j`2`QDDYi%B*SViOEJ}})o zi&FZYhS_wrecsxIzQ0l>_Mvn|Rw$@EA;QZRnt;pf2=eaOg;Y_@sb$#uB=Nc8#AXs< z_Wh_nzI-)qk2pqzaX4KR{ah9z)UZ!F4etw5B_ub$%C)8kW|aJOw0Xs&^Y)#&((4rt zizZ$^MGz@st=FP}m{ly|+rr0kn;)59?Hu4H&+jCunJ)U)nD_UL?%n@rO2|O%z??35 zBo7hd5y}P(<xPMjsamw| zK2o{poo<=x0TUtzG!NYI@vPNJfVH(o=dZfC zttn?pjlJzZ;e8{xDfu(ASGAP5YyM{fuA0ySyx6yX)mkVM%XpYF@m05eo?M*+oQk$`-tX<=*${HZK~Cpr25{c38I$^ z_7!~*XWJarF1n$wQHBqn_FwmIeL_8fr?d8IRh0~|%otd>Ub64}F+(RTdsiJkdVT~d z7GCR#hmVYm9Q1vtU>3$<5Bp_JejI%cxrrMG*Yt0PtUt@^`4z%-2%&OgnH@~Rds8Mj zo`iy?IA~gTJZyO(dp3B_J%iyWJ!`a7iC^6Hndw^fqb=`(+|9OE-!v}#BW`2m3Fi#o zYD$HNF!TJg_I6h<-M;MfPpbPy^Rp^Z_g%wCx6m2CN%@%@D`Ya6)AYrtd5mw}CwKND zOuf{f3WO8*0Pl2%8Xp!ArSo4MW8np@m3t~WbsQB_AmD*)iR09>(QRRW)yZkrzwqs( zXm2-3E4C_E>I~Jm7aG@Xk!d4qx}^Kb}z3xYyri`KY{DzJ9yOMBU>tI1k7 za3HV?zB)A3BR(=-`c;EeP;dH_)0Wx1vmvq{3~WErsyD{gmfBs}Q0cC&21;(28*%@hj8&FnalR(h3u@XH}$0zTbXov;<$~k%!j_Z+S+hEaX~@C zv{qEeZ3DSaDSCP*g7t&G&_Bzs_N2yRnj()ZghNR z$H*9VYyo@GR{_8kW4GOkg~=^oJ?;-ffo)jW)wgZ_yDjFr_67zPXexBdfLAd>$eO7) z^DOxd5L8hiJ|@|tbRtn|!;G(;Zp#ZU}Ko;$KGmV{u0*U*No4j6228~b` z(UhgxnzHpl?-Ev8U}{C;N?6nAyWx3t&={oD-W{U}9Kop$X}>3T8=#7ysdt0TOXY1D QOF#H_1Sfo{m0!$%0K4WuRsaA1 diff --git a/src/ExtCore.Infrastructure/icon.png b/src/ExtCore.Infrastructure/icon.png deleted file mode 100644 index 658aadfa4b42dc9573b7867b99b9d5a0ce54f25b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3149 zcmaJ@c|4SB8-8XGp$_Q`ZKr8uEoR0tjw#D9GnVX2Mu#$Hh8bfPGb2mMgM1*g2s`LHv^}WCMeV^rbUDtg-&wahm?>*$=WV1qktvmo= zg`F+lP0|XN9yzGw?cnn%OVX?n5J&=dPJkec%%cGumE%u?+p)-jG&dTV8WD1bwjBT| z1jBl^A(P-rw9gV9GD8DlW$t#AVr+5m}?+!#Hy5!M)kH86pHyAYCS zJZb>e4Nv?QOENM;&;(C&HuJdk_|(KletK=K5A)6-+_*f{~yX? z{Xp{tZnS^%{hz{oj|eUe=|vr&l)GdF7FQA(PvbH6(x^lphXwz-WGv(7 zxmf*F?;Dr;^IWWd%0)_&K`s^czY6_*O5&cS?ho5a20x5XV@ur5li2#cbK+e9?|r@LKAvjVr@J)_GdG{;$=lJP8>E_(9}=O|Zi3riHG^2KES=MlwCiFBj(*9W z5w%(w@0w>mGcW1y^ zwh9e#x$3UVWm$sMS@{)5Es?;(W=D6|OCeB-weLA%sSfB)4y3_4qLfgSPp3)O0!usB z%G^9Fl_{;g3bQV5dce>0e2~BN7r@mBGRn#G4=rjiCpIdAGUU^PA|6yMwT_(J98leP z)BRa63=+LUKiGAp@DTonQLEA~@z+!y41UyZX6}qT2^Etz1>0_gsq=85c3dSob{ zEdhLe!K&B0u(-M2}bCn<$* zDy>lNs%WOW%X}E@EkFk4w%owAho;|?3u22OqGEJ{-1D{0y_zLUy@P_--&bj~-1B|p zW}?C@@MHS+HAszR;%WmUH``OIR%m$oUUnwh;g}j`2`QDDYi%B*SViOEJ}})o zi&FZYhS_wrecsxIzQ0l>_Mvn|Rw$@EA;QZRnt;pf2=eaOg;Y_@sb$#uB=Nc8#AXs< z_Wh_nzI-)qk2pqzaX4KR{ah9z)UZ!F4etw5B_ub$%C)8kW|aJOw0Xs&^Y)#&((4rt zizZ$^MGz@st=FP}m{ly|+rr0kn;)59?Hu4H&+jCunJ)U)nD_UL?%n@rO2|O%z??35 zBo7hd5y}P(<xPMjsamw| zK2o{poo<=x0TUtzG!NYI@vPNJfVH(o=dZfC zttn?pjlJzZ;e8{xDfu(ASGAP5YyM{fuA0ySyx6yX)mkVM%XpYF@m05eo?M*+oQk$`-tX<=*${HZK~Cpr25{c38I$^ z_7!~*XWJarF1n$wQHBqn_FwmIeL_8fr?d8IRh0~|%otd>Ub64}F+(RTdsiJkdVT~d z7GCR#hmVYm9Q1vtU>3$<5Bp_JejI%cxrrMG*Yt0PtUt@^`4z%-2%&OgnH@~Rds8Mj zo`iy?IA~gTJZyO(dp3B_J%iyWJ!`a7iC^6Hndw^fqb=`(+|9OE-!v}#BW`2m3Fi#o zYD$HNF!TJg_I6h<-M;MfPpbPy^Rp^Z_g%wCx6m2CN%@%@D`Ya6)AYrtd5mw}CwKND zOuf{f3WO8*0Pl2%8Xp!ArSo4MW8np@m3t~WbsQB_AmD*)iR09>(QRRW)yZkrzwqs( zXm2-3E4C_E>I~Jm7aG@Xk!d4qx}^Kb}z3xYyri`KY{DzJ9yOMBU>tI1k7 za3HV?zB)A3BR(=-`c;EeP;dH_)0Wx1vmvq{3~WErsyD{gmfBs}Q0cC&21;(28*%@hj8&FnalR(h3u@XH}$0zTbXov;<$~k%!j_Z+S+hEaX~@C zv{qEeZ3DSaDSCP*g7t&G&_Bzs_N2yRnj()ZghNR z$H*9VYyo@GR{_8kW4GOkg~=^oJ?;-ffo)jW)wgZ_yDjFr_67zPXexBdfLAd>$eO7) z^DOxd5L8hiJ|@|tbRtn|!;G(;Zp#ZU}Ko;$KGmV{u0*U*No4j6228~b` z(UhgxnzHpl?-Ev8U}{C;N?6nAyWx3t&={oD-W{U}9Kop$X}>3T8=#7ysdt0TOXY1D QOF#H_1Sfo{m0!$%0K4WuRsaA1 diff --git a/src/ExtCore.Mvc.Infrastructure/icon.png b/src/ExtCore.Mvc.Infrastructure/icon.png deleted file mode 100644 index 658aadfa4b42dc9573b7867b99b9d5a0ce54f25b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3149 zcmaJ@c|4SB8-8XGp$_Q`ZKr8uEoR0tjw#D9GnVX2Mu#$Hh8bfPGb2mMgM1*g2s`LHv^}WCMeV^rbUDtg-&wahm?>*$=WV1qktvmo= zg`F+lP0|XN9yzGw?cnn%OVX?n5J&=dPJkec%%cGumE%u?+p)-jG&dTV8WD1bwjBT| z1jBl^A(P-rw9gV9GD8DlW$t#AVr+5m}?+!#Hy5!M)kH86pHyAYCS zJZb>e4Nv?QOENM;&;(C&HuJdk_|(KletK=K5A)6-+_*f{~yX? z{Xp{tZnS^%{hz{oj|eUe=|vr&l)GdF7FQA(PvbH6(x^lphXwz-WGv(7 zxmf*F?;Dr;^IWWd%0)_&K`s^czY6_*O5&cS?ho5a20x5XV@ur5li2#cbK+e9?|r@LKAvjVr@J)_GdG{;$=lJP8>E_(9}=O|Zi3riHG^2KES=MlwCiFBj(*9W z5w%(w@0w>mGcW1y^ zwh9e#x$3UVWm$sMS@{)5Es?;(W=D6|OCeB-weLA%sSfB)4y3_4qLfgSPp3)O0!usB z%G^9Fl_{;g3bQV5dce>0e2~BN7r@mBGRn#G4=rjiCpIdAGUU^PA|6yMwT_(J98leP z)BRa63=+LUKiGAp@DTonQLEA~@z+!y41UyZX6}qT2^Etz1>0_gsq=85c3dSob{ zEdhLe!K&B0u(-M2}bCn<$* zDy>lNs%WOW%X}E@EkFk4w%owAho;|?3u22OqGEJ{-1D{0y_zLUy@P_--&bj~-1B|p zW}?C@@MHS+HAszR;%WmUH``OIR%m$oUUnwh;g}j`2`QDDYi%B*SViOEJ}})o zi&FZYhS_wrecsxIzQ0l>_Mvn|Rw$@EA;QZRnt;pf2=eaOg;Y_@sb$#uB=Nc8#AXs< z_Wh_nzI-)qk2pqzaX4KR{ah9z)UZ!F4etw5B_ub$%C)8kW|aJOw0Xs&^Y)#&((4rt zizZ$^MGz@st=FP}m{ly|+rr0kn;)59?Hu4H&+jCunJ)U)nD_UL?%n@rO2|O%z??35 zBo7hd5y}P(<xPMjsamw| zK2o{poo<=x0TUtzG!NYI@vPNJfVH(o=dZfC zttn?pjlJzZ;e8{xDfu(ASGAP5YyM{fuA0ySyx6yX)mkVM%XpYF@m05eo?M*+oQk$`-tX<=*${HZK~Cpr25{c38I$^ z_7!~*XWJarF1n$wQHBqn_FwmIeL_8fr?d8IRh0~|%otd>Ub64}F+(RTdsiJkdVT~d z7GCR#hmVYm9Q1vtU>3$<5Bp_JejI%cxrrMG*Yt0PtUt@^`4z%-2%&OgnH@~Rds8Mj zo`iy?IA~gTJZyO(dp3B_J%iyWJ!`a7iC^6Hndw^fqb=`(+|9OE-!v}#BW`2m3Fi#o zYD$HNF!TJg_I6h<-M;MfPpbPy^Rp^Z_g%wCx6m2CN%@%@D`Ya6)AYrtd5mw}CwKND zOuf{f3WO8*0Pl2%8Xp!ArSo4MW8np@m3t~WbsQB_AmD*)iR09>(QRRW)yZkrzwqs( zXm2-3E4C_E>I~Jm7aG@Xk!d4qx}^Kb}z3xYyri`KY{DzJ9yOMBU>tI1k7 za3HV?zB)A3BR(=-`c;EeP;dH_)0Wx1vmvq{3~WErsyD{gmfBs}Q0cC&21;(28*%@hj8&FnalR(h3u@XH}$0zTbXov;<$~k%!j_Z+S+hEaX~@C zv{qEeZ3DSaDSCP*g7t&G&_Bzs_N2yRnj()ZghNR z$H*9VYyo@GR{_8kW4GOkg~=^oJ?;-ffo)jW)wgZ_yDjFr_67zPXexBdfLAd>$eO7) z^DOxd5L8hiJ|@|tbRtn|!;G(;Zp#ZU}Ko;$KGmV{u0*U*No4j6228~b` z(UhgxnzHpl?-Ev8U}{C;N?6nAyWx3t&={oD-W{U}9Kop$X}>3T8=#7ysdt0TOXY1D QOF#H_1Sfo{m0!$%0K4WuRsaA1 diff --git a/src/ExtCore.Mvc/icon.png b/src/ExtCore.Mvc/icon.png deleted file mode 100644 index 658aadfa4b42dc9573b7867b99b9d5a0ce54f25b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3149 zcmaJ@c|4SB8-8XGp$_Q`ZKr8uEoR0tjw#D9GnVX2Mu#$Hh8bfPGb2mMgM1*g2s`LHv^}WCMeV^rbUDtg-&wahm?>*$=WV1qktvmo= zg`F+lP0|XN9yzGw?cnn%OVX?n5J&=dPJkec%%cGumE%u?+p)-jG&dTV8WD1bwjBT| z1jBl^A(P-rw9gV9GD8DlW$t#AVr+5m}?+!#Hy5!M)kH86pHyAYCS zJZb>e4Nv?QOENM;&;(C&HuJdk_|(KletK=K5A)6-+_*f{~yX? z{Xp{tZnS^%{hz{oj|eUe=|vr&l)GdF7FQA(PvbH6(x^lphXwz-WGv(7 zxmf*F?;Dr;^IWWd%0)_&K`s^czY6_*O5&cS?ho5a20x5XV@ur5li2#cbK+e9?|r@LKAvjVr@J)_GdG{;$=lJP8>E_(9}=O|Zi3riHG^2KES=MlwCiFBj(*9W z5w%(w@0w>mGcW1y^ zwh9e#x$3UVWm$sMS@{)5Es?;(W=D6|OCeB-weLA%sSfB)4y3_4qLfgSPp3)O0!usB z%G^9Fl_{;g3bQV5dce>0e2~BN7r@mBGRn#G4=rjiCpIdAGUU^PA|6yMwT_(J98leP z)BRa63=+LUKiGAp@DTonQLEA~@z+!y41UyZX6}qT2^Etz1>0_gsq=85c3dSob{ zEdhLe!K&B0u(-M2}bCn<$* zDy>lNs%WOW%X}E@EkFk4w%owAho;|?3u22OqGEJ{-1D{0y_zLUy@P_--&bj~-1B|p zW}?C@@MHS+HAszR;%WmUH``OIR%m$oUUnwh;g}j`2`QDDYi%B*SViOEJ}})o zi&FZYhS_wrecsxIzQ0l>_Mvn|Rw$@EA;QZRnt;pf2=eaOg;Y_@sb$#uB=Nc8#AXs< z_Wh_nzI-)qk2pqzaX4KR{ah9z)UZ!F4etw5B_ub$%C)8kW|aJOw0Xs&^Y)#&((4rt zizZ$^MGz@st=FP}m{ly|+rr0kn;)59?Hu4H&+jCunJ)U)nD_UL?%n@rO2|O%z??35 zBo7hd5y}P(<xPMjsamw| zK2o{poo<=x0TUtzG!NYI@vPNJfVH(o=dZfC zttn?pjlJzZ;e8{xDfu(ASGAP5YyM{fuA0ySyx6yX)mkVM%XpYF@m05eo?M*+oQk$`-tX<=*${HZK~Cpr25{c38I$^ z_7!~*XWJarF1n$wQHBqn_FwmIeL_8fr?d8IRh0~|%otd>Ub64}F+(RTdsiJkdVT~d z7GCR#hmVYm9Q1vtU>3$<5Bp_JejI%cxrrMG*Yt0PtUt@^`4z%-2%&OgnH@~Rds8Mj zo`iy?IA~gTJZyO(dp3B_J%iyWJ!`a7iC^6Hndw^fqb=`(+|9OE-!v}#BW`2m3Fi#o zYD$HNF!TJg_I6h<-M;MfPpbPy^Rp^Z_g%wCx6m2CN%@%@D`Ya6)AYrtd5mw}CwKND zOuf{f3WO8*0Pl2%8Xp!ArSo4MW8np@m3t~WbsQB_AmD*)iR09>(QRRW)yZkrzwqs( zXm2-3E4C_E>I~Jm7aG@Xk!d4qx}^Kb}z3xYyri`KY{DzJ9yOMBU>tI1k7 za3HV?zB)A3BR(=-`c;EeP;dH_)0Wx1vmvq{3~WErsyD{gmfBs}Q0cC&21;(28*%@hj8&FnalR(h3u@XH}$0zTbXov;<$~k%!j_Z+S+hEaX~@C zv{qEeZ3DSaDSCP*g7t&G&_Bzs_N2yRnj()ZghNR z$H*9VYyo@GR{_8kW4GOkg~=^oJ?;-ffo)jW)wgZ_yDjFr_67zPXexBdfLAd>$eO7) z^DOxd5L8hiJ|@|tbRtn|!;G(;Zp#ZU}Ko;$KGmV{u0*U*No4j6228~b` z(UhgxnzHpl?-Ev8U}{C;N?6nAyWx3t&={oD-W{U}9Kop$X}>3T8=#7ysdt0TOXY1D QOF#H_1Sfo{m0!$%0K4WuRsaA1 diff --git a/src/ExtCore.WebApplication/icon.png b/src/ExtCore.WebApplication/icon.png deleted file mode 100644 index 658aadfa4b42dc9573b7867b99b9d5a0ce54f25b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3149 zcmaJ@c|4SB8-8XGp$_Q`ZKr8uEoR0tjw#D9GnVX2Mu#$Hh8bfPGb2mMgM1*g2s`LHv^}WCMeV^rbUDtg-&wahm?>*$=WV1qktvmo= zg`F+lP0|XN9yzGw?cnn%OVX?n5J&=dPJkec%%cGumE%u?+p)-jG&dTV8WD1bwjBT| z1jBl^A(P-rw9gV9GD8DlW$t#AVr+5m}?+!#Hy5!M)kH86pHyAYCS zJZb>e4Nv?QOENM;&;(C&HuJdk_|(KletK=K5A)6-+_*f{~yX? z{Xp{tZnS^%{hz{oj|eUe=|vr&l)GdF7FQA(PvbH6(x^lphXwz-WGv(7 zxmf*F?;Dr;^IWWd%0)_&K`s^czY6_*O5&cS?ho5a20x5XV@ur5li2#cbK+e9?|r@LKAvjVr@J)_GdG{;$=lJP8>E_(9}=O|Zi3riHG^2KES=MlwCiFBj(*9W z5w%(w@0w>mGcW1y^ zwh9e#x$3UVWm$sMS@{)5Es?;(W=D6|OCeB-weLA%sSfB)4y3_4qLfgSPp3)O0!usB z%G^9Fl_{;g3bQV5dce>0e2~BN7r@mBGRn#G4=rjiCpIdAGUU^PA|6yMwT_(J98leP z)BRa63=+LUKiGAp@DTonQLEA~@z+!y41UyZX6}qT2^Etz1>0_gsq=85c3dSob{ zEdhLe!K&B0u(-M2}bCn<$* zDy>lNs%WOW%X}E@EkFk4w%owAho;|?3u22OqGEJ{-1D{0y_zLUy@P_--&bj~-1B|p zW}?C@@MHS+HAszR;%WmUH``OIR%m$oUUnwh;g}j`2`QDDYi%B*SViOEJ}})o zi&FZYhS_wrecsxIzQ0l>_Mvn|Rw$@EA;QZRnt;pf2=eaOg;Y_@sb$#uB=Nc8#AXs< z_Wh_nzI-)qk2pqzaX4KR{ah9z)UZ!F4etw5B_ub$%C)8kW|aJOw0Xs&^Y)#&((4rt zizZ$^MGz@st=FP}m{ly|+rr0kn;)59?Hu4H&+jCunJ)U)nD_UL?%n@rO2|O%z??35 zBo7hd5y}P(<xPMjsamw| zK2o{poo<=x0TUtzG!NYI@vPNJfVH(o=dZfC zttn?pjlJzZ;e8{xDfu(ASGAP5YyM{fuA0ySyx6yX)mkVM%XpYF@m05eo?M*+oQk$`-tX<=*${HZK~Cpr25{c38I$^ z_7!~*XWJarF1n$wQHBqn_FwmIeL_8fr?d8IRh0~|%otd>Ub64}F+(RTdsiJkdVT~d z7GCR#hmVYm9Q1vtU>3$<5Bp_JejI%cxrrMG*Yt0PtUt@^`4z%-2%&OgnH@~Rds8Mj zo`iy?IA~gTJZyO(dp3B_J%iyWJ!`a7iC^6Hndw^fqb=`(+|9OE-!v}#BW`2m3Fi#o zYD$HNF!TJg_I6h<-M;MfPpbPy^Rp^Z_g%wCx6m2CN%@%@D`Ya6)AYrtd5mw}CwKND zOuf{f3WO8*0Pl2%8Xp!ArSo4MW8np@m3t~WbsQB_AmD*)iR09>(QRRW)yZkrzwqs( zXm2-3E4C_E>I~Jm7aG@Xk!d4qx}^Kb}z3xYyri`KY{DzJ9yOMBU>tI1k7 za3HV?zB)A3BR(=-`c;EeP;dH_)0Wx1vmvq{3~WErsyD{gmfBs}Q0cC&21;(28*%@hj8&FnalR(h3u@XH}$0zTbXov;<$~k%!j_Z+S+hEaX~@C zv{qEeZ3DSaDSCP*g7t&G&_Bzs_N2yRnj()ZghNR z$H*9VYyo@GR{_8kW4GOkg~=^oJ?;-ffo)jW)wgZ_yDjFr_67zPXexBdfLAd>$eO7) z^DOxd5L8hiJ|@|tbRtn|!;G(;Zp#ZU}Ko;$KGmV{u0*U*No4j6228~b` z(UhgxnzHpl?-Ev8U}{C;N?6nAyWx3t&={oD-W{U}9Kop$X}>3T8=#7ysdt0TOXY1D QOF#H_1Sfo{m0!$%0K4WuRsaA1 From 9e47f8038da2fb2c7ba5f7b1cc1ad6f0a0821651 Mon Sep 17 00:00:00 2001 From: iyilm4z Date: Fri, 23 Dec 2022 20:58:54 +0300 Subject: [PATCH 73/81] Add repository props & modify some props --- common.props | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/common.props b/common.props index f7351b6..8ffe6ba 100644 --- a/common.props +++ b/common.props @@ -4,10 +4,12 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky 8.1.0 - 8.0 + latest https://extcore.net/images/extcore_framework_logo_s.png - https://extcore.net/ + https://extcore.net Apache-2.0 + git + https://github.com/ExtCore/ExtCore \ No newline at end of file From ee5393adfb359aa8a68ded6a4311e967db722390 Mon Sep 17 00:00:00 2001 From: iyilm4z Date: Fri, 23 Dec 2022 21:09:28 +0300 Subject: [PATCH 74/81] Use Source Link --- common.props | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/common.props b/common.props index 8ffe6ba..24c1520 100644 --- a/common.props +++ b/common.props @@ -10,6 +10,16 @@ Apache-2.0 git https://github.com/ExtCore/ExtCore + + + $(AllowedOutputExtensionsInPackageBuildOutputFolder);.pdb + + + all + runtime; build; native; contentfiles; analyzers + + + \ No newline at end of file From f46d29a9b013b446ae67e3115a7cfbdab22e58f0 Mon Sep 17 00:00:00 2001 From: iyilm4z Date: Mon, 26 Dec 2022 11:49:36 +0300 Subject: [PATCH 75/81] Revert "Use Source Link" This reverts commit ee5393adfb359aa8a68ded6a4311e967db722390. --- common.props | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/common.props b/common.props index 24c1520..8ffe6ba 100644 --- a/common.props +++ b/common.props @@ -10,16 +10,6 @@ Apache-2.0 git https://github.com/ExtCore/ExtCore - - - $(AllowedOutputExtensionsInPackageBuildOutputFolder);.pdb - - - all - runtime; build; native; contentfiles; analyzers - - - \ No newline at end of file From 2b8bf74de0e922593189cb223c39e68fce056882 Mon Sep 17 00:00:00 2001 From: iyilm4z Date: Mon, 26 Dec 2022 11:50:22 +0300 Subject: [PATCH 76/81] Revert "Add repository props & modify some props" This reverts commit 9e47f8038da2fb2c7ba5f7b1cc1ad6f0a0821651. --- common.props | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/common.props b/common.props index 8ffe6ba..f7351b6 100644 --- a/common.props +++ b/common.props @@ -4,12 +4,10 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky 8.1.0 - latest + 8.0 https://extcore.net/images/extcore_framework_logo_s.png - https://extcore.net + https://extcore.net/ Apache-2.0 - git - https://github.com/ExtCore/ExtCore \ No newline at end of file From 3e122c5dde06d409533e0d775a2b16c7b80c76b6 Mon Sep 17 00:00:00 2001 From: iyilm4z Date: Mon, 26 Dec 2022 11:50:41 +0300 Subject: [PATCH 77/81] Revert "Use PackageIconUrl instead of PackageIcon" This reverts commit 8ae20a1bce59bdd9260df73eb853322afa2fad3d. --- common.props | 6 +++++- src/ExtCore.Data.Abstractions/icon.png | Bin 0 -> 3149 bytes src/ExtCore.Data.Dapper.MySql/icon.png | Bin 0 -> 3149 bytes src/ExtCore.Data.Dapper.PostgreSql/icon.png | Bin 0 -> 3149 bytes src/ExtCore.Data.Dapper.SqlServer/icon.png | Bin 0 -> 3149 bytes src/ExtCore.Data.Dapper.Sqlite/icon.png | Bin 0 -> 3149 bytes src/ExtCore.Data.Dapper/icon.png | Bin 0 -> 3149 bytes src/ExtCore.Data.Entities.Abstractions/icon.png | Bin 0 -> 3149 bytes src/ExtCore.Data.EntityFramework.MySql/icon.png | Bin 0 -> 3149 bytes .../icon.png | Bin 0 -> 3149 bytes .../icon.png | Bin 0 -> 3149 bytes src/ExtCore.Data.EntityFramework.Sqlite/icon.png | Bin 0 -> 3149 bytes src/ExtCore.Data.EntityFramework/icon.png | Bin 0 -> 3149 bytes src/ExtCore.Data/icon.png | Bin 0 -> 3149 bytes src/ExtCore.Events/icon.png | Bin 0 -> 3149 bytes src/ExtCore.FileStorage.Abstractions/icon.png | Bin 0 -> 3149 bytes src/ExtCore.FileStorage.Azure/icon.png | Bin 0 -> 3149 bytes src/ExtCore.FileStorage.Dropbox/icon.png | Bin 0 -> 3149 bytes src/ExtCore.FileStorage.FileSystem/icon.png | Bin 0 -> 3149 bytes src/ExtCore.FileStorage/icon.png | Bin 0 -> 3149 bytes src/ExtCore.Infrastructure/icon.png | Bin 0 -> 3149 bytes src/ExtCore.Mvc.Infrastructure/icon.png | Bin 0 -> 3149 bytes src/ExtCore.Mvc/icon.png | Bin 0 -> 3149 bytes src/ExtCore.WebApplication/icon.png | Bin 0 -> 3149 bytes 24 files changed, 5 insertions(+), 1 deletion(-) create mode 100644 src/ExtCore.Data.Abstractions/icon.png create mode 100644 src/ExtCore.Data.Dapper.MySql/icon.png create mode 100644 src/ExtCore.Data.Dapper.PostgreSql/icon.png create mode 100644 src/ExtCore.Data.Dapper.SqlServer/icon.png create mode 100644 src/ExtCore.Data.Dapper.Sqlite/icon.png create mode 100644 src/ExtCore.Data.Dapper/icon.png create mode 100644 src/ExtCore.Data.Entities.Abstractions/icon.png create mode 100644 src/ExtCore.Data.EntityFramework.MySql/icon.png create mode 100644 src/ExtCore.Data.EntityFramework.PostgreSql/icon.png create mode 100644 src/ExtCore.Data.EntityFramework.SqlServer/icon.png create mode 100644 src/ExtCore.Data.EntityFramework.Sqlite/icon.png create mode 100644 src/ExtCore.Data.EntityFramework/icon.png create mode 100644 src/ExtCore.Data/icon.png create mode 100644 src/ExtCore.Events/icon.png create mode 100644 src/ExtCore.FileStorage.Abstractions/icon.png create mode 100644 src/ExtCore.FileStorage.Azure/icon.png create mode 100644 src/ExtCore.FileStorage.Dropbox/icon.png create mode 100644 src/ExtCore.FileStorage.FileSystem/icon.png create mode 100644 src/ExtCore.FileStorage/icon.png create mode 100644 src/ExtCore.Infrastructure/icon.png create mode 100644 src/ExtCore.Mvc.Infrastructure/icon.png create mode 100644 src/ExtCore.Mvc/icon.png create mode 100644 src/ExtCore.WebApplication/icon.png diff --git a/common.props b/common.props index f7351b6..8e498ed 100644 --- a/common.props +++ b/common.props @@ -5,9 +5,13 @@ Copyright © 2015 Dmitry Sikorsky 8.1.0 8.0 - https://extcore.net/images/extcore_framework_logo_s.png + icon.png https://extcore.net/ Apache-2.0 + + + + \ No newline at end of file diff --git a/src/ExtCore.Data.Abstractions/icon.png b/src/ExtCore.Data.Abstractions/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..658aadfa4b42dc9573b7867b99b9d5a0ce54f25b GIT binary patch literal 3149 zcmaJ@c|4SB8-8XGp$_Q`ZKr8uEoR0tjw#D9GnVX2Mu#$Hh8bfPGb2mMgM1*g2s`LHv^}WCMeV^rbUDtg-&wahm?>*$=WV1qktvmo= zg`F+lP0|XN9yzGw?cnn%OVX?n5J&=dPJkec%%cGumE%u?+p)-jG&dTV8WD1bwjBT| z1jBl^A(P-rw9gV9GD8DlW$t#AVr+5m}?+!#Hy5!M)kH86pHyAYCS zJZb>e4Nv?QOENM;&;(C&HuJdk_|(KletK=K5A)6-+_*f{~yX? z{Xp{tZnS^%{hz{oj|eUe=|vr&l)GdF7FQA(PvbH6(x^lphXwz-WGv(7 zxmf*F?;Dr;^IWWd%0)_&K`s^czY6_*O5&cS?ho5a20x5XV@ur5li2#cbK+e9?|r@LKAvjVr@J)_GdG{;$=lJP8>E_(9}=O|Zi3riHG^2KES=MlwCiFBj(*9W z5w%(w@0w>mGcW1y^ zwh9e#x$3UVWm$sMS@{)5Es?;(W=D6|OCeB-weLA%sSfB)4y3_4qLfgSPp3)O0!usB z%G^9Fl_{;g3bQV5dce>0e2~BN7r@mBGRn#G4=rjiCpIdAGUU^PA|6yMwT_(J98leP z)BRa63=+LUKiGAp@DTonQLEA~@z+!y41UyZX6}qT2^Etz1>0_gsq=85c3dSob{ zEdhLe!K&B0u(-M2}bCn<$* zDy>lNs%WOW%X}E@EkFk4w%owAho;|?3u22OqGEJ{-1D{0y_zLUy@P_--&bj~-1B|p zW}?C@@MHS+HAszR;%WmUH``OIR%m$oUUnwh;g}j`2`QDDYi%B*SViOEJ}})o zi&FZYhS_wrecsxIzQ0l>_Mvn|Rw$@EA;QZRnt;pf2=eaOg;Y_@sb$#uB=Nc8#AXs< z_Wh_nzI-)qk2pqzaX4KR{ah9z)UZ!F4etw5B_ub$%C)8kW|aJOw0Xs&^Y)#&((4rt zizZ$^MGz@st=FP}m{ly|+rr0kn;)59?Hu4H&+jCunJ)U)nD_UL?%n@rO2|O%z??35 zBo7hd5y}P(<xPMjsamw| zK2o{poo<=x0TUtzG!NYI@vPNJfVH(o=dZfC zttn?pjlJzZ;e8{xDfu(ASGAP5YyM{fuA0ySyx6yX)mkVM%XpYF@m05eo?M*+oQk$`-tX<=*${HZK~Cpr25{c38I$^ z_7!~*XWJarF1n$wQHBqn_FwmIeL_8fr?d8IRh0~|%otd>Ub64}F+(RTdsiJkdVT~d z7GCR#hmVYm9Q1vtU>3$<5Bp_JejI%cxrrMG*Yt0PtUt@^`4z%-2%&OgnH@~Rds8Mj zo`iy?IA~gTJZyO(dp3B_J%iyWJ!`a7iC^6Hndw^fqb=`(+|9OE-!v}#BW`2m3Fi#o zYD$HNF!TJg_I6h<-M;MfPpbPy^Rp^Z_g%wCx6m2CN%@%@D`Ya6)AYrtd5mw}CwKND zOuf{f3WO8*0Pl2%8Xp!ArSo4MW8np@m3t~WbsQB_AmD*)iR09>(QRRW)yZkrzwqs( zXm2-3E4C_E>I~Jm7aG@Xk!d4qx}^Kb}z3xYyri`KY{DzJ9yOMBU>tI1k7 za3HV?zB)A3BR(=-`c;EeP;dH_)0Wx1vmvq{3~WErsyD{gmfBs}Q0cC&21;(28*%@hj8&FnalR(h3u@XH}$0zTbXov;<$~k%!j_Z+S+hEaX~@C zv{qEeZ3DSaDSCP*g7t&G&_Bzs_N2yRnj()ZghNR z$H*9VYyo@GR{_8kW4GOkg~=^oJ?;-ffo)jW)wgZ_yDjFr_67zPXexBdfLAd>$eO7) z^DOxd5L8hiJ|@|tbRtn|!;G(;Zp#ZU}Ko;$KGmV{u0*U*No4j6228~b` z(UhgxnzHpl?-Ev8U}{C;N?6nAyWx3t&={oD-W{U}9Kop$X}>3T8=#7ysdt0TOXY1D QOF#H_1Sfo{m0!$%0K4WuRsaA1 literal 0 HcmV?d00001 diff --git a/src/ExtCore.Data.Dapper.MySql/icon.png b/src/ExtCore.Data.Dapper.MySql/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..658aadfa4b42dc9573b7867b99b9d5a0ce54f25b GIT binary patch literal 3149 zcmaJ@c|4SB8-8XGp$_Q`ZKr8uEoR0tjw#D9GnVX2Mu#$Hh8bfPGb2mMgM1*g2s`LHv^}WCMeV^rbUDtg-&wahm?>*$=WV1qktvmo= zg`F+lP0|XN9yzGw?cnn%OVX?n5J&=dPJkec%%cGumE%u?+p)-jG&dTV8WD1bwjBT| z1jBl^A(P-rw9gV9GD8DlW$t#AVr+5m}?+!#Hy5!M)kH86pHyAYCS zJZb>e4Nv?QOENM;&;(C&HuJdk_|(KletK=K5A)6-+_*f{~yX? z{Xp{tZnS^%{hz{oj|eUe=|vr&l)GdF7FQA(PvbH6(x^lphXwz-WGv(7 zxmf*F?;Dr;^IWWd%0)_&K`s^czY6_*O5&cS?ho5a20x5XV@ur5li2#cbK+e9?|r@LKAvjVr@J)_GdG{;$=lJP8>E_(9}=O|Zi3riHG^2KES=MlwCiFBj(*9W z5w%(w@0w>mGcW1y^ zwh9e#x$3UVWm$sMS@{)5Es?;(W=D6|OCeB-weLA%sSfB)4y3_4qLfgSPp3)O0!usB z%G^9Fl_{;g3bQV5dce>0e2~BN7r@mBGRn#G4=rjiCpIdAGUU^PA|6yMwT_(J98leP z)BRa63=+LUKiGAp@DTonQLEA~@z+!y41UyZX6}qT2^Etz1>0_gsq=85c3dSob{ zEdhLe!K&B0u(-M2}bCn<$* zDy>lNs%WOW%X}E@EkFk4w%owAho;|?3u22OqGEJ{-1D{0y_zLUy@P_--&bj~-1B|p zW}?C@@MHS+HAszR;%WmUH``OIR%m$oUUnwh;g}j`2`QDDYi%B*SViOEJ}})o zi&FZYhS_wrecsxIzQ0l>_Mvn|Rw$@EA;QZRnt;pf2=eaOg;Y_@sb$#uB=Nc8#AXs< z_Wh_nzI-)qk2pqzaX4KR{ah9z)UZ!F4etw5B_ub$%C)8kW|aJOw0Xs&^Y)#&((4rt zizZ$^MGz@st=FP}m{ly|+rr0kn;)59?Hu4H&+jCunJ)U)nD_UL?%n@rO2|O%z??35 zBo7hd5y}P(<xPMjsamw| zK2o{poo<=x0TUtzG!NYI@vPNJfVH(o=dZfC zttn?pjlJzZ;e8{xDfu(ASGAP5YyM{fuA0ySyx6yX)mkVM%XpYF@m05eo?M*+oQk$`-tX<=*${HZK~Cpr25{c38I$^ z_7!~*XWJarF1n$wQHBqn_FwmIeL_8fr?d8IRh0~|%otd>Ub64}F+(RTdsiJkdVT~d z7GCR#hmVYm9Q1vtU>3$<5Bp_JejI%cxrrMG*Yt0PtUt@^`4z%-2%&OgnH@~Rds8Mj zo`iy?IA~gTJZyO(dp3B_J%iyWJ!`a7iC^6Hndw^fqb=`(+|9OE-!v}#BW`2m3Fi#o zYD$HNF!TJg_I6h<-M;MfPpbPy^Rp^Z_g%wCx6m2CN%@%@D`Ya6)AYrtd5mw}CwKND zOuf{f3WO8*0Pl2%8Xp!ArSo4MW8np@m3t~WbsQB_AmD*)iR09>(QRRW)yZkrzwqs( zXm2-3E4C_E>I~Jm7aG@Xk!d4qx}^Kb}z3xYyri`KY{DzJ9yOMBU>tI1k7 za3HV?zB)A3BR(=-`c;EeP;dH_)0Wx1vmvq{3~WErsyD{gmfBs}Q0cC&21;(28*%@hj8&FnalR(h3u@XH}$0zTbXov;<$~k%!j_Z+S+hEaX~@C zv{qEeZ3DSaDSCP*g7t&G&_Bzs_N2yRnj()ZghNR z$H*9VYyo@GR{_8kW4GOkg~=^oJ?;-ffo)jW)wgZ_yDjFr_67zPXexBdfLAd>$eO7) z^DOxd5L8hiJ|@|tbRtn|!;G(;Zp#ZU}Ko;$KGmV{u0*U*No4j6228~b` z(UhgxnzHpl?-Ev8U}{C;N?6nAyWx3t&={oD-W{U}9Kop$X}>3T8=#7ysdt0TOXY1D QOF#H_1Sfo{m0!$%0K4WuRsaA1 literal 0 HcmV?d00001 diff --git a/src/ExtCore.Data.Dapper.PostgreSql/icon.png b/src/ExtCore.Data.Dapper.PostgreSql/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..658aadfa4b42dc9573b7867b99b9d5a0ce54f25b GIT binary patch literal 3149 zcmaJ@c|4SB8-8XGp$_Q`ZKr8uEoR0tjw#D9GnVX2Mu#$Hh8bfPGb2mMgM1*g2s`LHv^}WCMeV^rbUDtg-&wahm?>*$=WV1qktvmo= zg`F+lP0|XN9yzGw?cnn%OVX?n5J&=dPJkec%%cGumE%u?+p)-jG&dTV8WD1bwjBT| z1jBl^A(P-rw9gV9GD8DlW$t#AVr+5m}?+!#Hy5!M)kH86pHyAYCS zJZb>e4Nv?QOENM;&;(C&HuJdk_|(KletK=K5A)6-+_*f{~yX? z{Xp{tZnS^%{hz{oj|eUe=|vr&l)GdF7FQA(PvbH6(x^lphXwz-WGv(7 zxmf*F?;Dr;^IWWd%0)_&K`s^czY6_*O5&cS?ho5a20x5XV@ur5li2#cbK+e9?|r@LKAvjVr@J)_GdG{;$=lJP8>E_(9}=O|Zi3riHG^2KES=MlwCiFBj(*9W z5w%(w@0w>mGcW1y^ zwh9e#x$3UVWm$sMS@{)5Es?;(W=D6|OCeB-weLA%sSfB)4y3_4qLfgSPp3)O0!usB z%G^9Fl_{;g3bQV5dce>0e2~BN7r@mBGRn#G4=rjiCpIdAGUU^PA|6yMwT_(J98leP z)BRa63=+LUKiGAp@DTonQLEA~@z+!y41UyZX6}qT2^Etz1>0_gsq=85c3dSob{ zEdhLe!K&B0u(-M2}bCn<$* zDy>lNs%WOW%X}E@EkFk4w%owAho;|?3u22OqGEJ{-1D{0y_zLUy@P_--&bj~-1B|p zW}?C@@MHS+HAszR;%WmUH``OIR%m$oUUnwh;g}j`2`QDDYi%B*SViOEJ}})o zi&FZYhS_wrecsxIzQ0l>_Mvn|Rw$@EA;QZRnt;pf2=eaOg;Y_@sb$#uB=Nc8#AXs< z_Wh_nzI-)qk2pqzaX4KR{ah9z)UZ!F4etw5B_ub$%C)8kW|aJOw0Xs&^Y)#&((4rt zizZ$^MGz@st=FP}m{ly|+rr0kn;)59?Hu4H&+jCunJ)U)nD_UL?%n@rO2|O%z??35 zBo7hd5y}P(<xPMjsamw| zK2o{poo<=x0TUtzG!NYI@vPNJfVH(o=dZfC zttn?pjlJzZ;e8{xDfu(ASGAP5YyM{fuA0ySyx6yX)mkVM%XpYF@m05eo?M*+oQk$`-tX<=*${HZK~Cpr25{c38I$^ z_7!~*XWJarF1n$wQHBqn_FwmIeL_8fr?d8IRh0~|%otd>Ub64}F+(RTdsiJkdVT~d z7GCR#hmVYm9Q1vtU>3$<5Bp_JejI%cxrrMG*Yt0PtUt@^`4z%-2%&OgnH@~Rds8Mj zo`iy?IA~gTJZyO(dp3B_J%iyWJ!`a7iC^6Hndw^fqb=`(+|9OE-!v}#BW`2m3Fi#o zYD$HNF!TJg_I6h<-M;MfPpbPy^Rp^Z_g%wCx6m2CN%@%@D`Ya6)AYrtd5mw}CwKND zOuf{f3WO8*0Pl2%8Xp!ArSo4MW8np@m3t~WbsQB_AmD*)iR09>(QRRW)yZkrzwqs( zXm2-3E4C_E>I~Jm7aG@Xk!d4qx}^Kb}z3xYyri`KY{DzJ9yOMBU>tI1k7 za3HV?zB)A3BR(=-`c;EeP;dH_)0Wx1vmvq{3~WErsyD{gmfBs}Q0cC&21;(28*%@hj8&FnalR(h3u@XH}$0zTbXov;<$~k%!j_Z+S+hEaX~@C zv{qEeZ3DSaDSCP*g7t&G&_Bzs_N2yRnj()ZghNR z$H*9VYyo@GR{_8kW4GOkg~=^oJ?;-ffo)jW)wgZ_yDjFr_67zPXexBdfLAd>$eO7) z^DOxd5L8hiJ|@|tbRtn|!;G(;Zp#ZU}Ko;$KGmV{u0*U*No4j6228~b` z(UhgxnzHpl?-Ev8U}{C;N?6nAyWx3t&={oD-W{U}9Kop$X}>3T8=#7ysdt0TOXY1D QOF#H_1Sfo{m0!$%0K4WuRsaA1 literal 0 HcmV?d00001 diff --git a/src/ExtCore.Data.Dapper.SqlServer/icon.png b/src/ExtCore.Data.Dapper.SqlServer/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..658aadfa4b42dc9573b7867b99b9d5a0ce54f25b GIT binary patch literal 3149 zcmaJ@c|4SB8-8XGp$_Q`ZKr8uEoR0tjw#D9GnVX2Mu#$Hh8bfPGb2mMgM1*g2s`LHv^}WCMeV^rbUDtg-&wahm?>*$=WV1qktvmo= zg`F+lP0|XN9yzGw?cnn%OVX?n5J&=dPJkec%%cGumE%u?+p)-jG&dTV8WD1bwjBT| z1jBl^A(P-rw9gV9GD8DlW$t#AVr+5m}?+!#Hy5!M)kH86pHyAYCS zJZb>e4Nv?QOENM;&;(C&HuJdk_|(KletK=K5A)6-+_*f{~yX? z{Xp{tZnS^%{hz{oj|eUe=|vr&l)GdF7FQA(PvbH6(x^lphXwz-WGv(7 zxmf*F?;Dr;^IWWd%0)_&K`s^czY6_*O5&cS?ho5a20x5XV@ur5li2#cbK+e9?|r@LKAvjVr@J)_GdG{;$=lJP8>E_(9}=O|Zi3riHG^2KES=MlwCiFBj(*9W z5w%(w@0w>mGcW1y^ zwh9e#x$3UVWm$sMS@{)5Es?;(W=D6|OCeB-weLA%sSfB)4y3_4qLfgSPp3)O0!usB z%G^9Fl_{;g3bQV5dce>0e2~BN7r@mBGRn#G4=rjiCpIdAGUU^PA|6yMwT_(J98leP z)BRa63=+LUKiGAp@DTonQLEA~@z+!y41UyZX6}qT2^Etz1>0_gsq=85c3dSob{ zEdhLe!K&B0u(-M2}bCn<$* zDy>lNs%WOW%X}E@EkFk4w%owAho;|?3u22OqGEJ{-1D{0y_zLUy@P_--&bj~-1B|p zW}?C@@MHS+HAszR;%WmUH``OIR%m$oUUnwh;g}j`2`QDDYi%B*SViOEJ}})o zi&FZYhS_wrecsxIzQ0l>_Mvn|Rw$@EA;QZRnt;pf2=eaOg;Y_@sb$#uB=Nc8#AXs< z_Wh_nzI-)qk2pqzaX4KR{ah9z)UZ!F4etw5B_ub$%C)8kW|aJOw0Xs&^Y)#&((4rt zizZ$^MGz@st=FP}m{ly|+rr0kn;)59?Hu4H&+jCunJ)U)nD_UL?%n@rO2|O%z??35 zBo7hd5y}P(<xPMjsamw| zK2o{poo<=x0TUtzG!NYI@vPNJfVH(o=dZfC zttn?pjlJzZ;e8{xDfu(ASGAP5YyM{fuA0ySyx6yX)mkVM%XpYF@m05eo?M*+oQk$`-tX<=*${HZK~Cpr25{c38I$^ z_7!~*XWJarF1n$wQHBqn_FwmIeL_8fr?d8IRh0~|%otd>Ub64}F+(RTdsiJkdVT~d z7GCR#hmVYm9Q1vtU>3$<5Bp_JejI%cxrrMG*Yt0PtUt@^`4z%-2%&OgnH@~Rds8Mj zo`iy?IA~gTJZyO(dp3B_J%iyWJ!`a7iC^6Hndw^fqb=`(+|9OE-!v}#BW`2m3Fi#o zYD$HNF!TJg_I6h<-M;MfPpbPy^Rp^Z_g%wCx6m2CN%@%@D`Ya6)AYrtd5mw}CwKND zOuf{f3WO8*0Pl2%8Xp!ArSo4MW8np@m3t~WbsQB_AmD*)iR09>(QRRW)yZkrzwqs( zXm2-3E4C_E>I~Jm7aG@Xk!d4qx}^Kb}z3xYyri`KY{DzJ9yOMBU>tI1k7 za3HV?zB)A3BR(=-`c;EeP;dH_)0Wx1vmvq{3~WErsyD{gmfBs}Q0cC&21;(28*%@hj8&FnalR(h3u@XH}$0zTbXov;<$~k%!j_Z+S+hEaX~@C zv{qEeZ3DSaDSCP*g7t&G&_Bzs_N2yRnj()ZghNR z$H*9VYyo@GR{_8kW4GOkg~=^oJ?;-ffo)jW)wgZ_yDjFr_67zPXexBdfLAd>$eO7) z^DOxd5L8hiJ|@|tbRtn|!;G(;Zp#ZU}Ko;$KGmV{u0*U*No4j6228~b` z(UhgxnzHpl?-Ev8U}{C;N?6nAyWx3t&={oD-W{U}9Kop$X}>3T8=#7ysdt0TOXY1D QOF#H_1Sfo{m0!$%0K4WuRsaA1 literal 0 HcmV?d00001 diff --git a/src/ExtCore.Data.Dapper.Sqlite/icon.png b/src/ExtCore.Data.Dapper.Sqlite/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..658aadfa4b42dc9573b7867b99b9d5a0ce54f25b GIT binary patch literal 3149 zcmaJ@c|4SB8-8XGp$_Q`ZKr8uEoR0tjw#D9GnVX2Mu#$Hh8bfPGb2mMgM1*g2s`LHv^}WCMeV^rbUDtg-&wahm?>*$=WV1qktvmo= zg`F+lP0|XN9yzGw?cnn%OVX?n5J&=dPJkec%%cGumE%u?+p)-jG&dTV8WD1bwjBT| z1jBl^A(P-rw9gV9GD8DlW$t#AVr+5m}?+!#Hy5!M)kH86pHyAYCS zJZb>e4Nv?QOENM;&;(C&HuJdk_|(KletK=K5A)6-+_*f{~yX? z{Xp{tZnS^%{hz{oj|eUe=|vr&l)GdF7FQA(PvbH6(x^lphXwz-WGv(7 zxmf*F?;Dr;^IWWd%0)_&K`s^czY6_*O5&cS?ho5a20x5XV@ur5li2#cbK+e9?|r@LKAvjVr@J)_GdG{;$=lJP8>E_(9}=O|Zi3riHG^2KES=MlwCiFBj(*9W z5w%(w@0w>mGcW1y^ zwh9e#x$3UVWm$sMS@{)5Es?;(W=D6|OCeB-weLA%sSfB)4y3_4qLfgSPp3)O0!usB z%G^9Fl_{;g3bQV5dce>0e2~BN7r@mBGRn#G4=rjiCpIdAGUU^PA|6yMwT_(J98leP z)BRa63=+LUKiGAp@DTonQLEA~@z+!y41UyZX6}qT2^Etz1>0_gsq=85c3dSob{ zEdhLe!K&B0u(-M2}bCn<$* zDy>lNs%WOW%X}E@EkFk4w%owAho;|?3u22OqGEJ{-1D{0y_zLUy@P_--&bj~-1B|p zW}?C@@MHS+HAszR;%WmUH``OIR%m$oUUnwh;g}j`2`QDDYi%B*SViOEJ}})o zi&FZYhS_wrecsxIzQ0l>_Mvn|Rw$@EA;QZRnt;pf2=eaOg;Y_@sb$#uB=Nc8#AXs< z_Wh_nzI-)qk2pqzaX4KR{ah9z)UZ!F4etw5B_ub$%C)8kW|aJOw0Xs&^Y)#&((4rt zizZ$^MGz@st=FP}m{ly|+rr0kn;)59?Hu4H&+jCunJ)U)nD_UL?%n@rO2|O%z??35 zBo7hd5y}P(<xPMjsamw| zK2o{poo<=x0TUtzG!NYI@vPNJfVH(o=dZfC zttn?pjlJzZ;e8{xDfu(ASGAP5YyM{fuA0ySyx6yX)mkVM%XpYF@m05eo?M*+oQk$`-tX<=*${HZK~Cpr25{c38I$^ z_7!~*XWJarF1n$wQHBqn_FwmIeL_8fr?d8IRh0~|%otd>Ub64}F+(RTdsiJkdVT~d z7GCR#hmVYm9Q1vtU>3$<5Bp_JejI%cxrrMG*Yt0PtUt@^`4z%-2%&OgnH@~Rds8Mj zo`iy?IA~gTJZyO(dp3B_J%iyWJ!`a7iC^6Hndw^fqb=`(+|9OE-!v}#BW`2m3Fi#o zYD$HNF!TJg_I6h<-M;MfPpbPy^Rp^Z_g%wCx6m2CN%@%@D`Ya6)AYrtd5mw}CwKND zOuf{f3WO8*0Pl2%8Xp!ArSo4MW8np@m3t~WbsQB_AmD*)iR09>(QRRW)yZkrzwqs( zXm2-3E4C_E>I~Jm7aG@Xk!d4qx}^Kb}z3xYyri`KY{DzJ9yOMBU>tI1k7 za3HV?zB)A3BR(=-`c;EeP;dH_)0Wx1vmvq{3~WErsyD{gmfBs}Q0cC&21;(28*%@hj8&FnalR(h3u@XH}$0zTbXov;<$~k%!j_Z+S+hEaX~@C zv{qEeZ3DSaDSCP*g7t&G&_Bzs_N2yRnj()ZghNR z$H*9VYyo@GR{_8kW4GOkg~=^oJ?;-ffo)jW)wgZ_yDjFr_67zPXexBdfLAd>$eO7) z^DOxd5L8hiJ|@|tbRtn|!;G(;Zp#ZU}Ko;$KGmV{u0*U*No4j6228~b` z(UhgxnzHpl?-Ev8U}{C;N?6nAyWx3t&={oD-W{U}9Kop$X}>3T8=#7ysdt0TOXY1D QOF#H_1Sfo{m0!$%0K4WuRsaA1 literal 0 HcmV?d00001 diff --git a/src/ExtCore.Data.Dapper/icon.png b/src/ExtCore.Data.Dapper/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..658aadfa4b42dc9573b7867b99b9d5a0ce54f25b GIT binary patch literal 3149 zcmaJ@c|4SB8-8XGp$_Q`ZKr8uEoR0tjw#D9GnVX2Mu#$Hh8bfPGb2mMgM1*g2s`LHv^}WCMeV^rbUDtg-&wahm?>*$=WV1qktvmo= zg`F+lP0|XN9yzGw?cnn%OVX?n5J&=dPJkec%%cGumE%u?+p)-jG&dTV8WD1bwjBT| z1jBl^A(P-rw9gV9GD8DlW$t#AVr+5m}?+!#Hy5!M)kH86pHyAYCS zJZb>e4Nv?QOENM;&;(C&HuJdk_|(KletK=K5A)6-+_*f{~yX? z{Xp{tZnS^%{hz{oj|eUe=|vr&l)GdF7FQA(PvbH6(x^lphXwz-WGv(7 zxmf*F?;Dr;^IWWd%0)_&K`s^czY6_*O5&cS?ho5a20x5XV@ur5li2#cbK+e9?|r@LKAvjVr@J)_GdG{;$=lJP8>E_(9}=O|Zi3riHG^2KES=MlwCiFBj(*9W z5w%(w@0w>mGcW1y^ zwh9e#x$3UVWm$sMS@{)5Es?;(W=D6|OCeB-weLA%sSfB)4y3_4qLfgSPp3)O0!usB z%G^9Fl_{;g3bQV5dce>0e2~BN7r@mBGRn#G4=rjiCpIdAGUU^PA|6yMwT_(J98leP z)BRa63=+LUKiGAp@DTonQLEA~@z+!y41UyZX6}qT2^Etz1>0_gsq=85c3dSob{ zEdhLe!K&B0u(-M2}bCn<$* zDy>lNs%WOW%X}E@EkFk4w%owAho;|?3u22OqGEJ{-1D{0y_zLUy@P_--&bj~-1B|p zW}?C@@MHS+HAszR;%WmUH``OIR%m$oUUnwh;g}j`2`QDDYi%B*SViOEJ}})o zi&FZYhS_wrecsxIzQ0l>_Mvn|Rw$@EA;QZRnt;pf2=eaOg;Y_@sb$#uB=Nc8#AXs< z_Wh_nzI-)qk2pqzaX4KR{ah9z)UZ!F4etw5B_ub$%C)8kW|aJOw0Xs&^Y)#&((4rt zizZ$^MGz@st=FP}m{ly|+rr0kn;)59?Hu4H&+jCunJ)U)nD_UL?%n@rO2|O%z??35 zBo7hd5y}P(<xPMjsamw| zK2o{poo<=x0TUtzG!NYI@vPNJfVH(o=dZfC zttn?pjlJzZ;e8{xDfu(ASGAP5YyM{fuA0ySyx6yX)mkVM%XpYF@m05eo?M*+oQk$`-tX<=*${HZK~Cpr25{c38I$^ z_7!~*XWJarF1n$wQHBqn_FwmIeL_8fr?d8IRh0~|%otd>Ub64}F+(RTdsiJkdVT~d z7GCR#hmVYm9Q1vtU>3$<5Bp_JejI%cxrrMG*Yt0PtUt@^`4z%-2%&OgnH@~Rds8Mj zo`iy?IA~gTJZyO(dp3B_J%iyWJ!`a7iC^6Hndw^fqb=`(+|9OE-!v}#BW`2m3Fi#o zYD$HNF!TJg_I6h<-M;MfPpbPy^Rp^Z_g%wCx6m2CN%@%@D`Ya6)AYrtd5mw}CwKND zOuf{f3WO8*0Pl2%8Xp!ArSo4MW8np@m3t~WbsQB_AmD*)iR09>(QRRW)yZkrzwqs( zXm2-3E4C_E>I~Jm7aG@Xk!d4qx}^Kb}z3xYyri`KY{DzJ9yOMBU>tI1k7 za3HV?zB)A3BR(=-`c;EeP;dH_)0Wx1vmvq{3~WErsyD{gmfBs}Q0cC&21;(28*%@hj8&FnalR(h3u@XH}$0zTbXov;<$~k%!j_Z+S+hEaX~@C zv{qEeZ3DSaDSCP*g7t&G&_Bzs_N2yRnj()ZghNR z$H*9VYyo@GR{_8kW4GOkg~=^oJ?;-ffo)jW)wgZ_yDjFr_67zPXexBdfLAd>$eO7) z^DOxd5L8hiJ|@|tbRtn|!;G(;Zp#ZU}Ko;$KGmV{u0*U*No4j6228~b` z(UhgxnzHpl?-Ev8U}{C;N?6nAyWx3t&={oD-W{U}9Kop$X}>3T8=#7ysdt0TOXY1D QOF#H_1Sfo{m0!$%0K4WuRsaA1 literal 0 HcmV?d00001 diff --git a/src/ExtCore.Data.Entities.Abstractions/icon.png b/src/ExtCore.Data.Entities.Abstractions/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..658aadfa4b42dc9573b7867b99b9d5a0ce54f25b GIT binary patch literal 3149 zcmaJ@c|4SB8-8XGp$_Q`ZKr8uEoR0tjw#D9GnVX2Mu#$Hh8bfPGb2mMgM1*g2s`LHv^}WCMeV^rbUDtg-&wahm?>*$=WV1qktvmo= zg`F+lP0|XN9yzGw?cnn%OVX?n5J&=dPJkec%%cGumE%u?+p)-jG&dTV8WD1bwjBT| z1jBl^A(P-rw9gV9GD8DlW$t#AVr+5m}?+!#Hy5!M)kH86pHyAYCS zJZb>e4Nv?QOENM;&;(C&HuJdk_|(KletK=K5A)6-+_*f{~yX? z{Xp{tZnS^%{hz{oj|eUe=|vr&l)GdF7FQA(PvbH6(x^lphXwz-WGv(7 zxmf*F?;Dr;^IWWd%0)_&K`s^czY6_*O5&cS?ho5a20x5XV@ur5li2#cbK+e9?|r@LKAvjVr@J)_GdG{;$=lJP8>E_(9}=O|Zi3riHG^2KES=MlwCiFBj(*9W z5w%(w@0w>mGcW1y^ zwh9e#x$3UVWm$sMS@{)5Es?;(W=D6|OCeB-weLA%sSfB)4y3_4qLfgSPp3)O0!usB z%G^9Fl_{;g3bQV5dce>0e2~BN7r@mBGRn#G4=rjiCpIdAGUU^PA|6yMwT_(J98leP z)BRa63=+LUKiGAp@DTonQLEA~@z+!y41UyZX6}qT2^Etz1>0_gsq=85c3dSob{ zEdhLe!K&B0u(-M2}bCn<$* zDy>lNs%WOW%X}E@EkFk4w%owAho;|?3u22OqGEJ{-1D{0y_zLUy@P_--&bj~-1B|p zW}?C@@MHS+HAszR;%WmUH``OIR%m$oUUnwh;g}j`2`QDDYi%B*SViOEJ}})o zi&FZYhS_wrecsxIzQ0l>_Mvn|Rw$@EA;QZRnt;pf2=eaOg;Y_@sb$#uB=Nc8#AXs< z_Wh_nzI-)qk2pqzaX4KR{ah9z)UZ!F4etw5B_ub$%C)8kW|aJOw0Xs&^Y)#&((4rt zizZ$^MGz@st=FP}m{ly|+rr0kn;)59?Hu4H&+jCunJ)U)nD_UL?%n@rO2|O%z??35 zBo7hd5y}P(<xPMjsamw| zK2o{poo<=x0TUtzG!NYI@vPNJfVH(o=dZfC zttn?pjlJzZ;e8{xDfu(ASGAP5YyM{fuA0ySyx6yX)mkVM%XpYF@m05eo?M*+oQk$`-tX<=*${HZK~Cpr25{c38I$^ z_7!~*XWJarF1n$wQHBqn_FwmIeL_8fr?d8IRh0~|%otd>Ub64}F+(RTdsiJkdVT~d z7GCR#hmVYm9Q1vtU>3$<5Bp_JejI%cxrrMG*Yt0PtUt@^`4z%-2%&OgnH@~Rds8Mj zo`iy?IA~gTJZyO(dp3B_J%iyWJ!`a7iC^6Hndw^fqb=`(+|9OE-!v}#BW`2m3Fi#o zYD$HNF!TJg_I6h<-M;MfPpbPy^Rp^Z_g%wCx6m2CN%@%@D`Ya6)AYrtd5mw}CwKND zOuf{f3WO8*0Pl2%8Xp!ArSo4MW8np@m3t~WbsQB_AmD*)iR09>(QRRW)yZkrzwqs( zXm2-3E4C_E>I~Jm7aG@Xk!d4qx}^Kb}z3xYyri`KY{DzJ9yOMBU>tI1k7 za3HV?zB)A3BR(=-`c;EeP;dH_)0Wx1vmvq{3~WErsyD{gmfBs}Q0cC&21;(28*%@hj8&FnalR(h3u@XH}$0zTbXov;<$~k%!j_Z+S+hEaX~@C zv{qEeZ3DSaDSCP*g7t&G&_Bzs_N2yRnj()ZghNR z$H*9VYyo@GR{_8kW4GOkg~=^oJ?;-ffo)jW)wgZ_yDjFr_67zPXexBdfLAd>$eO7) z^DOxd5L8hiJ|@|tbRtn|!;G(;Zp#ZU}Ko;$KGmV{u0*U*No4j6228~b` z(UhgxnzHpl?-Ev8U}{C;N?6nAyWx3t&={oD-W{U}9Kop$X}>3T8=#7ysdt0TOXY1D QOF#H_1Sfo{m0!$%0K4WuRsaA1 literal 0 HcmV?d00001 diff --git a/src/ExtCore.Data.EntityFramework.MySql/icon.png b/src/ExtCore.Data.EntityFramework.MySql/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..658aadfa4b42dc9573b7867b99b9d5a0ce54f25b GIT binary patch literal 3149 zcmaJ@c|4SB8-8XGp$_Q`ZKr8uEoR0tjw#D9GnVX2Mu#$Hh8bfPGb2mMgM1*g2s`LHv^}WCMeV^rbUDtg-&wahm?>*$=WV1qktvmo= zg`F+lP0|XN9yzGw?cnn%OVX?n5J&=dPJkec%%cGumE%u?+p)-jG&dTV8WD1bwjBT| z1jBl^A(P-rw9gV9GD8DlW$t#AVr+5m}?+!#Hy5!M)kH86pHyAYCS zJZb>e4Nv?QOENM;&;(C&HuJdk_|(KletK=K5A)6-+_*f{~yX? z{Xp{tZnS^%{hz{oj|eUe=|vr&l)GdF7FQA(PvbH6(x^lphXwz-WGv(7 zxmf*F?;Dr;^IWWd%0)_&K`s^czY6_*O5&cS?ho5a20x5XV@ur5li2#cbK+e9?|r@LKAvjVr@J)_GdG{;$=lJP8>E_(9}=O|Zi3riHG^2KES=MlwCiFBj(*9W z5w%(w@0w>mGcW1y^ zwh9e#x$3UVWm$sMS@{)5Es?;(W=D6|OCeB-weLA%sSfB)4y3_4qLfgSPp3)O0!usB z%G^9Fl_{;g3bQV5dce>0e2~BN7r@mBGRn#G4=rjiCpIdAGUU^PA|6yMwT_(J98leP z)BRa63=+LUKiGAp@DTonQLEA~@z+!y41UyZX6}qT2^Etz1>0_gsq=85c3dSob{ zEdhLe!K&B0u(-M2}bCn<$* zDy>lNs%WOW%X}E@EkFk4w%owAho;|?3u22OqGEJ{-1D{0y_zLUy@P_--&bj~-1B|p zW}?C@@MHS+HAszR;%WmUH``OIR%m$oUUnwh;g}j`2`QDDYi%B*SViOEJ}})o zi&FZYhS_wrecsxIzQ0l>_Mvn|Rw$@EA;QZRnt;pf2=eaOg;Y_@sb$#uB=Nc8#AXs< z_Wh_nzI-)qk2pqzaX4KR{ah9z)UZ!F4etw5B_ub$%C)8kW|aJOw0Xs&^Y)#&((4rt zizZ$^MGz@st=FP}m{ly|+rr0kn;)59?Hu4H&+jCunJ)U)nD_UL?%n@rO2|O%z??35 zBo7hd5y}P(<xPMjsamw| zK2o{poo<=x0TUtzG!NYI@vPNJfVH(o=dZfC zttn?pjlJzZ;e8{xDfu(ASGAP5YyM{fuA0ySyx6yX)mkVM%XpYF@m05eo?M*+oQk$`-tX<=*${HZK~Cpr25{c38I$^ z_7!~*XWJarF1n$wQHBqn_FwmIeL_8fr?d8IRh0~|%otd>Ub64}F+(RTdsiJkdVT~d z7GCR#hmVYm9Q1vtU>3$<5Bp_JejI%cxrrMG*Yt0PtUt@^`4z%-2%&OgnH@~Rds8Mj zo`iy?IA~gTJZyO(dp3B_J%iyWJ!`a7iC^6Hndw^fqb=`(+|9OE-!v}#BW`2m3Fi#o zYD$HNF!TJg_I6h<-M;MfPpbPy^Rp^Z_g%wCx6m2CN%@%@D`Ya6)AYrtd5mw}CwKND zOuf{f3WO8*0Pl2%8Xp!ArSo4MW8np@m3t~WbsQB_AmD*)iR09>(QRRW)yZkrzwqs( zXm2-3E4C_E>I~Jm7aG@Xk!d4qx}^Kb}z3xYyri`KY{DzJ9yOMBU>tI1k7 za3HV?zB)A3BR(=-`c;EeP;dH_)0Wx1vmvq{3~WErsyD{gmfBs}Q0cC&21;(28*%@hj8&FnalR(h3u@XH}$0zTbXov;<$~k%!j_Z+S+hEaX~@C zv{qEeZ3DSaDSCP*g7t&G&_Bzs_N2yRnj()ZghNR z$H*9VYyo@GR{_8kW4GOkg~=^oJ?;-ffo)jW)wgZ_yDjFr_67zPXexBdfLAd>$eO7) z^DOxd5L8hiJ|@|tbRtn|!;G(;Zp#ZU}Ko;$KGmV{u0*U*No4j6228~b` z(UhgxnzHpl?-Ev8U}{C;N?6nAyWx3t&={oD-W{U}9Kop$X}>3T8=#7ysdt0TOXY1D QOF#H_1Sfo{m0!$%0K4WuRsaA1 literal 0 HcmV?d00001 diff --git a/src/ExtCore.Data.EntityFramework.PostgreSql/icon.png b/src/ExtCore.Data.EntityFramework.PostgreSql/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..658aadfa4b42dc9573b7867b99b9d5a0ce54f25b GIT binary patch literal 3149 zcmaJ@c|4SB8-8XGp$_Q`ZKr8uEoR0tjw#D9GnVX2Mu#$Hh8bfPGb2mMgM1*g2s`LHv^}WCMeV^rbUDtg-&wahm?>*$=WV1qktvmo= zg`F+lP0|XN9yzGw?cnn%OVX?n5J&=dPJkec%%cGumE%u?+p)-jG&dTV8WD1bwjBT| z1jBl^A(P-rw9gV9GD8DlW$t#AVr+5m}?+!#Hy5!M)kH86pHyAYCS zJZb>e4Nv?QOENM;&;(C&HuJdk_|(KletK=K5A)6-+_*f{~yX? z{Xp{tZnS^%{hz{oj|eUe=|vr&l)GdF7FQA(PvbH6(x^lphXwz-WGv(7 zxmf*F?;Dr;^IWWd%0)_&K`s^czY6_*O5&cS?ho5a20x5XV@ur5li2#cbK+e9?|r@LKAvjVr@J)_GdG{;$=lJP8>E_(9}=O|Zi3riHG^2KES=MlwCiFBj(*9W z5w%(w@0w>mGcW1y^ zwh9e#x$3UVWm$sMS@{)5Es?;(W=D6|OCeB-weLA%sSfB)4y3_4qLfgSPp3)O0!usB z%G^9Fl_{;g3bQV5dce>0e2~BN7r@mBGRn#G4=rjiCpIdAGUU^PA|6yMwT_(J98leP z)BRa63=+LUKiGAp@DTonQLEA~@z+!y41UyZX6}qT2^Etz1>0_gsq=85c3dSob{ zEdhLe!K&B0u(-M2}bCn<$* zDy>lNs%WOW%X}E@EkFk4w%owAho;|?3u22OqGEJ{-1D{0y_zLUy@P_--&bj~-1B|p zW}?C@@MHS+HAszR;%WmUH``OIR%m$oUUnwh;g}j`2`QDDYi%B*SViOEJ}})o zi&FZYhS_wrecsxIzQ0l>_Mvn|Rw$@EA;QZRnt;pf2=eaOg;Y_@sb$#uB=Nc8#AXs< z_Wh_nzI-)qk2pqzaX4KR{ah9z)UZ!F4etw5B_ub$%C)8kW|aJOw0Xs&^Y)#&((4rt zizZ$^MGz@st=FP}m{ly|+rr0kn;)59?Hu4H&+jCunJ)U)nD_UL?%n@rO2|O%z??35 zBo7hd5y}P(<xPMjsamw| zK2o{poo<=x0TUtzG!NYI@vPNJfVH(o=dZfC zttn?pjlJzZ;e8{xDfu(ASGAP5YyM{fuA0ySyx6yX)mkVM%XpYF@m05eo?M*+oQk$`-tX<=*${HZK~Cpr25{c38I$^ z_7!~*XWJarF1n$wQHBqn_FwmIeL_8fr?d8IRh0~|%otd>Ub64}F+(RTdsiJkdVT~d z7GCR#hmVYm9Q1vtU>3$<5Bp_JejI%cxrrMG*Yt0PtUt@^`4z%-2%&OgnH@~Rds8Mj zo`iy?IA~gTJZyO(dp3B_J%iyWJ!`a7iC^6Hndw^fqb=`(+|9OE-!v}#BW`2m3Fi#o zYD$HNF!TJg_I6h<-M;MfPpbPy^Rp^Z_g%wCx6m2CN%@%@D`Ya6)AYrtd5mw}CwKND zOuf{f3WO8*0Pl2%8Xp!ArSo4MW8np@m3t~WbsQB_AmD*)iR09>(QRRW)yZkrzwqs( zXm2-3E4C_E>I~Jm7aG@Xk!d4qx}^Kb}z3xYyri`KY{DzJ9yOMBU>tI1k7 za3HV?zB)A3BR(=-`c;EeP;dH_)0Wx1vmvq{3~WErsyD{gmfBs}Q0cC&21;(28*%@hj8&FnalR(h3u@XH}$0zTbXov;<$~k%!j_Z+S+hEaX~@C zv{qEeZ3DSaDSCP*g7t&G&_Bzs_N2yRnj()ZghNR z$H*9VYyo@GR{_8kW4GOkg~=^oJ?;-ffo)jW)wgZ_yDjFr_67zPXexBdfLAd>$eO7) z^DOxd5L8hiJ|@|tbRtn|!;G(;Zp#ZU}Ko;$KGmV{u0*U*No4j6228~b` z(UhgxnzHpl?-Ev8U}{C;N?6nAyWx3t&={oD-W{U}9Kop$X}>3T8=#7ysdt0TOXY1D QOF#H_1Sfo{m0!$%0K4WuRsaA1 literal 0 HcmV?d00001 diff --git a/src/ExtCore.Data.EntityFramework.SqlServer/icon.png b/src/ExtCore.Data.EntityFramework.SqlServer/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..658aadfa4b42dc9573b7867b99b9d5a0ce54f25b GIT binary patch literal 3149 zcmaJ@c|4SB8-8XGp$_Q`ZKr8uEoR0tjw#D9GnVX2Mu#$Hh8bfPGb2mMgM1*g2s`LHv^}WCMeV^rbUDtg-&wahm?>*$=WV1qktvmo= zg`F+lP0|XN9yzGw?cnn%OVX?n5J&=dPJkec%%cGumE%u?+p)-jG&dTV8WD1bwjBT| z1jBl^A(P-rw9gV9GD8DlW$t#AVr+5m}?+!#Hy5!M)kH86pHyAYCS zJZb>e4Nv?QOENM;&;(C&HuJdk_|(KletK=K5A)6-+_*f{~yX? z{Xp{tZnS^%{hz{oj|eUe=|vr&l)GdF7FQA(PvbH6(x^lphXwz-WGv(7 zxmf*F?;Dr;^IWWd%0)_&K`s^czY6_*O5&cS?ho5a20x5XV@ur5li2#cbK+e9?|r@LKAvjVr@J)_GdG{;$=lJP8>E_(9}=O|Zi3riHG^2KES=MlwCiFBj(*9W z5w%(w@0w>mGcW1y^ zwh9e#x$3UVWm$sMS@{)5Es?;(W=D6|OCeB-weLA%sSfB)4y3_4qLfgSPp3)O0!usB z%G^9Fl_{;g3bQV5dce>0e2~BN7r@mBGRn#G4=rjiCpIdAGUU^PA|6yMwT_(J98leP z)BRa63=+LUKiGAp@DTonQLEA~@z+!y41UyZX6}qT2^Etz1>0_gsq=85c3dSob{ zEdhLe!K&B0u(-M2}bCn<$* zDy>lNs%WOW%X}E@EkFk4w%owAho;|?3u22OqGEJ{-1D{0y_zLUy@P_--&bj~-1B|p zW}?C@@MHS+HAszR;%WmUH``OIR%m$oUUnwh;g}j`2`QDDYi%B*SViOEJ}})o zi&FZYhS_wrecsxIzQ0l>_Mvn|Rw$@EA;QZRnt;pf2=eaOg;Y_@sb$#uB=Nc8#AXs< z_Wh_nzI-)qk2pqzaX4KR{ah9z)UZ!F4etw5B_ub$%C)8kW|aJOw0Xs&^Y)#&((4rt zizZ$^MGz@st=FP}m{ly|+rr0kn;)59?Hu4H&+jCunJ)U)nD_UL?%n@rO2|O%z??35 zBo7hd5y}P(<xPMjsamw| zK2o{poo<=x0TUtzG!NYI@vPNJfVH(o=dZfC zttn?pjlJzZ;e8{xDfu(ASGAP5YyM{fuA0ySyx6yX)mkVM%XpYF@m05eo?M*+oQk$`-tX<=*${HZK~Cpr25{c38I$^ z_7!~*XWJarF1n$wQHBqn_FwmIeL_8fr?d8IRh0~|%otd>Ub64}F+(RTdsiJkdVT~d z7GCR#hmVYm9Q1vtU>3$<5Bp_JejI%cxrrMG*Yt0PtUt@^`4z%-2%&OgnH@~Rds8Mj zo`iy?IA~gTJZyO(dp3B_J%iyWJ!`a7iC^6Hndw^fqb=`(+|9OE-!v}#BW`2m3Fi#o zYD$HNF!TJg_I6h<-M;MfPpbPy^Rp^Z_g%wCx6m2CN%@%@D`Ya6)AYrtd5mw}CwKND zOuf{f3WO8*0Pl2%8Xp!ArSo4MW8np@m3t~WbsQB_AmD*)iR09>(QRRW)yZkrzwqs( zXm2-3E4C_E>I~Jm7aG@Xk!d4qx}^Kb}z3xYyri`KY{DzJ9yOMBU>tI1k7 za3HV?zB)A3BR(=-`c;EeP;dH_)0Wx1vmvq{3~WErsyD{gmfBs}Q0cC&21;(28*%@hj8&FnalR(h3u@XH}$0zTbXov;<$~k%!j_Z+S+hEaX~@C zv{qEeZ3DSaDSCP*g7t&G&_Bzs_N2yRnj()ZghNR z$H*9VYyo@GR{_8kW4GOkg~=^oJ?;-ffo)jW)wgZ_yDjFr_67zPXexBdfLAd>$eO7) z^DOxd5L8hiJ|@|tbRtn|!;G(;Zp#ZU}Ko;$KGmV{u0*U*No4j6228~b` z(UhgxnzHpl?-Ev8U}{C;N?6nAyWx3t&={oD-W{U}9Kop$X}>3T8=#7ysdt0TOXY1D QOF#H_1Sfo{m0!$%0K4WuRsaA1 literal 0 HcmV?d00001 diff --git a/src/ExtCore.Data.EntityFramework.Sqlite/icon.png b/src/ExtCore.Data.EntityFramework.Sqlite/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..658aadfa4b42dc9573b7867b99b9d5a0ce54f25b GIT binary patch literal 3149 zcmaJ@c|4SB8-8XGp$_Q`ZKr8uEoR0tjw#D9GnVX2Mu#$Hh8bfPGb2mMgM1*g2s`LHv^}WCMeV^rbUDtg-&wahm?>*$=WV1qktvmo= zg`F+lP0|XN9yzGw?cnn%OVX?n5J&=dPJkec%%cGumE%u?+p)-jG&dTV8WD1bwjBT| z1jBl^A(P-rw9gV9GD8DlW$t#AVr+5m}?+!#Hy5!M)kH86pHyAYCS zJZb>e4Nv?QOENM;&;(C&HuJdk_|(KletK=K5A)6-+_*f{~yX? z{Xp{tZnS^%{hz{oj|eUe=|vr&l)GdF7FQA(PvbH6(x^lphXwz-WGv(7 zxmf*F?;Dr;^IWWd%0)_&K`s^czY6_*O5&cS?ho5a20x5XV@ur5li2#cbK+e9?|r@LKAvjVr@J)_GdG{;$=lJP8>E_(9}=O|Zi3riHG^2KES=MlwCiFBj(*9W z5w%(w@0w>mGcW1y^ zwh9e#x$3UVWm$sMS@{)5Es?;(W=D6|OCeB-weLA%sSfB)4y3_4qLfgSPp3)O0!usB z%G^9Fl_{;g3bQV5dce>0e2~BN7r@mBGRn#G4=rjiCpIdAGUU^PA|6yMwT_(J98leP z)BRa63=+LUKiGAp@DTonQLEA~@z+!y41UyZX6}qT2^Etz1>0_gsq=85c3dSob{ zEdhLe!K&B0u(-M2}bCn<$* zDy>lNs%WOW%X}E@EkFk4w%owAho;|?3u22OqGEJ{-1D{0y_zLUy@P_--&bj~-1B|p zW}?C@@MHS+HAszR;%WmUH``OIR%m$oUUnwh;g}j`2`QDDYi%B*SViOEJ}})o zi&FZYhS_wrecsxIzQ0l>_Mvn|Rw$@EA;QZRnt;pf2=eaOg;Y_@sb$#uB=Nc8#AXs< z_Wh_nzI-)qk2pqzaX4KR{ah9z)UZ!F4etw5B_ub$%C)8kW|aJOw0Xs&^Y)#&((4rt zizZ$^MGz@st=FP}m{ly|+rr0kn;)59?Hu4H&+jCunJ)U)nD_UL?%n@rO2|O%z??35 zBo7hd5y}P(<xPMjsamw| zK2o{poo<=x0TUtzG!NYI@vPNJfVH(o=dZfC zttn?pjlJzZ;e8{xDfu(ASGAP5YyM{fuA0ySyx6yX)mkVM%XpYF@m05eo?M*+oQk$`-tX<=*${HZK~Cpr25{c38I$^ z_7!~*XWJarF1n$wQHBqn_FwmIeL_8fr?d8IRh0~|%otd>Ub64}F+(RTdsiJkdVT~d z7GCR#hmVYm9Q1vtU>3$<5Bp_JejI%cxrrMG*Yt0PtUt@^`4z%-2%&OgnH@~Rds8Mj zo`iy?IA~gTJZyO(dp3B_J%iyWJ!`a7iC^6Hndw^fqb=`(+|9OE-!v}#BW`2m3Fi#o zYD$HNF!TJg_I6h<-M;MfPpbPy^Rp^Z_g%wCx6m2CN%@%@D`Ya6)AYrtd5mw}CwKND zOuf{f3WO8*0Pl2%8Xp!ArSo4MW8np@m3t~WbsQB_AmD*)iR09>(QRRW)yZkrzwqs( zXm2-3E4C_E>I~Jm7aG@Xk!d4qx}^Kb}z3xYyri`KY{DzJ9yOMBU>tI1k7 za3HV?zB)A3BR(=-`c;EeP;dH_)0Wx1vmvq{3~WErsyD{gmfBs}Q0cC&21;(28*%@hj8&FnalR(h3u@XH}$0zTbXov;<$~k%!j_Z+S+hEaX~@C zv{qEeZ3DSaDSCP*g7t&G&_Bzs_N2yRnj()ZghNR z$H*9VYyo@GR{_8kW4GOkg~=^oJ?;-ffo)jW)wgZ_yDjFr_67zPXexBdfLAd>$eO7) z^DOxd5L8hiJ|@|tbRtn|!;G(;Zp#ZU}Ko;$KGmV{u0*U*No4j6228~b` z(UhgxnzHpl?-Ev8U}{C;N?6nAyWx3t&={oD-W{U}9Kop$X}>3T8=#7ysdt0TOXY1D QOF#H_1Sfo{m0!$%0K4WuRsaA1 literal 0 HcmV?d00001 diff --git a/src/ExtCore.Data.EntityFramework/icon.png b/src/ExtCore.Data.EntityFramework/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..658aadfa4b42dc9573b7867b99b9d5a0ce54f25b GIT binary patch literal 3149 zcmaJ@c|4SB8-8XGp$_Q`ZKr8uEoR0tjw#D9GnVX2Mu#$Hh8bfPGb2mMgM1*g2s`LHv^}WCMeV^rbUDtg-&wahm?>*$=WV1qktvmo= zg`F+lP0|XN9yzGw?cnn%OVX?n5J&=dPJkec%%cGumE%u?+p)-jG&dTV8WD1bwjBT| z1jBl^A(P-rw9gV9GD8DlW$t#AVr+5m}?+!#Hy5!M)kH86pHyAYCS zJZb>e4Nv?QOENM;&;(C&HuJdk_|(KletK=K5A)6-+_*f{~yX? z{Xp{tZnS^%{hz{oj|eUe=|vr&l)GdF7FQA(PvbH6(x^lphXwz-WGv(7 zxmf*F?;Dr;^IWWd%0)_&K`s^czY6_*O5&cS?ho5a20x5XV@ur5li2#cbK+e9?|r@LKAvjVr@J)_GdG{;$=lJP8>E_(9}=O|Zi3riHG^2KES=MlwCiFBj(*9W z5w%(w@0w>mGcW1y^ zwh9e#x$3UVWm$sMS@{)5Es?;(W=D6|OCeB-weLA%sSfB)4y3_4qLfgSPp3)O0!usB z%G^9Fl_{;g3bQV5dce>0e2~BN7r@mBGRn#G4=rjiCpIdAGUU^PA|6yMwT_(J98leP z)BRa63=+LUKiGAp@DTonQLEA~@z+!y41UyZX6}qT2^Etz1>0_gsq=85c3dSob{ zEdhLe!K&B0u(-M2}bCn<$* zDy>lNs%WOW%X}E@EkFk4w%owAho;|?3u22OqGEJ{-1D{0y_zLUy@P_--&bj~-1B|p zW}?C@@MHS+HAszR;%WmUH``OIR%m$oUUnwh;g}j`2`QDDYi%B*SViOEJ}})o zi&FZYhS_wrecsxIzQ0l>_Mvn|Rw$@EA;QZRnt;pf2=eaOg;Y_@sb$#uB=Nc8#AXs< z_Wh_nzI-)qk2pqzaX4KR{ah9z)UZ!F4etw5B_ub$%C)8kW|aJOw0Xs&^Y)#&((4rt zizZ$^MGz@st=FP}m{ly|+rr0kn;)59?Hu4H&+jCunJ)U)nD_UL?%n@rO2|O%z??35 zBo7hd5y}P(<xPMjsamw| zK2o{poo<=x0TUtzG!NYI@vPNJfVH(o=dZfC zttn?pjlJzZ;e8{xDfu(ASGAP5YyM{fuA0ySyx6yX)mkVM%XpYF@m05eo?M*+oQk$`-tX<=*${HZK~Cpr25{c38I$^ z_7!~*XWJarF1n$wQHBqn_FwmIeL_8fr?d8IRh0~|%otd>Ub64}F+(RTdsiJkdVT~d z7GCR#hmVYm9Q1vtU>3$<5Bp_JejI%cxrrMG*Yt0PtUt@^`4z%-2%&OgnH@~Rds8Mj zo`iy?IA~gTJZyO(dp3B_J%iyWJ!`a7iC^6Hndw^fqb=`(+|9OE-!v}#BW`2m3Fi#o zYD$HNF!TJg_I6h<-M;MfPpbPy^Rp^Z_g%wCx6m2CN%@%@D`Ya6)AYrtd5mw}CwKND zOuf{f3WO8*0Pl2%8Xp!ArSo4MW8np@m3t~WbsQB_AmD*)iR09>(QRRW)yZkrzwqs( zXm2-3E4C_E>I~Jm7aG@Xk!d4qx}^Kb}z3xYyri`KY{DzJ9yOMBU>tI1k7 za3HV?zB)A3BR(=-`c;EeP;dH_)0Wx1vmvq{3~WErsyD{gmfBs}Q0cC&21;(28*%@hj8&FnalR(h3u@XH}$0zTbXov;<$~k%!j_Z+S+hEaX~@C zv{qEeZ3DSaDSCP*g7t&G&_Bzs_N2yRnj()ZghNR z$H*9VYyo@GR{_8kW4GOkg~=^oJ?;-ffo)jW)wgZ_yDjFr_67zPXexBdfLAd>$eO7) z^DOxd5L8hiJ|@|tbRtn|!;G(;Zp#ZU}Ko;$KGmV{u0*U*No4j6228~b` z(UhgxnzHpl?-Ev8U}{C;N?6nAyWx3t&={oD-W{U}9Kop$X}>3T8=#7ysdt0TOXY1D QOF#H_1Sfo{m0!$%0K4WuRsaA1 literal 0 HcmV?d00001 diff --git a/src/ExtCore.Data/icon.png b/src/ExtCore.Data/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..658aadfa4b42dc9573b7867b99b9d5a0ce54f25b GIT binary patch literal 3149 zcmaJ@c|4SB8-8XGp$_Q`ZKr8uEoR0tjw#D9GnVX2Mu#$Hh8bfPGb2mMgM1*g2s`LHv^}WCMeV^rbUDtg-&wahm?>*$=WV1qktvmo= zg`F+lP0|XN9yzGw?cnn%OVX?n5J&=dPJkec%%cGumE%u?+p)-jG&dTV8WD1bwjBT| z1jBl^A(P-rw9gV9GD8DlW$t#AVr+5m}?+!#Hy5!M)kH86pHyAYCS zJZb>e4Nv?QOENM;&;(C&HuJdk_|(KletK=K5A)6-+_*f{~yX? z{Xp{tZnS^%{hz{oj|eUe=|vr&l)GdF7FQA(PvbH6(x^lphXwz-WGv(7 zxmf*F?;Dr;^IWWd%0)_&K`s^czY6_*O5&cS?ho5a20x5XV@ur5li2#cbK+e9?|r@LKAvjVr@J)_GdG{;$=lJP8>E_(9}=O|Zi3riHG^2KES=MlwCiFBj(*9W z5w%(w@0w>mGcW1y^ zwh9e#x$3UVWm$sMS@{)5Es?;(W=D6|OCeB-weLA%sSfB)4y3_4qLfgSPp3)O0!usB z%G^9Fl_{;g3bQV5dce>0e2~BN7r@mBGRn#G4=rjiCpIdAGUU^PA|6yMwT_(J98leP z)BRa63=+LUKiGAp@DTonQLEA~@z+!y41UyZX6}qT2^Etz1>0_gsq=85c3dSob{ zEdhLe!K&B0u(-M2}bCn<$* zDy>lNs%WOW%X}E@EkFk4w%owAho;|?3u22OqGEJ{-1D{0y_zLUy@P_--&bj~-1B|p zW}?C@@MHS+HAszR;%WmUH``OIR%m$oUUnwh;g}j`2`QDDYi%B*SViOEJ}})o zi&FZYhS_wrecsxIzQ0l>_Mvn|Rw$@EA;QZRnt;pf2=eaOg;Y_@sb$#uB=Nc8#AXs< z_Wh_nzI-)qk2pqzaX4KR{ah9z)UZ!F4etw5B_ub$%C)8kW|aJOw0Xs&^Y)#&((4rt zizZ$^MGz@st=FP}m{ly|+rr0kn;)59?Hu4H&+jCunJ)U)nD_UL?%n@rO2|O%z??35 zBo7hd5y}P(<xPMjsamw| zK2o{poo<=x0TUtzG!NYI@vPNJfVH(o=dZfC zttn?pjlJzZ;e8{xDfu(ASGAP5YyM{fuA0ySyx6yX)mkVM%XpYF@m05eo?M*+oQk$`-tX<=*${HZK~Cpr25{c38I$^ z_7!~*XWJarF1n$wQHBqn_FwmIeL_8fr?d8IRh0~|%otd>Ub64}F+(RTdsiJkdVT~d z7GCR#hmVYm9Q1vtU>3$<5Bp_JejI%cxrrMG*Yt0PtUt@^`4z%-2%&OgnH@~Rds8Mj zo`iy?IA~gTJZyO(dp3B_J%iyWJ!`a7iC^6Hndw^fqb=`(+|9OE-!v}#BW`2m3Fi#o zYD$HNF!TJg_I6h<-M;MfPpbPy^Rp^Z_g%wCx6m2CN%@%@D`Ya6)AYrtd5mw}CwKND zOuf{f3WO8*0Pl2%8Xp!ArSo4MW8np@m3t~WbsQB_AmD*)iR09>(QRRW)yZkrzwqs( zXm2-3E4C_E>I~Jm7aG@Xk!d4qx}^Kb}z3xYyri`KY{DzJ9yOMBU>tI1k7 za3HV?zB)A3BR(=-`c;EeP;dH_)0Wx1vmvq{3~WErsyD{gmfBs}Q0cC&21;(28*%@hj8&FnalR(h3u@XH}$0zTbXov;<$~k%!j_Z+S+hEaX~@C zv{qEeZ3DSaDSCP*g7t&G&_Bzs_N2yRnj()ZghNR z$H*9VYyo@GR{_8kW4GOkg~=^oJ?;-ffo)jW)wgZ_yDjFr_67zPXexBdfLAd>$eO7) z^DOxd5L8hiJ|@|tbRtn|!;G(;Zp#ZU}Ko;$KGmV{u0*U*No4j6228~b` z(UhgxnzHpl?-Ev8U}{C;N?6nAyWx3t&={oD-W{U}9Kop$X}>3T8=#7ysdt0TOXY1D QOF#H_1Sfo{m0!$%0K4WuRsaA1 literal 0 HcmV?d00001 diff --git a/src/ExtCore.Events/icon.png b/src/ExtCore.Events/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..658aadfa4b42dc9573b7867b99b9d5a0ce54f25b GIT binary patch literal 3149 zcmaJ@c|4SB8-8XGp$_Q`ZKr8uEoR0tjw#D9GnVX2Mu#$Hh8bfPGb2mMgM1*g2s`LHv^}WCMeV^rbUDtg-&wahm?>*$=WV1qktvmo= zg`F+lP0|XN9yzGw?cnn%OVX?n5J&=dPJkec%%cGumE%u?+p)-jG&dTV8WD1bwjBT| z1jBl^A(P-rw9gV9GD8DlW$t#AVr+5m}?+!#Hy5!M)kH86pHyAYCS zJZb>e4Nv?QOENM;&;(C&HuJdk_|(KletK=K5A)6-+_*f{~yX? z{Xp{tZnS^%{hz{oj|eUe=|vr&l)GdF7FQA(PvbH6(x^lphXwz-WGv(7 zxmf*F?;Dr;^IWWd%0)_&K`s^czY6_*O5&cS?ho5a20x5XV@ur5li2#cbK+e9?|r@LKAvjVr@J)_GdG{;$=lJP8>E_(9}=O|Zi3riHG^2KES=MlwCiFBj(*9W z5w%(w@0w>mGcW1y^ zwh9e#x$3UVWm$sMS@{)5Es?;(W=D6|OCeB-weLA%sSfB)4y3_4qLfgSPp3)O0!usB z%G^9Fl_{;g3bQV5dce>0e2~BN7r@mBGRn#G4=rjiCpIdAGUU^PA|6yMwT_(J98leP z)BRa63=+LUKiGAp@DTonQLEA~@z+!y41UyZX6}qT2^Etz1>0_gsq=85c3dSob{ zEdhLe!K&B0u(-M2}bCn<$* zDy>lNs%WOW%X}E@EkFk4w%owAho;|?3u22OqGEJ{-1D{0y_zLUy@P_--&bj~-1B|p zW}?C@@MHS+HAszR;%WmUH``OIR%m$oUUnwh;g}j`2`QDDYi%B*SViOEJ}})o zi&FZYhS_wrecsxIzQ0l>_Mvn|Rw$@EA;QZRnt;pf2=eaOg;Y_@sb$#uB=Nc8#AXs< z_Wh_nzI-)qk2pqzaX4KR{ah9z)UZ!F4etw5B_ub$%C)8kW|aJOw0Xs&^Y)#&((4rt zizZ$^MGz@st=FP}m{ly|+rr0kn;)59?Hu4H&+jCunJ)U)nD_UL?%n@rO2|O%z??35 zBo7hd5y}P(<xPMjsamw| zK2o{poo<=x0TUtzG!NYI@vPNJfVH(o=dZfC zttn?pjlJzZ;e8{xDfu(ASGAP5YyM{fuA0ySyx6yX)mkVM%XpYF@m05eo?M*+oQk$`-tX<=*${HZK~Cpr25{c38I$^ z_7!~*XWJarF1n$wQHBqn_FwmIeL_8fr?d8IRh0~|%otd>Ub64}F+(RTdsiJkdVT~d z7GCR#hmVYm9Q1vtU>3$<5Bp_JejI%cxrrMG*Yt0PtUt@^`4z%-2%&OgnH@~Rds8Mj zo`iy?IA~gTJZyO(dp3B_J%iyWJ!`a7iC^6Hndw^fqb=`(+|9OE-!v}#BW`2m3Fi#o zYD$HNF!TJg_I6h<-M;MfPpbPy^Rp^Z_g%wCx6m2CN%@%@D`Ya6)AYrtd5mw}CwKND zOuf{f3WO8*0Pl2%8Xp!ArSo4MW8np@m3t~WbsQB_AmD*)iR09>(QRRW)yZkrzwqs( zXm2-3E4C_E>I~Jm7aG@Xk!d4qx}^Kb}z3xYyri`KY{DzJ9yOMBU>tI1k7 za3HV?zB)A3BR(=-`c;EeP;dH_)0Wx1vmvq{3~WErsyD{gmfBs}Q0cC&21;(28*%@hj8&FnalR(h3u@XH}$0zTbXov;<$~k%!j_Z+S+hEaX~@C zv{qEeZ3DSaDSCP*g7t&G&_Bzs_N2yRnj()ZghNR z$H*9VYyo@GR{_8kW4GOkg~=^oJ?;-ffo)jW)wgZ_yDjFr_67zPXexBdfLAd>$eO7) z^DOxd5L8hiJ|@|tbRtn|!;G(;Zp#ZU}Ko;$KGmV{u0*U*No4j6228~b` z(UhgxnzHpl?-Ev8U}{C;N?6nAyWx3t&={oD-W{U}9Kop$X}>3T8=#7ysdt0TOXY1D QOF#H_1Sfo{m0!$%0K4WuRsaA1 literal 0 HcmV?d00001 diff --git a/src/ExtCore.FileStorage.Abstractions/icon.png b/src/ExtCore.FileStorage.Abstractions/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..658aadfa4b42dc9573b7867b99b9d5a0ce54f25b GIT binary patch literal 3149 zcmaJ@c|4SB8-8XGp$_Q`ZKr8uEoR0tjw#D9GnVX2Mu#$Hh8bfPGb2mMgM1*g2s`LHv^}WCMeV^rbUDtg-&wahm?>*$=WV1qktvmo= zg`F+lP0|XN9yzGw?cnn%OVX?n5J&=dPJkec%%cGumE%u?+p)-jG&dTV8WD1bwjBT| z1jBl^A(P-rw9gV9GD8DlW$t#AVr+5m}?+!#Hy5!M)kH86pHyAYCS zJZb>e4Nv?QOENM;&;(C&HuJdk_|(KletK=K5A)6-+_*f{~yX? z{Xp{tZnS^%{hz{oj|eUe=|vr&l)GdF7FQA(PvbH6(x^lphXwz-WGv(7 zxmf*F?;Dr;^IWWd%0)_&K`s^czY6_*O5&cS?ho5a20x5XV@ur5li2#cbK+e9?|r@LKAvjVr@J)_GdG{;$=lJP8>E_(9}=O|Zi3riHG^2KES=MlwCiFBj(*9W z5w%(w@0w>mGcW1y^ zwh9e#x$3UVWm$sMS@{)5Es?;(W=D6|OCeB-weLA%sSfB)4y3_4qLfgSPp3)O0!usB z%G^9Fl_{;g3bQV5dce>0e2~BN7r@mBGRn#G4=rjiCpIdAGUU^PA|6yMwT_(J98leP z)BRa63=+LUKiGAp@DTonQLEA~@z+!y41UyZX6}qT2^Etz1>0_gsq=85c3dSob{ zEdhLe!K&B0u(-M2}bCn<$* zDy>lNs%WOW%X}E@EkFk4w%owAho;|?3u22OqGEJ{-1D{0y_zLUy@P_--&bj~-1B|p zW}?C@@MHS+HAszR;%WmUH``OIR%m$oUUnwh;g}j`2`QDDYi%B*SViOEJ}})o zi&FZYhS_wrecsxIzQ0l>_Mvn|Rw$@EA;QZRnt;pf2=eaOg;Y_@sb$#uB=Nc8#AXs< z_Wh_nzI-)qk2pqzaX4KR{ah9z)UZ!F4etw5B_ub$%C)8kW|aJOw0Xs&^Y)#&((4rt zizZ$^MGz@st=FP}m{ly|+rr0kn;)59?Hu4H&+jCunJ)U)nD_UL?%n@rO2|O%z??35 zBo7hd5y}P(<xPMjsamw| zK2o{poo<=x0TUtzG!NYI@vPNJfVH(o=dZfC zttn?pjlJzZ;e8{xDfu(ASGAP5YyM{fuA0ySyx6yX)mkVM%XpYF@m05eo?M*+oQk$`-tX<=*${HZK~Cpr25{c38I$^ z_7!~*XWJarF1n$wQHBqn_FwmIeL_8fr?d8IRh0~|%otd>Ub64}F+(RTdsiJkdVT~d z7GCR#hmVYm9Q1vtU>3$<5Bp_JejI%cxrrMG*Yt0PtUt@^`4z%-2%&OgnH@~Rds8Mj zo`iy?IA~gTJZyO(dp3B_J%iyWJ!`a7iC^6Hndw^fqb=`(+|9OE-!v}#BW`2m3Fi#o zYD$HNF!TJg_I6h<-M;MfPpbPy^Rp^Z_g%wCx6m2CN%@%@D`Ya6)AYrtd5mw}CwKND zOuf{f3WO8*0Pl2%8Xp!ArSo4MW8np@m3t~WbsQB_AmD*)iR09>(QRRW)yZkrzwqs( zXm2-3E4C_E>I~Jm7aG@Xk!d4qx}^Kb}z3xYyri`KY{DzJ9yOMBU>tI1k7 za3HV?zB)A3BR(=-`c;EeP;dH_)0Wx1vmvq{3~WErsyD{gmfBs}Q0cC&21;(28*%@hj8&FnalR(h3u@XH}$0zTbXov;<$~k%!j_Z+S+hEaX~@C zv{qEeZ3DSaDSCP*g7t&G&_Bzs_N2yRnj()ZghNR z$H*9VYyo@GR{_8kW4GOkg~=^oJ?;-ffo)jW)wgZ_yDjFr_67zPXexBdfLAd>$eO7) z^DOxd5L8hiJ|@|tbRtn|!;G(;Zp#ZU}Ko;$KGmV{u0*U*No4j6228~b` z(UhgxnzHpl?-Ev8U}{C;N?6nAyWx3t&={oD-W{U}9Kop$X}>3T8=#7ysdt0TOXY1D QOF#H_1Sfo{m0!$%0K4WuRsaA1 literal 0 HcmV?d00001 diff --git a/src/ExtCore.FileStorage.Azure/icon.png b/src/ExtCore.FileStorage.Azure/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..658aadfa4b42dc9573b7867b99b9d5a0ce54f25b GIT binary patch literal 3149 zcmaJ@c|4SB8-8XGp$_Q`ZKr8uEoR0tjw#D9GnVX2Mu#$Hh8bfPGb2mMgM1*g2s`LHv^}WCMeV^rbUDtg-&wahm?>*$=WV1qktvmo= zg`F+lP0|XN9yzGw?cnn%OVX?n5J&=dPJkec%%cGumE%u?+p)-jG&dTV8WD1bwjBT| z1jBl^A(P-rw9gV9GD8DlW$t#AVr+5m}?+!#Hy5!M)kH86pHyAYCS zJZb>e4Nv?QOENM;&;(C&HuJdk_|(KletK=K5A)6-+_*f{~yX? z{Xp{tZnS^%{hz{oj|eUe=|vr&l)GdF7FQA(PvbH6(x^lphXwz-WGv(7 zxmf*F?;Dr;^IWWd%0)_&K`s^czY6_*O5&cS?ho5a20x5XV@ur5li2#cbK+e9?|r@LKAvjVr@J)_GdG{;$=lJP8>E_(9}=O|Zi3riHG^2KES=MlwCiFBj(*9W z5w%(w@0w>mGcW1y^ zwh9e#x$3UVWm$sMS@{)5Es?;(W=D6|OCeB-weLA%sSfB)4y3_4qLfgSPp3)O0!usB z%G^9Fl_{;g3bQV5dce>0e2~BN7r@mBGRn#G4=rjiCpIdAGUU^PA|6yMwT_(J98leP z)BRa63=+LUKiGAp@DTonQLEA~@z+!y41UyZX6}qT2^Etz1>0_gsq=85c3dSob{ zEdhLe!K&B0u(-M2}bCn<$* zDy>lNs%WOW%X}E@EkFk4w%owAho;|?3u22OqGEJ{-1D{0y_zLUy@P_--&bj~-1B|p zW}?C@@MHS+HAszR;%WmUH``OIR%m$oUUnwh;g}j`2`QDDYi%B*SViOEJ}})o zi&FZYhS_wrecsxIzQ0l>_Mvn|Rw$@EA;QZRnt;pf2=eaOg;Y_@sb$#uB=Nc8#AXs< z_Wh_nzI-)qk2pqzaX4KR{ah9z)UZ!F4etw5B_ub$%C)8kW|aJOw0Xs&^Y)#&((4rt zizZ$^MGz@st=FP}m{ly|+rr0kn;)59?Hu4H&+jCunJ)U)nD_UL?%n@rO2|O%z??35 zBo7hd5y}P(<xPMjsamw| zK2o{poo<=x0TUtzG!NYI@vPNJfVH(o=dZfC zttn?pjlJzZ;e8{xDfu(ASGAP5YyM{fuA0ySyx6yX)mkVM%XpYF@m05eo?M*+oQk$`-tX<=*${HZK~Cpr25{c38I$^ z_7!~*XWJarF1n$wQHBqn_FwmIeL_8fr?d8IRh0~|%otd>Ub64}F+(RTdsiJkdVT~d z7GCR#hmVYm9Q1vtU>3$<5Bp_JejI%cxrrMG*Yt0PtUt@^`4z%-2%&OgnH@~Rds8Mj zo`iy?IA~gTJZyO(dp3B_J%iyWJ!`a7iC^6Hndw^fqb=`(+|9OE-!v}#BW`2m3Fi#o zYD$HNF!TJg_I6h<-M;MfPpbPy^Rp^Z_g%wCx6m2CN%@%@D`Ya6)AYrtd5mw}CwKND zOuf{f3WO8*0Pl2%8Xp!ArSo4MW8np@m3t~WbsQB_AmD*)iR09>(QRRW)yZkrzwqs( zXm2-3E4C_E>I~Jm7aG@Xk!d4qx}^Kb}z3xYyri`KY{DzJ9yOMBU>tI1k7 za3HV?zB)A3BR(=-`c;EeP;dH_)0Wx1vmvq{3~WErsyD{gmfBs}Q0cC&21;(28*%@hj8&FnalR(h3u@XH}$0zTbXov;<$~k%!j_Z+S+hEaX~@C zv{qEeZ3DSaDSCP*g7t&G&_Bzs_N2yRnj()ZghNR z$H*9VYyo@GR{_8kW4GOkg~=^oJ?;-ffo)jW)wgZ_yDjFr_67zPXexBdfLAd>$eO7) z^DOxd5L8hiJ|@|tbRtn|!;G(;Zp#ZU}Ko;$KGmV{u0*U*No4j6228~b` z(UhgxnzHpl?-Ev8U}{C;N?6nAyWx3t&={oD-W{U}9Kop$X}>3T8=#7ysdt0TOXY1D QOF#H_1Sfo{m0!$%0K4WuRsaA1 literal 0 HcmV?d00001 diff --git a/src/ExtCore.FileStorage.Dropbox/icon.png b/src/ExtCore.FileStorage.Dropbox/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..658aadfa4b42dc9573b7867b99b9d5a0ce54f25b GIT binary patch literal 3149 zcmaJ@c|4SB8-8XGp$_Q`ZKr8uEoR0tjw#D9GnVX2Mu#$Hh8bfPGb2mMgM1*g2s`LHv^}WCMeV^rbUDtg-&wahm?>*$=WV1qktvmo= zg`F+lP0|XN9yzGw?cnn%OVX?n5J&=dPJkec%%cGumE%u?+p)-jG&dTV8WD1bwjBT| z1jBl^A(P-rw9gV9GD8DlW$t#AVr+5m}?+!#Hy5!M)kH86pHyAYCS zJZb>e4Nv?QOENM;&;(C&HuJdk_|(KletK=K5A)6-+_*f{~yX? z{Xp{tZnS^%{hz{oj|eUe=|vr&l)GdF7FQA(PvbH6(x^lphXwz-WGv(7 zxmf*F?;Dr;^IWWd%0)_&K`s^czY6_*O5&cS?ho5a20x5XV@ur5li2#cbK+e9?|r@LKAvjVr@J)_GdG{;$=lJP8>E_(9}=O|Zi3riHG^2KES=MlwCiFBj(*9W z5w%(w@0w>mGcW1y^ zwh9e#x$3UVWm$sMS@{)5Es?;(W=D6|OCeB-weLA%sSfB)4y3_4qLfgSPp3)O0!usB z%G^9Fl_{;g3bQV5dce>0e2~BN7r@mBGRn#G4=rjiCpIdAGUU^PA|6yMwT_(J98leP z)BRa63=+LUKiGAp@DTonQLEA~@z+!y41UyZX6}qT2^Etz1>0_gsq=85c3dSob{ zEdhLe!K&B0u(-M2}bCn<$* zDy>lNs%WOW%X}E@EkFk4w%owAho;|?3u22OqGEJ{-1D{0y_zLUy@P_--&bj~-1B|p zW}?C@@MHS+HAszR;%WmUH``OIR%m$oUUnwh;g}j`2`QDDYi%B*SViOEJ}})o zi&FZYhS_wrecsxIzQ0l>_Mvn|Rw$@EA;QZRnt;pf2=eaOg;Y_@sb$#uB=Nc8#AXs< z_Wh_nzI-)qk2pqzaX4KR{ah9z)UZ!F4etw5B_ub$%C)8kW|aJOw0Xs&^Y)#&((4rt zizZ$^MGz@st=FP}m{ly|+rr0kn;)59?Hu4H&+jCunJ)U)nD_UL?%n@rO2|O%z??35 zBo7hd5y}P(<xPMjsamw| zK2o{poo<=x0TUtzG!NYI@vPNJfVH(o=dZfC zttn?pjlJzZ;e8{xDfu(ASGAP5YyM{fuA0ySyx6yX)mkVM%XpYF@m05eo?M*+oQk$`-tX<=*${HZK~Cpr25{c38I$^ z_7!~*XWJarF1n$wQHBqn_FwmIeL_8fr?d8IRh0~|%otd>Ub64}F+(RTdsiJkdVT~d z7GCR#hmVYm9Q1vtU>3$<5Bp_JejI%cxrrMG*Yt0PtUt@^`4z%-2%&OgnH@~Rds8Mj zo`iy?IA~gTJZyO(dp3B_J%iyWJ!`a7iC^6Hndw^fqb=`(+|9OE-!v}#BW`2m3Fi#o zYD$HNF!TJg_I6h<-M;MfPpbPy^Rp^Z_g%wCx6m2CN%@%@D`Ya6)AYrtd5mw}CwKND zOuf{f3WO8*0Pl2%8Xp!ArSo4MW8np@m3t~WbsQB_AmD*)iR09>(QRRW)yZkrzwqs( zXm2-3E4C_E>I~Jm7aG@Xk!d4qx}^Kb}z3xYyri`KY{DzJ9yOMBU>tI1k7 za3HV?zB)A3BR(=-`c;EeP;dH_)0Wx1vmvq{3~WErsyD{gmfBs}Q0cC&21;(28*%@hj8&FnalR(h3u@XH}$0zTbXov;<$~k%!j_Z+S+hEaX~@C zv{qEeZ3DSaDSCP*g7t&G&_Bzs_N2yRnj()ZghNR z$H*9VYyo@GR{_8kW4GOkg~=^oJ?;-ffo)jW)wgZ_yDjFr_67zPXexBdfLAd>$eO7) z^DOxd5L8hiJ|@|tbRtn|!;G(;Zp#ZU}Ko;$KGmV{u0*U*No4j6228~b` z(UhgxnzHpl?-Ev8U}{C;N?6nAyWx3t&={oD-W{U}9Kop$X}>3T8=#7ysdt0TOXY1D QOF#H_1Sfo{m0!$%0K4WuRsaA1 literal 0 HcmV?d00001 diff --git a/src/ExtCore.FileStorage.FileSystem/icon.png b/src/ExtCore.FileStorage.FileSystem/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..658aadfa4b42dc9573b7867b99b9d5a0ce54f25b GIT binary patch literal 3149 zcmaJ@c|4SB8-8XGp$_Q`ZKr8uEoR0tjw#D9GnVX2Mu#$Hh8bfPGb2mMgM1*g2s`LHv^}WCMeV^rbUDtg-&wahm?>*$=WV1qktvmo= zg`F+lP0|XN9yzGw?cnn%OVX?n5J&=dPJkec%%cGumE%u?+p)-jG&dTV8WD1bwjBT| z1jBl^A(P-rw9gV9GD8DlW$t#AVr+5m}?+!#Hy5!M)kH86pHyAYCS zJZb>e4Nv?QOENM;&;(C&HuJdk_|(KletK=K5A)6-+_*f{~yX? z{Xp{tZnS^%{hz{oj|eUe=|vr&l)GdF7FQA(PvbH6(x^lphXwz-WGv(7 zxmf*F?;Dr;^IWWd%0)_&K`s^czY6_*O5&cS?ho5a20x5XV@ur5li2#cbK+e9?|r@LKAvjVr@J)_GdG{;$=lJP8>E_(9}=O|Zi3riHG^2KES=MlwCiFBj(*9W z5w%(w@0w>mGcW1y^ zwh9e#x$3UVWm$sMS@{)5Es?;(W=D6|OCeB-weLA%sSfB)4y3_4qLfgSPp3)O0!usB z%G^9Fl_{;g3bQV5dce>0e2~BN7r@mBGRn#G4=rjiCpIdAGUU^PA|6yMwT_(J98leP z)BRa63=+LUKiGAp@DTonQLEA~@z+!y41UyZX6}qT2^Etz1>0_gsq=85c3dSob{ zEdhLe!K&B0u(-M2}bCn<$* zDy>lNs%WOW%X}E@EkFk4w%owAho;|?3u22OqGEJ{-1D{0y_zLUy@P_--&bj~-1B|p zW}?C@@MHS+HAszR;%WmUH``OIR%m$oUUnwh;g}j`2`QDDYi%B*SViOEJ}})o zi&FZYhS_wrecsxIzQ0l>_Mvn|Rw$@EA;QZRnt;pf2=eaOg;Y_@sb$#uB=Nc8#AXs< z_Wh_nzI-)qk2pqzaX4KR{ah9z)UZ!F4etw5B_ub$%C)8kW|aJOw0Xs&^Y)#&((4rt zizZ$^MGz@st=FP}m{ly|+rr0kn;)59?Hu4H&+jCunJ)U)nD_UL?%n@rO2|O%z??35 zBo7hd5y}P(<xPMjsamw| zK2o{poo<=x0TUtzG!NYI@vPNJfVH(o=dZfC zttn?pjlJzZ;e8{xDfu(ASGAP5YyM{fuA0ySyx6yX)mkVM%XpYF@m05eo?M*+oQk$`-tX<=*${HZK~Cpr25{c38I$^ z_7!~*XWJarF1n$wQHBqn_FwmIeL_8fr?d8IRh0~|%otd>Ub64}F+(RTdsiJkdVT~d z7GCR#hmVYm9Q1vtU>3$<5Bp_JejI%cxrrMG*Yt0PtUt@^`4z%-2%&OgnH@~Rds8Mj zo`iy?IA~gTJZyO(dp3B_J%iyWJ!`a7iC^6Hndw^fqb=`(+|9OE-!v}#BW`2m3Fi#o zYD$HNF!TJg_I6h<-M;MfPpbPy^Rp^Z_g%wCx6m2CN%@%@D`Ya6)AYrtd5mw}CwKND zOuf{f3WO8*0Pl2%8Xp!ArSo4MW8np@m3t~WbsQB_AmD*)iR09>(QRRW)yZkrzwqs( zXm2-3E4C_E>I~Jm7aG@Xk!d4qx}^Kb}z3xYyri`KY{DzJ9yOMBU>tI1k7 za3HV?zB)A3BR(=-`c;EeP;dH_)0Wx1vmvq{3~WErsyD{gmfBs}Q0cC&21;(28*%@hj8&FnalR(h3u@XH}$0zTbXov;<$~k%!j_Z+S+hEaX~@C zv{qEeZ3DSaDSCP*g7t&G&_Bzs_N2yRnj()ZghNR z$H*9VYyo@GR{_8kW4GOkg~=^oJ?;-ffo)jW)wgZ_yDjFr_67zPXexBdfLAd>$eO7) z^DOxd5L8hiJ|@|tbRtn|!;G(;Zp#ZU}Ko;$KGmV{u0*U*No4j6228~b` z(UhgxnzHpl?-Ev8U}{C;N?6nAyWx3t&={oD-W{U}9Kop$X}>3T8=#7ysdt0TOXY1D QOF#H_1Sfo{m0!$%0K4WuRsaA1 literal 0 HcmV?d00001 diff --git a/src/ExtCore.FileStorage/icon.png b/src/ExtCore.FileStorage/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..658aadfa4b42dc9573b7867b99b9d5a0ce54f25b GIT binary patch literal 3149 zcmaJ@c|4SB8-8XGp$_Q`ZKr8uEoR0tjw#D9GnVX2Mu#$Hh8bfPGb2mMgM1*g2s`LHv^}WCMeV^rbUDtg-&wahm?>*$=WV1qktvmo= zg`F+lP0|XN9yzGw?cnn%OVX?n5J&=dPJkec%%cGumE%u?+p)-jG&dTV8WD1bwjBT| z1jBl^A(P-rw9gV9GD8DlW$t#AVr+5m}?+!#Hy5!M)kH86pHyAYCS zJZb>e4Nv?QOENM;&;(C&HuJdk_|(KletK=K5A)6-+_*f{~yX? z{Xp{tZnS^%{hz{oj|eUe=|vr&l)GdF7FQA(PvbH6(x^lphXwz-WGv(7 zxmf*F?;Dr;^IWWd%0)_&K`s^czY6_*O5&cS?ho5a20x5XV@ur5li2#cbK+e9?|r@LKAvjVr@J)_GdG{;$=lJP8>E_(9}=O|Zi3riHG^2KES=MlwCiFBj(*9W z5w%(w@0w>mGcW1y^ zwh9e#x$3UVWm$sMS@{)5Es?;(W=D6|OCeB-weLA%sSfB)4y3_4qLfgSPp3)O0!usB z%G^9Fl_{;g3bQV5dce>0e2~BN7r@mBGRn#G4=rjiCpIdAGUU^PA|6yMwT_(J98leP z)BRa63=+LUKiGAp@DTonQLEA~@z+!y41UyZX6}qT2^Etz1>0_gsq=85c3dSob{ zEdhLe!K&B0u(-M2}bCn<$* zDy>lNs%WOW%X}E@EkFk4w%owAho;|?3u22OqGEJ{-1D{0y_zLUy@P_--&bj~-1B|p zW}?C@@MHS+HAszR;%WmUH``OIR%m$oUUnwh;g}j`2`QDDYi%B*SViOEJ}})o zi&FZYhS_wrecsxIzQ0l>_Mvn|Rw$@EA;QZRnt;pf2=eaOg;Y_@sb$#uB=Nc8#AXs< z_Wh_nzI-)qk2pqzaX4KR{ah9z)UZ!F4etw5B_ub$%C)8kW|aJOw0Xs&^Y)#&((4rt zizZ$^MGz@st=FP}m{ly|+rr0kn;)59?Hu4H&+jCunJ)U)nD_UL?%n@rO2|O%z??35 zBo7hd5y}P(<xPMjsamw| zK2o{poo<=x0TUtzG!NYI@vPNJfVH(o=dZfC zttn?pjlJzZ;e8{xDfu(ASGAP5YyM{fuA0ySyx6yX)mkVM%XpYF@m05eo?M*+oQk$`-tX<=*${HZK~Cpr25{c38I$^ z_7!~*XWJarF1n$wQHBqn_FwmIeL_8fr?d8IRh0~|%otd>Ub64}F+(RTdsiJkdVT~d z7GCR#hmVYm9Q1vtU>3$<5Bp_JejI%cxrrMG*Yt0PtUt@^`4z%-2%&OgnH@~Rds8Mj zo`iy?IA~gTJZyO(dp3B_J%iyWJ!`a7iC^6Hndw^fqb=`(+|9OE-!v}#BW`2m3Fi#o zYD$HNF!TJg_I6h<-M;MfPpbPy^Rp^Z_g%wCx6m2CN%@%@D`Ya6)AYrtd5mw}CwKND zOuf{f3WO8*0Pl2%8Xp!ArSo4MW8np@m3t~WbsQB_AmD*)iR09>(QRRW)yZkrzwqs( zXm2-3E4C_E>I~Jm7aG@Xk!d4qx}^Kb}z3xYyri`KY{DzJ9yOMBU>tI1k7 za3HV?zB)A3BR(=-`c;EeP;dH_)0Wx1vmvq{3~WErsyD{gmfBs}Q0cC&21;(28*%@hj8&FnalR(h3u@XH}$0zTbXov;<$~k%!j_Z+S+hEaX~@C zv{qEeZ3DSaDSCP*g7t&G&_Bzs_N2yRnj()ZghNR z$H*9VYyo@GR{_8kW4GOkg~=^oJ?;-ffo)jW)wgZ_yDjFr_67zPXexBdfLAd>$eO7) z^DOxd5L8hiJ|@|tbRtn|!;G(;Zp#ZU}Ko;$KGmV{u0*U*No4j6228~b` z(UhgxnzHpl?-Ev8U}{C;N?6nAyWx3t&={oD-W{U}9Kop$X}>3T8=#7ysdt0TOXY1D QOF#H_1Sfo{m0!$%0K4WuRsaA1 literal 0 HcmV?d00001 diff --git a/src/ExtCore.Infrastructure/icon.png b/src/ExtCore.Infrastructure/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..658aadfa4b42dc9573b7867b99b9d5a0ce54f25b GIT binary patch literal 3149 zcmaJ@c|4SB8-8XGp$_Q`ZKr8uEoR0tjw#D9GnVX2Mu#$Hh8bfPGb2mMgM1*g2s`LHv^}WCMeV^rbUDtg-&wahm?>*$=WV1qktvmo= zg`F+lP0|XN9yzGw?cnn%OVX?n5J&=dPJkec%%cGumE%u?+p)-jG&dTV8WD1bwjBT| z1jBl^A(P-rw9gV9GD8DlW$t#AVr+5m}?+!#Hy5!M)kH86pHyAYCS zJZb>e4Nv?QOENM;&;(C&HuJdk_|(KletK=K5A)6-+_*f{~yX? z{Xp{tZnS^%{hz{oj|eUe=|vr&l)GdF7FQA(PvbH6(x^lphXwz-WGv(7 zxmf*F?;Dr;^IWWd%0)_&K`s^czY6_*O5&cS?ho5a20x5XV@ur5li2#cbK+e9?|r@LKAvjVr@J)_GdG{;$=lJP8>E_(9}=O|Zi3riHG^2KES=MlwCiFBj(*9W z5w%(w@0w>mGcW1y^ zwh9e#x$3UVWm$sMS@{)5Es?;(W=D6|OCeB-weLA%sSfB)4y3_4qLfgSPp3)O0!usB z%G^9Fl_{;g3bQV5dce>0e2~BN7r@mBGRn#G4=rjiCpIdAGUU^PA|6yMwT_(J98leP z)BRa63=+LUKiGAp@DTonQLEA~@z+!y41UyZX6}qT2^Etz1>0_gsq=85c3dSob{ zEdhLe!K&B0u(-M2}bCn<$* zDy>lNs%WOW%X}E@EkFk4w%owAho;|?3u22OqGEJ{-1D{0y_zLUy@P_--&bj~-1B|p zW}?C@@MHS+HAszR;%WmUH``OIR%m$oUUnwh;g}j`2`QDDYi%B*SViOEJ}})o zi&FZYhS_wrecsxIzQ0l>_Mvn|Rw$@EA;QZRnt;pf2=eaOg;Y_@sb$#uB=Nc8#AXs< z_Wh_nzI-)qk2pqzaX4KR{ah9z)UZ!F4etw5B_ub$%C)8kW|aJOw0Xs&^Y)#&((4rt zizZ$^MGz@st=FP}m{ly|+rr0kn;)59?Hu4H&+jCunJ)U)nD_UL?%n@rO2|O%z??35 zBo7hd5y}P(<xPMjsamw| zK2o{poo<=x0TUtzG!NYI@vPNJfVH(o=dZfC zttn?pjlJzZ;e8{xDfu(ASGAP5YyM{fuA0ySyx6yX)mkVM%XpYF@m05eo?M*+oQk$`-tX<=*${HZK~Cpr25{c38I$^ z_7!~*XWJarF1n$wQHBqn_FwmIeL_8fr?d8IRh0~|%otd>Ub64}F+(RTdsiJkdVT~d z7GCR#hmVYm9Q1vtU>3$<5Bp_JejI%cxrrMG*Yt0PtUt@^`4z%-2%&OgnH@~Rds8Mj zo`iy?IA~gTJZyO(dp3B_J%iyWJ!`a7iC^6Hndw^fqb=`(+|9OE-!v}#BW`2m3Fi#o zYD$HNF!TJg_I6h<-M;MfPpbPy^Rp^Z_g%wCx6m2CN%@%@D`Ya6)AYrtd5mw}CwKND zOuf{f3WO8*0Pl2%8Xp!ArSo4MW8np@m3t~WbsQB_AmD*)iR09>(QRRW)yZkrzwqs( zXm2-3E4C_E>I~Jm7aG@Xk!d4qx}^Kb}z3xYyri`KY{DzJ9yOMBU>tI1k7 za3HV?zB)A3BR(=-`c;EeP;dH_)0Wx1vmvq{3~WErsyD{gmfBs}Q0cC&21;(28*%@hj8&FnalR(h3u@XH}$0zTbXov;<$~k%!j_Z+S+hEaX~@C zv{qEeZ3DSaDSCP*g7t&G&_Bzs_N2yRnj()ZghNR z$H*9VYyo@GR{_8kW4GOkg~=^oJ?;-ffo)jW)wgZ_yDjFr_67zPXexBdfLAd>$eO7) z^DOxd5L8hiJ|@|tbRtn|!;G(;Zp#ZU}Ko;$KGmV{u0*U*No4j6228~b` z(UhgxnzHpl?-Ev8U}{C;N?6nAyWx3t&={oD-W{U}9Kop$X}>3T8=#7ysdt0TOXY1D QOF#H_1Sfo{m0!$%0K4WuRsaA1 literal 0 HcmV?d00001 diff --git a/src/ExtCore.Mvc.Infrastructure/icon.png b/src/ExtCore.Mvc.Infrastructure/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..658aadfa4b42dc9573b7867b99b9d5a0ce54f25b GIT binary patch literal 3149 zcmaJ@c|4SB8-8XGp$_Q`ZKr8uEoR0tjw#D9GnVX2Mu#$Hh8bfPGb2mMgM1*g2s`LHv^}WCMeV^rbUDtg-&wahm?>*$=WV1qktvmo= zg`F+lP0|XN9yzGw?cnn%OVX?n5J&=dPJkec%%cGumE%u?+p)-jG&dTV8WD1bwjBT| z1jBl^A(P-rw9gV9GD8DlW$t#AVr+5m}?+!#Hy5!M)kH86pHyAYCS zJZb>e4Nv?QOENM;&;(C&HuJdk_|(KletK=K5A)6-+_*f{~yX? z{Xp{tZnS^%{hz{oj|eUe=|vr&l)GdF7FQA(PvbH6(x^lphXwz-WGv(7 zxmf*F?;Dr;^IWWd%0)_&K`s^czY6_*O5&cS?ho5a20x5XV@ur5li2#cbK+e9?|r@LKAvjVr@J)_GdG{;$=lJP8>E_(9}=O|Zi3riHG^2KES=MlwCiFBj(*9W z5w%(w@0w>mGcW1y^ zwh9e#x$3UVWm$sMS@{)5Es?;(W=D6|OCeB-weLA%sSfB)4y3_4qLfgSPp3)O0!usB z%G^9Fl_{;g3bQV5dce>0e2~BN7r@mBGRn#G4=rjiCpIdAGUU^PA|6yMwT_(J98leP z)BRa63=+LUKiGAp@DTonQLEA~@z+!y41UyZX6}qT2^Etz1>0_gsq=85c3dSob{ zEdhLe!K&B0u(-M2}bCn<$* zDy>lNs%WOW%X}E@EkFk4w%owAho;|?3u22OqGEJ{-1D{0y_zLUy@P_--&bj~-1B|p zW}?C@@MHS+HAszR;%WmUH``OIR%m$oUUnwh;g}j`2`QDDYi%B*SViOEJ}})o zi&FZYhS_wrecsxIzQ0l>_Mvn|Rw$@EA;QZRnt;pf2=eaOg;Y_@sb$#uB=Nc8#AXs< z_Wh_nzI-)qk2pqzaX4KR{ah9z)UZ!F4etw5B_ub$%C)8kW|aJOw0Xs&^Y)#&((4rt zizZ$^MGz@st=FP}m{ly|+rr0kn;)59?Hu4H&+jCunJ)U)nD_UL?%n@rO2|O%z??35 zBo7hd5y}P(<xPMjsamw| zK2o{poo<=x0TUtzG!NYI@vPNJfVH(o=dZfC zttn?pjlJzZ;e8{xDfu(ASGAP5YyM{fuA0ySyx6yX)mkVM%XpYF@m05eo?M*+oQk$`-tX<=*${HZK~Cpr25{c38I$^ z_7!~*XWJarF1n$wQHBqn_FwmIeL_8fr?d8IRh0~|%otd>Ub64}F+(RTdsiJkdVT~d z7GCR#hmVYm9Q1vtU>3$<5Bp_JejI%cxrrMG*Yt0PtUt@^`4z%-2%&OgnH@~Rds8Mj zo`iy?IA~gTJZyO(dp3B_J%iyWJ!`a7iC^6Hndw^fqb=`(+|9OE-!v}#BW`2m3Fi#o zYD$HNF!TJg_I6h<-M;MfPpbPy^Rp^Z_g%wCx6m2CN%@%@D`Ya6)AYrtd5mw}CwKND zOuf{f3WO8*0Pl2%8Xp!ArSo4MW8np@m3t~WbsQB_AmD*)iR09>(QRRW)yZkrzwqs( zXm2-3E4C_E>I~Jm7aG@Xk!d4qx}^Kb}z3xYyri`KY{DzJ9yOMBU>tI1k7 za3HV?zB)A3BR(=-`c;EeP;dH_)0Wx1vmvq{3~WErsyD{gmfBs}Q0cC&21;(28*%@hj8&FnalR(h3u@XH}$0zTbXov;<$~k%!j_Z+S+hEaX~@C zv{qEeZ3DSaDSCP*g7t&G&_Bzs_N2yRnj()ZghNR z$H*9VYyo@GR{_8kW4GOkg~=^oJ?;-ffo)jW)wgZ_yDjFr_67zPXexBdfLAd>$eO7) z^DOxd5L8hiJ|@|tbRtn|!;G(;Zp#ZU}Ko;$KGmV{u0*U*No4j6228~b` z(UhgxnzHpl?-Ev8U}{C;N?6nAyWx3t&={oD-W{U}9Kop$X}>3T8=#7ysdt0TOXY1D QOF#H_1Sfo{m0!$%0K4WuRsaA1 literal 0 HcmV?d00001 diff --git a/src/ExtCore.Mvc/icon.png b/src/ExtCore.Mvc/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..658aadfa4b42dc9573b7867b99b9d5a0ce54f25b GIT binary patch literal 3149 zcmaJ@c|4SB8-8XGp$_Q`ZKr8uEoR0tjw#D9GnVX2Mu#$Hh8bfPGb2mMgM1*g2s`LHv^}WCMeV^rbUDtg-&wahm?>*$=WV1qktvmo= zg`F+lP0|XN9yzGw?cnn%OVX?n5J&=dPJkec%%cGumE%u?+p)-jG&dTV8WD1bwjBT| z1jBl^A(P-rw9gV9GD8DlW$t#AVr+5m}?+!#Hy5!M)kH86pHyAYCS zJZb>e4Nv?QOENM;&;(C&HuJdk_|(KletK=K5A)6-+_*f{~yX? z{Xp{tZnS^%{hz{oj|eUe=|vr&l)GdF7FQA(PvbH6(x^lphXwz-WGv(7 zxmf*F?;Dr;^IWWd%0)_&K`s^czY6_*O5&cS?ho5a20x5XV@ur5li2#cbK+e9?|r@LKAvjVr@J)_GdG{;$=lJP8>E_(9}=O|Zi3riHG^2KES=MlwCiFBj(*9W z5w%(w@0w>mGcW1y^ zwh9e#x$3UVWm$sMS@{)5Es?;(W=D6|OCeB-weLA%sSfB)4y3_4qLfgSPp3)O0!usB z%G^9Fl_{;g3bQV5dce>0e2~BN7r@mBGRn#G4=rjiCpIdAGUU^PA|6yMwT_(J98leP z)BRa63=+LUKiGAp@DTonQLEA~@z+!y41UyZX6}qT2^Etz1>0_gsq=85c3dSob{ zEdhLe!K&B0u(-M2}bCn<$* zDy>lNs%WOW%X}E@EkFk4w%owAho;|?3u22OqGEJ{-1D{0y_zLUy@P_--&bj~-1B|p zW}?C@@MHS+HAszR;%WmUH``OIR%m$oUUnwh;g}j`2`QDDYi%B*SViOEJ}})o zi&FZYhS_wrecsxIzQ0l>_Mvn|Rw$@EA;QZRnt;pf2=eaOg;Y_@sb$#uB=Nc8#AXs< z_Wh_nzI-)qk2pqzaX4KR{ah9z)UZ!F4etw5B_ub$%C)8kW|aJOw0Xs&^Y)#&((4rt zizZ$^MGz@st=FP}m{ly|+rr0kn;)59?Hu4H&+jCunJ)U)nD_UL?%n@rO2|O%z??35 zBo7hd5y}P(<xPMjsamw| zK2o{poo<=x0TUtzG!NYI@vPNJfVH(o=dZfC zttn?pjlJzZ;e8{xDfu(ASGAP5YyM{fuA0ySyx6yX)mkVM%XpYF@m05eo?M*+oQk$`-tX<=*${HZK~Cpr25{c38I$^ z_7!~*XWJarF1n$wQHBqn_FwmIeL_8fr?d8IRh0~|%otd>Ub64}F+(RTdsiJkdVT~d z7GCR#hmVYm9Q1vtU>3$<5Bp_JejI%cxrrMG*Yt0PtUt@^`4z%-2%&OgnH@~Rds8Mj zo`iy?IA~gTJZyO(dp3B_J%iyWJ!`a7iC^6Hndw^fqb=`(+|9OE-!v}#BW`2m3Fi#o zYD$HNF!TJg_I6h<-M;MfPpbPy^Rp^Z_g%wCx6m2CN%@%@D`Ya6)AYrtd5mw}CwKND zOuf{f3WO8*0Pl2%8Xp!ArSo4MW8np@m3t~WbsQB_AmD*)iR09>(QRRW)yZkrzwqs( zXm2-3E4C_E>I~Jm7aG@Xk!d4qx}^Kb}z3xYyri`KY{DzJ9yOMBU>tI1k7 za3HV?zB)A3BR(=-`c;EeP;dH_)0Wx1vmvq{3~WErsyD{gmfBs}Q0cC&21;(28*%@hj8&FnalR(h3u@XH}$0zTbXov;<$~k%!j_Z+S+hEaX~@C zv{qEeZ3DSaDSCP*g7t&G&_Bzs_N2yRnj()ZghNR z$H*9VYyo@GR{_8kW4GOkg~=^oJ?;-ffo)jW)wgZ_yDjFr_67zPXexBdfLAd>$eO7) z^DOxd5L8hiJ|@|tbRtn|!;G(;Zp#ZU}Ko;$KGmV{u0*U*No4j6228~b` z(UhgxnzHpl?-Ev8U}{C;N?6nAyWx3t&={oD-W{U}9Kop$X}>3T8=#7ysdt0TOXY1D QOF#H_1Sfo{m0!$%0K4WuRsaA1 literal 0 HcmV?d00001 diff --git a/src/ExtCore.WebApplication/icon.png b/src/ExtCore.WebApplication/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..658aadfa4b42dc9573b7867b99b9d5a0ce54f25b GIT binary patch literal 3149 zcmaJ@c|4SB8-8XGp$_Q`ZKr8uEoR0tjw#D9GnVX2Mu#$Hh8bfPGb2mMgM1*g2s`LHv^}WCMeV^rbUDtg-&wahm?>*$=WV1qktvmo= zg`F+lP0|XN9yzGw?cnn%OVX?n5J&=dPJkec%%cGumE%u?+p)-jG&dTV8WD1bwjBT| z1jBl^A(P-rw9gV9GD8DlW$t#AVr+5m}?+!#Hy5!M)kH86pHyAYCS zJZb>e4Nv?QOENM;&;(C&HuJdk_|(KletK=K5A)6-+_*f{~yX? z{Xp{tZnS^%{hz{oj|eUe=|vr&l)GdF7FQA(PvbH6(x^lphXwz-WGv(7 zxmf*F?;Dr;^IWWd%0)_&K`s^czY6_*O5&cS?ho5a20x5XV@ur5li2#cbK+e9?|r@LKAvjVr@J)_GdG{;$=lJP8>E_(9}=O|Zi3riHG^2KES=MlwCiFBj(*9W z5w%(w@0w>mGcW1y^ zwh9e#x$3UVWm$sMS@{)5Es?;(W=D6|OCeB-weLA%sSfB)4y3_4qLfgSPp3)O0!usB z%G^9Fl_{;g3bQV5dce>0e2~BN7r@mBGRn#G4=rjiCpIdAGUU^PA|6yMwT_(J98leP z)BRa63=+LUKiGAp@DTonQLEA~@z+!y41UyZX6}qT2^Etz1>0_gsq=85c3dSob{ zEdhLe!K&B0u(-M2}bCn<$* zDy>lNs%WOW%X}E@EkFk4w%owAho;|?3u22OqGEJ{-1D{0y_zLUy@P_--&bj~-1B|p zW}?C@@MHS+HAszR;%WmUH``OIR%m$oUUnwh;g}j`2`QDDYi%B*SViOEJ}})o zi&FZYhS_wrecsxIzQ0l>_Mvn|Rw$@EA;QZRnt;pf2=eaOg;Y_@sb$#uB=Nc8#AXs< z_Wh_nzI-)qk2pqzaX4KR{ah9z)UZ!F4etw5B_ub$%C)8kW|aJOw0Xs&^Y)#&((4rt zizZ$^MGz@st=FP}m{ly|+rr0kn;)59?Hu4H&+jCunJ)U)nD_UL?%n@rO2|O%z??35 zBo7hd5y}P(<xPMjsamw| zK2o{poo<=x0TUtzG!NYI@vPNJfVH(o=dZfC zttn?pjlJzZ;e8{xDfu(ASGAP5YyM{fuA0ySyx6yX)mkVM%XpYF@m05eo?M*+oQk$`-tX<=*${HZK~Cpr25{c38I$^ z_7!~*XWJarF1n$wQHBqn_FwmIeL_8fr?d8IRh0~|%otd>Ub64}F+(RTdsiJkdVT~d z7GCR#hmVYm9Q1vtU>3$<5Bp_JejI%cxrrMG*Yt0PtUt@^`4z%-2%&OgnH@~Rds8Mj zo`iy?IA~gTJZyO(dp3B_J%iyWJ!`a7iC^6Hndw^fqb=`(+|9OE-!v}#BW`2m3Fi#o zYD$HNF!TJg_I6h<-M;MfPpbPy^Rp^Z_g%wCx6m2CN%@%@D`Ya6)AYrtd5mw}CwKND zOuf{f3WO8*0Pl2%8Xp!ArSo4MW8np@m3t~WbsQB_AmD*)iR09>(QRRW)yZkrzwqs( zXm2-3E4C_E>I~Jm7aG@Xk!d4qx}^Kb}z3xYyri`KY{DzJ9yOMBU>tI1k7 za3HV?zB)A3BR(=-`c;EeP;dH_)0Wx1vmvq{3~WErsyD{gmfBs}Q0cC&21;(28*%@hj8&FnalR(h3u@XH}$0zTbXov;<$~k%!j_Z+S+hEaX~@C zv{qEeZ3DSaDSCP*g7t&G&_Bzs_N2yRnj()ZghNR z$H*9VYyo@GR{_8kW4GOkg~=^oJ?;-ffo)jW)wgZ_yDjFr_67zPXexBdfLAd>$eO7) z^DOxd5L8hiJ|@|tbRtn|!;G(;Zp#ZU}Ko;$KGmV{u0*U*No4j6228~b` z(UhgxnzHpl?-Ev8U}{C;N?6nAyWx3t&={oD-W{U}9Kop$X}>3T8=#7ysdt0TOXY1D QOF#H_1Sfo{m0!$%0K4WuRsaA1 literal 0 HcmV?d00001 From e5944e91965dbea422f95e364e99b4158017f065 Mon Sep 17 00:00:00 2001 From: iyilm4z Date: Mon, 26 Dec 2022 16:22:40 +0300 Subject: [PATCH 78/81] Use the latest csharp version and implement its file-scoped namespaces feature --- common.props | 6 +- src/ExtCore.Data.Abstractions/IRepository.cs | 19 +- src/ExtCore.Data.Abstractions/IStorage.cs | 49 +- .../IStorageContext.cs | 15 +- .../StorageContext.cs | 23 +- .../StorageContext.cs | 23 +- .../StorageContext.cs | 23 +- .../StorageContext.cs | 23 +- .../Actions/AddStorageContextAction.cs | 55 +- src/ExtCore.Data.Dapper/Extension.cs | 43 +- src/ExtCore.Data.Dapper/RepositoryBase.cs | 31 +- src/ExtCore.Data.Dapper/Storage.cs | 89 ++- src/ExtCore.Data.Dapper/StorageContextBase.cs | 33 +- .../StorageContextOptions.cs | 17 +- .../IEntity.cs | 13 +- .../StorageContext.cs | 45 +- .../StorageContext.cs | 45 +- .../StorageContext.cs | 45 +- .../StorageContext.cs | 49 +- .../Actions/AddStorageContextAction.cs | 55 +- .../DesignTimeStorageContextFactoryBase.cs | 61 +- src/ExtCore.Data.EntityFramework/Extension.cs | 43 +- .../Extensions/StorageContextExtensions.cs | 27 +- .../IEntityRegistrar.cs | 19 +- .../RepositoryBase.cs | 31 +- src/ExtCore.Data.EntityFramework/Storage.cs | 95 ++- .../StorageContextBase.cs | 53 +- .../StorageContextOptions.cs | 25 +- src/ExtCore.Data/Actions/AddStorageAction.cs | 55 +- src/ExtCore.Data/Extension.cs | 41 +- src/ExtCore.Events/Event.cs | 155 ++-- src/ExtCore.Events/Extension.cs | 41 +- src/ExtCore.Events/IEventHandler.cs | 137 ++-- .../Exceptions/AccessDeniedException.cs | 19 +- .../Exceptions/DirectoryNotFoundException.cs | 19 +- .../Exceptions/FileNotFoundException.cs | 19 +- .../Exceptions/FileStorageException.cs | 19 +- .../Exceptions/PathTooLongException.cs | 19 +- .../FileStorageOptions.cs | 41 +- .../IDirectoryProxy.cs | 119 ++- .../IFileProxy.cs | 173 +++-- .../IFileStorage.cs | 35 +- .../DirectoryProxy.cs | 333 ++++---- src/ExtCore.FileStorage.Azure/FileProxy.cs | 411 +++++----- src/ExtCore.FileStorage.Azure/FileStorage.cs | 67 +- src/ExtCore.FileStorage.Azure/RelativeUrl.cs | 21 +- .../DirectoryProxy.cs | 345 +++++---- src/ExtCore.FileStorage.Dropbox/FileProxy.cs | 425 +++++----- .../FileStorage.cs | 67 +- .../RelativeUrl.cs | 21 +- .../AbsolutePath.cs | 21 +- .../DirectoryProxy.cs | 379 +++++---- .../FileProxy.cs | 731 +++++++++--------- .../FileStorage.cs | 63 +- .../Actions/AddFileStorageAction.cs | 55 +- src/ExtCore.FileStorage/Extension.cs | 41 +- .../Actions/IConfigureAction.cs | 39 +- .../Actions/IConfigureServicesAction.cs | 39 +- src/ExtCore.Infrastructure/ExtensionBase.cs | 49 +- .../ExtensionManager.cs | 451 ++++++----- src/ExtCore.Infrastructure/IExtension.cs | 49 +- .../Actions/IAddMvcAction.cs | 39 +- .../Actions/IUseEndpointsAction.cs | 39 +- src/ExtCore.Mvc/Actions/AddMvcAction.cs | 57 +- .../Actions/AddStaticFilesAction.cs | 65 +- src/ExtCore.Mvc/Actions/UseEndpointsAction.cs | 59 +- src/ExtCore.Mvc/Actions/UseRoutingAction.cs | 43 +- .../Actions/UseStaticFilesAction.cs | 47 +- src/ExtCore.Mvc/Extension.cs | 41 +- .../DefaultAssemblyProvider.cs | 201 +++-- .../ApplicationBuilderExtensions.cs | 35 +- .../IAssemblyProvider.cs | 35 +- 72 files changed, 3073 insertions(+), 3142 deletions(-) diff --git a/common.props b/common.props index 8e498ed..ba9fe54 100644 --- a/common.props +++ b/common.props @@ -4,10 +4,12 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky 8.1.0 - 8.0 + latest icon.png - https://extcore.net/ + https://extcore.net Apache-2.0 + git + https://github.com/ExtCore/ExtCore diff --git a/src/ExtCore.Data.Abstractions/IRepository.cs b/src/ExtCore.Data.Abstractions/IRepository.cs index aa65ad8..afee570 100644 --- a/src/ExtCore.Data.Abstractions/IRepository.cs +++ b/src/ExtCore.Data.Abstractions/IRepository.cs @@ -1,17 +1,16 @@ // Copyright © 2015 Dmitry Sikorsky. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. -namespace ExtCore.Data.Abstractions +namespace ExtCore.Data.Abstractions; + +/// +/// Describes a repository for working with the underlying storage context. +/// +public interface IRepository { /// - /// Describes a repository for working with the underlying storage context. + /// Sets the storage context to work with. /// - public interface IRepository - { - /// - /// Sets the storage context to work with. - /// - /// The storage context to set. - void SetStorageContext(IStorageContext storageContext); - } + /// The storage context to set. + void SetStorageContext(IStorageContext storageContext); } \ No newline at end of file diff --git a/src/ExtCore.Data.Abstractions/IStorage.cs b/src/ExtCore.Data.Abstractions/IStorage.cs index 8f82b7f..778382e 100644 --- a/src/ExtCore.Data.Abstractions/IStorage.cs +++ b/src/ExtCore.Data.Abstractions/IStorage.cs @@ -3,35 +3,34 @@ using System.Threading.Tasks; -namespace ExtCore.Data.Abstractions +namespace ExtCore.Data.Abstractions; + +/// +/// Describes a storage that is implementation of the Unit of Work design pattern with the mechanism +/// of getting the repositories to work with the underlying storage context and committing the changes +/// made by all the repositories. +/// +public interface IStorage { /// - /// Describes a storage that is implementation of the Unit of Work design pattern with the mechanism - /// of getting the repositories to work with the underlying storage context and committing the changes - /// made by all the repositories. + /// Gets the underlying storage context used by this storage. /// - public interface IStorage - { - /// - /// Gets the underlying storage context used by this storage. - /// - IStorageContext StorageContext { get; } + IStorageContext StorageContext { get; } - /// - /// Gets a repository of the given type. - /// - /// The type parameter to find implementation of. - /// - T GetRepository() where T: IRepository; + /// + /// Gets a repository of the given type. + /// + /// The type parameter to find implementation of. + /// + T GetRepository() where T: IRepository; - /// - /// Commits the changes made by all the repositories. - /// - int Save(); + /// + /// Commits the changes made by all the repositories. + /// + int Save(); - /// - /// Asynchronously commits the changes made by all the repositories. - /// - Task SaveAsync(); - } + /// + /// Asynchronously commits the changes made by all the repositories. + /// + Task SaveAsync(); } \ No newline at end of file diff --git a/src/ExtCore.Data.Abstractions/IStorageContext.cs b/src/ExtCore.Data.Abstractions/IStorageContext.cs index b9aa6f2..89055ad 100644 --- a/src/ExtCore.Data.Abstractions/IStorageContext.cs +++ b/src/ExtCore.Data.Abstractions/IStorageContext.cs @@ -1,13 +1,12 @@ // Copyright © 2015 Dmitry Sikorsky. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. -namespace ExtCore.Data.Abstractions +namespace ExtCore.Data.Abstractions; + +/// +/// Describes a storage context that must be shared among all the repositories. Storage context +/// represents concrete storage (for example, SQLite database). +/// +public interface IStorageContext { - /// - /// Describes a storage context that must be shared among all the repositories. Storage context - /// represents concrete storage (for example, SQLite database). - /// - public interface IStorageContext - { - } } \ No newline at end of file diff --git a/src/ExtCore.Data.Dapper.MySql/StorageContext.cs b/src/ExtCore.Data.Dapper.MySql/StorageContext.cs index c02edcd..9ede0bb 100644 --- a/src/ExtCore.Data.Dapper.MySql/StorageContext.cs +++ b/src/ExtCore.Data.Dapper.MySql/StorageContext.cs @@ -3,21 +3,20 @@ using Microsoft.Extensions.Options; -namespace ExtCore.Data.Dapper.MySql +namespace ExtCore.Data.Dapper.MySql; + +/// +/// Implements the IStorageContext interface and represents MySQL database +/// with the Dapper as the ORM. +/// +public class StorageContext : StorageContextBase { /// - /// Implements the IStorageContext interface and represents MySQL database - /// with the Dapper as the ORM. + /// Initializes a new instance of the StorageContext class. /// - public class StorageContext : StorageContextBase + /// The options that are used to connect to the MySQL database. + public StorageContext(IOptions options) + : base(options) { - /// - /// Initializes a new instance of the StorageContext class. - /// - /// The options that are used to connect to the MySQL database. - public StorageContext(IOptions options) - : base(options) - { - } } } \ No newline at end of file diff --git a/src/ExtCore.Data.Dapper.PostgreSql/StorageContext.cs b/src/ExtCore.Data.Dapper.PostgreSql/StorageContext.cs index 64bb69e..0764bca 100644 --- a/src/ExtCore.Data.Dapper.PostgreSql/StorageContext.cs +++ b/src/ExtCore.Data.Dapper.PostgreSql/StorageContext.cs @@ -3,21 +3,20 @@ using Microsoft.Extensions.Options; -namespace ExtCore.Data.Dapper.PostgreSql +namespace ExtCore.Data.Dapper.PostgreSql; + +/// +/// Implements the IStorageContext interface and represents PostgreSQL database +/// with the Dapper as the ORM. +/// +public class StorageContext : StorageContextBase { /// - /// Implements the IStorageContext interface and represents PostgreSQL database - /// with the Dapper as the ORM. + /// Initializes a new instance of the StorageContext class. /// - public class StorageContext : StorageContextBase + /// The options that are used to connect to the PostgreSQL database. + public StorageContext(IOptions options) + : base(options) { - /// - /// Initializes a new instance of the StorageContext class. - /// - /// The options that are used to connect to the PostgreSQL database. - public StorageContext(IOptions options) - : base(options) - { - } } } \ No newline at end of file diff --git a/src/ExtCore.Data.Dapper.SqlServer/StorageContext.cs b/src/ExtCore.Data.Dapper.SqlServer/StorageContext.cs index ef7d86f..afcafc3 100644 --- a/src/ExtCore.Data.Dapper.SqlServer/StorageContext.cs +++ b/src/ExtCore.Data.Dapper.SqlServer/StorageContext.cs @@ -3,21 +3,20 @@ using Microsoft.Extensions.Options; -namespace ExtCore.Data.Dapper.SqlServer +namespace ExtCore.Data.Dapper.SqlServer; + +/// +/// Implements the IStorageContext interface and represents SQL Server database +/// with the Dapper as the ORM. +/// +public class StorageContext : StorageContextBase { /// - /// Implements the IStorageContext interface and represents SQL Server database - /// with the Dapper as the ORM. + /// Initializes a new instance of the StorageContext class. /// - public class StorageContext : StorageContextBase + /// The options that are used to connect to the SQL Server database. + public StorageContext(IOptions options) + : base(options) { - /// - /// Initializes a new instance of the StorageContext class. - /// - /// The options that are used to connect to the SQL Server database. - public StorageContext(IOptions options) - : base(options) - { - } } } \ No newline at end of file diff --git a/src/ExtCore.Data.Dapper.Sqlite/StorageContext.cs b/src/ExtCore.Data.Dapper.Sqlite/StorageContext.cs index 2ea1293..e981d95 100644 --- a/src/ExtCore.Data.Dapper.Sqlite/StorageContext.cs +++ b/src/ExtCore.Data.Dapper.Sqlite/StorageContext.cs @@ -3,21 +3,20 @@ using Microsoft.Extensions.Options; -namespace ExtCore.Data.Dapper.Sqlite +namespace ExtCore.Data.Dapper.Sqlite; + +/// +/// Implements the IStorageContext interface and represents SQLite database +/// with the Dapper as the ORM. +/// +public class StorageContext : StorageContextBase { /// - /// Implements the IStorageContext interface and represents SQLite database - /// with the Dapper as the ORM. + /// Initializes a new instance of the StorageContext class. /// - public class StorageContext : StorageContextBase + /// The options that are used to connect to the SQLite database. + public StorageContext(IOptions options) + : base(options) { - /// - /// Initializes a new instance of the StorageContext class. - /// - /// The options that are used to connect to the SQLite database. - public StorageContext(IOptions options) - : base(options) - { - } } } \ No newline at end of file diff --git a/src/ExtCore.Data.Dapper/Actions/AddStorageContextAction.cs b/src/ExtCore.Data.Dapper/Actions/AddStorageContextAction.cs index e1c6771..827df3f 100644 --- a/src/ExtCore.Data.Dapper/Actions/AddStorageContextAction.cs +++ b/src/ExtCore.Data.Dapper/Actions/AddStorageContextAction.cs @@ -10,41 +10,40 @@ using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; -namespace ExtCore.Data.Dapper.Actions +namespace ExtCore.Data.Dapper.Actions; + +/// +/// Implements the IConfigureServicesAction interface and +/// registers found implementation of the IStorageContext interface inside the DI. +/// +public class AddStorageContextAction : IConfigureServicesAction { /// - /// Implements the IConfigureServicesAction interface and - /// registers found implementation of the IStorageContext interface inside the DI. + /// Priority of the action. The actions will be executed in the order specified by the priority (from smallest to largest). + /// + public int Priority => 1000; + + /// + /// Registers found implementation of the IStorageContext interface inside the DI. /// - public class AddStorageContextAction : IConfigureServicesAction + /// + /// Will be provided by the ExtCore and might be used to register any service inside the DI. + /// + /// + /// Will be provided by the ExtCore and might be used to get any service that is registered inside the DI at this moment. + /// + public void Execute(IServiceCollection services, IServiceProvider serviceProvider) { - /// - /// Priority of the action. The actions will be executed in the order specified by the priority (from smallest to largest). - /// - public int Priority => 1000; + Type type = ExtensionManager.GetImplementations()?.FirstOrDefault(t => !t.GetTypeInfo().IsAbstract); - /// - /// Registers found implementation of the IStorageContext interface inside the DI. - /// - /// - /// Will be provided by the ExtCore and might be used to register any service inside the DI. - /// - /// - /// Will be provided by the ExtCore and might be used to get any service that is registered inside the DI at this moment. - /// - public void Execute(IServiceCollection services, IServiceProvider serviceProvider) + if (type == null) { - Type type = ExtensionManager.GetImplementations()?.FirstOrDefault(t => !t.GetTypeInfo().IsAbstract); + ILogger logger = serviceProvider.GetService().CreateLogger("ExtCore.Data.Dapper"); - if (type == null) - { - ILogger logger = serviceProvider.GetService().CreateLogger("ExtCore.Data.Dapper"); - - logger.LogError("Implementation of ExtCore.Data.Abstractions.IStorageContext not found"); - return; - } - - services.AddScoped(typeof(IStorageContext), type); + logger.LogError("Implementation of ExtCore.Data.Abstractions.IStorageContext not found"); + return; } + + services.AddScoped(typeof(IStorageContext), type); } } \ No newline at end of file diff --git a/src/ExtCore.Data.Dapper/Extension.cs b/src/ExtCore.Data.Dapper/Extension.cs index ee95334..9de1801 100644 --- a/src/ExtCore.Data.Dapper/Extension.cs +++ b/src/ExtCore.Data.Dapper/Extension.cs @@ -3,32 +3,31 @@ using ExtCore.Infrastructure; -namespace ExtCore.Data.Dapper +namespace ExtCore.Data.Dapper; + +/// +/// Overrides the ExtensionBase class and provides the +/// ExtCore.Data.Dapper extension information. +/// +public class Extension : ExtensionBase { /// - /// Overrides the ExtensionBase class and provides the - /// ExtCore.Data.Dapper extension information. + /// Gets the name of the extension. /// - public class Extension : ExtensionBase - { - /// - /// Gets the name of the extension. - /// - public override string Name => "ExtCore.Data.Dapper"; + public override string Name => "ExtCore.Data.Dapper"; - /// - /// Gets the URL of the extension. - /// - public override string Url => "https://extcore.net/"; + /// + /// Gets the URL of the extension. + /// + public override string Url => "https://extcore.net/"; - /// - /// Gets the version of the extension. - /// - public override string Version => "8.1.0"; + /// + /// Gets the version of the extension. + /// + public override string Version => "8.1.0"; - /// - /// Gets the authors of the extension (separated by commas). - /// - public override string Authors => "Dmitry Sikorsky"; - } + /// + /// Gets the authors of the extension (separated by commas). + /// + public override string Authors => "Dmitry Sikorsky"; } \ No newline at end of file diff --git a/src/ExtCore.Data.Dapper/RepositoryBase.cs b/src/ExtCore.Data.Dapper/RepositoryBase.cs index ff57599..f94302b 100644 --- a/src/ExtCore.Data.Dapper/RepositoryBase.cs +++ b/src/ExtCore.Data.Dapper/RepositoryBase.cs @@ -4,25 +4,24 @@ using ExtCore.Data.Abstractions; using ExtCore.Data.Entities.Abstractions; -namespace ExtCore.Data.Dapper +namespace ExtCore.Data.Dapper; + +/// +/// Implements the IRepository interface and represents default repository behavior. +/// +/// The entity type this repository operates. +public abstract class RepositoryBase : IRepository where TEntity : class, IEntity { + protected IStorageContext storageContext; + protected string connectionString; + /// - /// Implements the IRepository interface and represents default repository behavior. + /// Sets the Dapper storage context that represents the physical storage to work with. /// - /// The entity type this repository operates. - public abstract class RepositoryBase : IRepository where TEntity : class, IEntity + /// The Dapper storage context to set. + public void SetStorageContext(IStorageContext storageContext) { - protected IStorageContext storageContext; - protected string connectionString; - - /// - /// Sets the Dapper storage context that represents the physical storage to work with. - /// - /// The Dapper storage context to set. - public void SetStorageContext(IStorageContext storageContext) - { - this.storageContext = storageContext; - this.connectionString = (storageContext as StorageContextBase).ConnectionString; - } + this.storageContext = storageContext; + this.connectionString = (storageContext as StorageContextBase).ConnectionString; } } \ No newline at end of file diff --git a/src/ExtCore.Data.Dapper/Storage.cs b/src/ExtCore.Data.Dapper/Storage.cs index 6744728..2d5a3a2 100644 --- a/src/ExtCore.Data.Dapper/Storage.cs +++ b/src/ExtCore.Data.Dapper/Storage.cs @@ -5,54 +5,53 @@ using ExtCore.Data.Abstractions; using ExtCore.Infrastructure; -namespace ExtCore.Data.Dapper +namespace ExtCore.Data.Dapper; + +/// +/// Implements the IStorage interface and represents implementation of the +/// Unit of Work design pattern with the mechanism of getting the repositories to work with the underlying +/// Dapper storage context and committing the changes made by all the repositories. +/// +public class Storage : IStorage { /// - /// Implements the IStorage interface and represents implementation of the - /// Unit of Work design pattern with the mechanism of getting the repositories to work with the underlying - /// Dapper storage context and committing the changes made by all the repositories. + /// Gets the Dapper storage context. /// - public class Storage : IStorage + public IStorageContext StorageContext { get; private set; } + + public Storage(IStorageContext storageContext) + { + this.StorageContext = storageContext; + } + + /// + /// Gets a repository of the given type. + /// + /// The type parameter to find implementation of. + /// + public TRepository GetRepository() where TRepository : IRepository + { + TRepository repository = ExtensionManager.GetInstance(); + + if (repository != null) + repository.SetStorageContext(this.StorageContext); + + return repository; + } + + /// + /// Commits the changes made by all the repositories. + /// + public int Save() + { + return -1; + } + + /// + /// Asynchronously commits the changes made by all the repositories. + /// + public async Task SaveAsync() { - /// - /// Gets the Dapper storage context. - /// - public IStorageContext StorageContext { get; private set; } - - public Storage(IStorageContext storageContext) - { - this.StorageContext = storageContext; - } - - /// - /// Gets a repository of the given type. - /// - /// The type parameter to find implementation of. - /// - public TRepository GetRepository() where TRepository : IRepository - { - TRepository repository = ExtensionManager.GetInstance(); - - if (repository != null) - repository.SetStorageContext(this.StorageContext); - - return repository; - } - - /// - /// Commits the changes made by all the repositories. - /// - public int Save() - { - return -1; - } - - /// - /// Asynchronously commits the changes made by all the repositories. - /// - public async Task SaveAsync() - { - return -1; - } + return -1; } } \ No newline at end of file diff --git a/src/ExtCore.Data.Dapper/StorageContextBase.cs b/src/ExtCore.Data.Dapper/StorageContextBase.cs index d8677bc..e8d7872 100644 --- a/src/ExtCore.Data.Dapper/StorageContextBase.cs +++ b/src/ExtCore.Data.Dapper/StorageContextBase.cs @@ -4,26 +4,25 @@ using ExtCore.Data.Abstractions; using Microsoft.Extensions.Options; -namespace ExtCore.Data.Dapper +namespace ExtCore.Data.Dapper; + +/// +/// Implements the IStorageContext interface and represents the physical storage +/// with the Dapper Core as the ORM. +/// +public abstract class StorageContextBase : IStorageContext { /// - /// Implements the IStorageContext interface and represents the physical storage - /// with the Dapper Core as the ORM. + /// The connection string that is used to connect to the physical storage. /// - public abstract class StorageContextBase : IStorageContext - { - /// - /// The connection string that is used to connect to the physical storage. - /// - public string ConnectionString { get; private set; } + public string ConnectionString { get; private set; } - /// - /// Initializes a new instance of the StorageContext class. - /// - /// The connection string that is used to connect to the physical storage. - public StorageContextBase(IOptions options) - { - this.ConnectionString = options.Value.ConnectionString; - } + /// + /// Initializes a new instance of the StorageContext class. + /// + /// The connection string that is used to connect to the physical storage. + public StorageContextBase(IOptions options) + { + this.ConnectionString = options.Value.ConnectionString; } } \ No newline at end of file diff --git a/src/ExtCore.Data.Dapper/StorageContextOptions.cs b/src/ExtCore.Data.Dapper/StorageContextOptions.cs index e22b924..5691a6b 100644 --- a/src/ExtCore.Data.Dapper/StorageContextOptions.cs +++ b/src/ExtCore.Data.Dapper/StorageContextOptions.cs @@ -1,16 +1,15 @@ // Copyright © 2017 Dmitry Sikorsky. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. -namespace ExtCore.Data.Dapper +namespace ExtCore.Data.Dapper; + +/// +/// Represents Dapper storage context options. +/// +public class StorageContextOptions { /// - /// Represents Dapper storage context options. + /// The connection string that is used to connect to the physical storage. /// - public class StorageContextOptions - { - /// - /// The connection string that is used to connect to the physical storage. - /// - public string ConnectionString { get; set; } - } + public string ConnectionString { get; set; } } \ No newline at end of file diff --git a/src/ExtCore.Data.Entities.Abstractions/IEntity.cs b/src/ExtCore.Data.Entities.Abstractions/IEntity.cs index b6c8236..2208af2 100644 --- a/src/ExtCore.Data.Entities.Abstractions/IEntity.cs +++ b/src/ExtCore.Data.Entities.Abstractions/IEntity.cs @@ -1,12 +1,11 @@ // Copyright © 2015 Dmitry Sikorsky. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. -namespace ExtCore.Data.Entities.Abstractions +namespace ExtCore.Data.Entities.Abstractions; + +/// +/// Describes an entity. +/// +public interface IEntity { - /// - /// Describes an entity. - /// - public interface IEntity - { - } } \ No newline at end of file diff --git a/src/ExtCore.Data.EntityFramework.MySql/StorageContext.cs b/src/ExtCore.Data.EntityFramework.MySql/StorageContext.cs index 38fba6e..3daec68 100644 --- a/src/ExtCore.Data.EntityFramework.MySql/StorageContext.cs +++ b/src/ExtCore.Data.EntityFramework.MySql/StorageContext.cs @@ -4,34 +4,33 @@ using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Options; -namespace ExtCore.Data.EntityFramework.MySql +namespace ExtCore.Data.EntityFramework.MySql; + +/// +/// Implements the IStorageContext interface and represents MySQL database +/// with the Entity Framework Core as the ORM. +/// +public class StorageContext : StorageContextBase { /// - /// Implements the IStorageContext interface and represents MySQL database - /// with the Entity Framework Core as the ORM. + /// Initializes a new instance of the StorageContext class. /// - public class StorageContext : StorageContextBase - { - /// - /// Initializes a new instance of the StorageContext class. - /// - /// The options that are used to connect to the MySQL database. - public StorageContext(IOptions options) : base(options) { } + /// The options that are used to connect to the MySQL database. + public StorageContext(IOptions options) : base(options) { } - protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) - { - base.OnConfiguring(optionsBuilder); + protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) + { + base.OnConfiguring(optionsBuilder); - if (string.IsNullOrEmpty(this.MigrationsAssembly)) - optionsBuilder.UseMySQL(this.ConnectionString); + if (string.IsNullOrEmpty(this.MigrationsAssembly)) + optionsBuilder.UseMySQL(this.ConnectionString); - else optionsBuilder.UseMySQL( - this.ConnectionString, - options => - { - options.MigrationsAssembly(this.MigrationsAssembly); - } - ); - } + else optionsBuilder.UseMySQL( + this.ConnectionString, + options => + { + options.MigrationsAssembly(this.MigrationsAssembly); + } + ); } } \ No newline at end of file diff --git a/src/ExtCore.Data.EntityFramework.PostgreSql/StorageContext.cs b/src/ExtCore.Data.EntityFramework.PostgreSql/StorageContext.cs index 9656f21..099d407 100644 --- a/src/ExtCore.Data.EntityFramework.PostgreSql/StorageContext.cs +++ b/src/ExtCore.Data.EntityFramework.PostgreSql/StorageContext.cs @@ -4,34 +4,33 @@ using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Options; -namespace ExtCore.Data.EntityFramework.PostgreSql +namespace ExtCore.Data.EntityFramework.PostgreSql; + +/// +/// Implements the IStorageContext interface and represents PostgreSQL database +/// with the Entity Framework Core as the ORM. +/// +public class StorageContext : StorageContextBase { /// - /// Implements the IStorageContext interface and represents PostgreSQL database - /// with the Entity Framework Core as the ORM. + /// Initializes a new instance of the StorageContext class. /// - public class StorageContext : StorageContextBase - { - /// - /// Initializes a new instance of the StorageContext class. - /// - /// The options that are used to connect to the PostgreSQL database. - public StorageContext(IOptions options) : base(options) { } + /// The options that are used to connect to the PostgreSQL database. + public StorageContext(IOptions options) : base(options) { } - protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) - { - base.OnConfiguring(optionsBuilder); + protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) + { + base.OnConfiguring(optionsBuilder); - if (string.IsNullOrEmpty(this.MigrationsAssembly)) - optionsBuilder.UseNpgsql(this.ConnectionString); + if (string.IsNullOrEmpty(this.MigrationsAssembly)) + optionsBuilder.UseNpgsql(this.ConnectionString); - else optionsBuilder.UseNpgsql( - this.ConnectionString, - options => - { - options.MigrationsAssembly(this.MigrationsAssembly); - } - ); - } + else optionsBuilder.UseNpgsql( + this.ConnectionString, + options => + { + options.MigrationsAssembly(this.MigrationsAssembly); + } + ); } } \ No newline at end of file diff --git a/src/ExtCore.Data.EntityFramework.SqlServer/StorageContext.cs b/src/ExtCore.Data.EntityFramework.SqlServer/StorageContext.cs index 0852b03..1665173 100644 --- a/src/ExtCore.Data.EntityFramework.SqlServer/StorageContext.cs +++ b/src/ExtCore.Data.EntityFramework.SqlServer/StorageContext.cs @@ -4,34 +4,33 @@ using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Options; -namespace ExtCore.Data.EntityFramework.SqlServer +namespace ExtCore.Data.EntityFramework.SqlServer; + +/// +/// Implements the IStorageContext interface and represents SQL Server database +/// with the Entity Framework Core as the ORM. +/// +public class StorageContext : StorageContextBase { /// - /// Implements the IStorageContext interface and represents SQL Server database - /// with the Entity Framework Core as the ORM. + /// Initializes a new instance of the StorageContext class. /// - public class StorageContext : StorageContextBase - { - /// - /// Initializes a new instance of the StorageContext class. - /// - /// The options that are used to connect to the SQL Server database. - public StorageContext(IOptions options) : base(options) { } + /// The options that are used to connect to the SQL Server database. + public StorageContext(IOptions options) : base(options) { } - protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) - { - base.OnConfiguring(optionsBuilder); + protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) + { + base.OnConfiguring(optionsBuilder); - if (string.IsNullOrEmpty(this.MigrationsAssembly)) - optionsBuilder.UseSqlServer(this.ConnectionString); + if (string.IsNullOrEmpty(this.MigrationsAssembly)) + optionsBuilder.UseSqlServer(this.ConnectionString); - else optionsBuilder.UseSqlServer( - this.ConnectionString, - options => - { - options.MigrationsAssembly(this.MigrationsAssembly); - } - ); - } + else optionsBuilder.UseSqlServer( + this.ConnectionString, + options => + { + options.MigrationsAssembly(this.MigrationsAssembly); + } + ); } } \ No newline at end of file diff --git a/src/ExtCore.Data.EntityFramework.Sqlite/StorageContext.cs b/src/ExtCore.Data.EntityFramework.Sqlite/StorageContext.cs index d288f0d..90ee51a 100644 --- a/src/ExtCore.Data.EntityFramework.Sqlite/StorageContext.cs +++ b/src/ExtCore.Data.EntityFramework.Sqlite/StorageContext.cs @@ -4,37 +4,36 @@ using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Options; -namespace ExtCore.Data.EntityFramework.Sqlite +namespace ExtCore.Data.EntityFramework.Sqlite; + +/// +/// Implements the IStorageContext interface and represents SQLite database +/// with the Entity Framework Core as the ORM. +/// +public class StorageContext : StorageContextBase { /// - /// Implements the IStorageContext interface and represents SQLite database - /// with the Entity Framework Core as the ORM. + /// Initializes a new instance of the StorageContext class. /// - public class StorageContext : StorageContextBase + /// The options that are used to connect to the SQLite database. + public StorageContext(IOptions options) + : base(options) { - /// - /// Initializes a new instance of the StorageContext class. - /// - /// The options that are used to connect to the SQLite database. - public StorageContext(IOptions options) - : base(options) - { - } + } - protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) - { - base.OnConfiguring(optionsBuilder); + protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) + { + base.OnConfiguring(optionsBuilder); - if (string.IsNullOrEmpty(this.MigrationsAssembly)) - optionsBuilder.UseSqlite(this.ConnectionString); + if (string.IsNullOrEmpty(this.MigrationsAssembly)) + optionsBuilder.UseSqlite(this.ConnectionString); - else optionsBuilder.UseSqlite( - this.ConnectionString, - options => - { - options.MigrationsAssembly(this.MigrationsAssembly); - } - ); - } + else optionsBuilder.UseSqlite( + this.ConnectionString, + options => + { + options.MigrationsAssembly(this.MigrationsAssembly); + } + ); } } \ No newline at end of file diff --git a/src/ExtCore.Data.EntityFramework/Actions/AddStorageContextAction.cs b/src/ExtCore.Data.EntityFramework/Actions/AddStorageContextAction.cs index 8b0b45c..045e870 100644 --- a/src/ExtCore.Data.EntityFramework/Actions/AddStorageContextAction.cs +++ b/src/ExtCore.Data.EntityFramework/Actions/AddStorageContextAction.cs @@ -10,41 +10,40 @@ using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; -namespace ExtCore.Data.EntityFramework.Actions +namespace ExtCore.Data.EntityFramework.Actions; + +/// +/// Implements the IConfigureServicesAction interface and +/// registers found implementation of the IStorageContext interface inside the DI. +/// +public class AddStorageContextAction : IConfigureServicesAction { /// - /// Implements the IConfigureServicesAction interface and - /// registers found implementation of the IStorageContext interface inside the DI. + /// Priority of the action. The actions will be executed in the order specified by the priority (from smallest to largest). + /// + public int Priority => 1000; + + /// + /// Registers found implementation of the IStorageContext interface inside the DI. /// - public class AddStorageContextAction : IConfigureServicesAction + /// + /// Will be provided by the ExtCore and might be used to register any service inside the DI. + /// + /// + /// Will be provided by the ExtCore and might be used to get any service that is registered inside the DI at this moment. + /// + public void Execute(IServiceCollection services, IServiceProvider serviceProvider) { - /// - /// Priority of the action. The actions will be executed in the order specified by the priority (from smallest to largest). - /// - public int Priority => 1000; + Type type = ExtensionManager.GetImplementations()?.FirstOrDefault(t => !t.GetTypeInfo().IsAbstract); - /// - /// Registers found implementation of the IStorageContext interface inside the DI. - /// - /// - /// Will be provided by the ExtCore and might be used to register any service inside the DI. - /// - /// - /// Will be provided by the ExtCore and might be used to get any service that is registered inside the DI at this moment. - /// - public void Execute(IServiceCollection services, IServiceProvider serviceProvider) + if (type == null) { - Type type = ExtensionManager.GetImplementations()?.FirstOrDefault(t => !t.GetTypeInfo().IsAbstract); + ILogger logger = serviceProvider.GetService().CreateLogger("ExtCore.Data.EntityFramework"); - if (type == null) - { - ILogger logger = serviceProvider.GetService().CreateLogger("ExtCore.Data.EntityFramework"); - - logger.LogError("Implementation of ExtCore.Data.Abstractions.IStorageContext not found"); - return; - } - - services.AddScoped(typeof(IStorageContext), type); + logger.LogError("Implementation of ExtCore.Data.Abstractions.IStorageContext not found"); + return; } + + services.AddScoped(typeof(IStorageContext), type); } } \ No newline at end of file diff --git a/src/ExtCore.Data.EntityFramework/DesignTimeStorageContextFactoryBase.cs b/src/ExtCore.Data.EntityFramework/DesignTimeStorageContextFactoryBase.cs index f954a9b..3611e98 100644 --- a/src/ExtCore.Data.EntityFramework/DesignTimeStorageContextFactoryBase.cs +++ b/src/ExtCore.Data.EntityFramework/DesignTimeStorageContextFactoryBase.cs @@ -6,41 +6,40 @@ using Microsoft.EntityFrameworkCore.Design; using Microsoft.Extensions.DependencyInjection; -namespace ExtCore.Data.EntityFramework +namespace ExtCore.Data.EntityFramework; + +/// +/// Implements the interface and represents the factory for providing +/// the registered inside the DI storage context service to the Entity Framework Core tools (such as Migrations). +/// Inherit from this class and call the Initialize method in your web application after the class +/// is configured in order the Entity Framework Core tools (such as Migrations) to work. +/// +/// The storage context type this factory creates. +public abstract class DesignTimeStorageContextFactoryBase : IDesignTimeDbContextFactory where T : StorageContextBase { /// - /// Implements the interface and represents the factory for providing - /// the registered inside the DI storage context service to the Entity Framework Core tools (such as Migrations). - /// Inherit from this class and call the Initialize method in your web application after the class - /// is configured in order the Entity Framework Core tools (such as Migrations) to work. + /// The storage context service from the DI. /// - /// The storage context type this factory creates. - public abstract class DesignTimeStorageContextFactoryBase : IDesignTimeDbContextFactory where T : StorageContextBase - { - /// - /// The storage context service from the DI. - /// - public static T StorageContext { get; set; } + public static T StorageContext { get; set; } - /// - /// Gets the storage context service set by the Initialize method. - /// - /// - /// Storage context service set by the Initialize method. - public T CreateDbContext(string[] args) - { - return DesignTimeStorageContextFactoryBase.StorageContext; - } + /// + /// Gets the storage context service set by the Initialize method. + /// + /// + /// Storage context service set by the Initialize method. + public T CreateDbContext(string[] args) + { + return DesignTimeStorageContextFactoryBase.StorageContext; + } - /// - /// Gets the storage context service from the DI and then sets it to the StorageContext property. - /// Call this method inside the Startup.ConfigureServices one after the class - /// is configured. - /// - /// The service provider to get the storage context service. - public static void Initialize(IServiceProvider serviceProvider) - { - DesignTimeStorageContextFactoryBase.StorageContext = serviceProvider.GetService() as T; - } + /// + /// Gets the storage context service from the DI and then sets it to the StorageContext property. + /// Call this method inside the Startup.ConfigureServices one after the class + /// is configured. + /// + /// The service provider to get the storage context service. + public static void Initialize(IServiceProvider serviceProvider) + { + DesignTimeStorageContextFactoryBase.StorageContext = serviceProvider.GetService() as T; } } \ No newline at end of file diff --git a/src/ExtCore.Data.EntityFramework/Extension.cs b/src/ExtCore.Data.EntityFramework/Extension.cs index 4e996ed..ac2f072 100644 --- a/src/ExtCore.Data.EntityFramework/Extension.cs +++ b/src/ExtCore.Data.EntityFramework/Extension.cs @@ -3,32 +3,31 @@ using ExtCore.Infrastructure; -namespace ExtCore.Data.EntityFramework +namespace ExtCore.Data.EntityFramework; + +/// +/// Overrides the ExtensionBase class and provides the +/// ExtCore.Data.EntityFramework extension information. +/// +public class Extension : ExtensionBase { /// - /// Overrides the ExtensionBase class and provides the - /// ExtCore.Data.EntityFramework extension information. + /// Gets the name of the extension. /// - public class Extension : ExtensionBase - { - /// - /// Gets the name of the extension. - /// - public override string Name => "ExtCore.Data.EntityFramework"; + public override string Name => "ExtCore.Data.EntityFramework"; - /// - /// Gets the URL of the extension. - /// - public override string Url => "https://extcore.net/"; + /// + /// Gets the URL of the extension. + /// + public override string Url => "https://extcore.net/"; - /// - /// Gets the version of the extension. - /// - public override string Version => "8.1.0"; + /// + /// Gets the version of the extension. + /// + public override string Version => "8.1.0"; - /// - /// Gets the authors of the extension (separated by commas). - /// - public override string Authors => "Dmitry Sikorsky"; - } + /// + /// Gets the authors of the extension (separated by commas). + /// + public override string Authors => "Dmitry Sikorsky"; } \ No newline at end of file diff --git a/src/ExtCore.Data.EntityFramework/Extensions/StorageContextExtensions.cs b/src/ExtCore.Data.EntityFramework/Extensions/StorageContextExtensions.cs index f8d15f5..81acefd 100644 --- a/src/ExtCore.Data.EntityFramework/Extensions/StorageContextExtensions.cs +++ b/src/ExtCore.Data.EntityFramework/Extensions/StorageContextExtensions.cs @@ -5,23 +5,22 @@ using ExtCore.Infrastructure; using Microsoft.EntityFrameworkCore; -namespace ExtCore.Data.EntityFramework +namespace ExtCore.Data.EntityFramework; + +/// +/// Contains the extension methods of the IStorageContext interface. +/// +public static class StorageContextExtensions { /// - /// Contains the extension methods of the IStorageContext interface. + /// Registers the entities from all the extensions inside the single Entity Framework storage context + /// by finding all the implementations of the IEntityRegistrar interface. /// - public static class StorageContextExtensions + /// The Entity Framework storage context. + /// The Entity Framework model builder. + public static void RegisterEntities(this IStorageContext storageContext, ModelBuilder modelBuilder) { - /// - /// Registers the entities from all the extensions inside the single Entity Framework storage context - /// by finding all the implementations of the IEntityRegistrar interface. - /// - /// The Entity Framework storage context. - /// The Entity Framework model builder. - public static void RegisterEntities(this IStorageContext storageContext, ModelBuilder modelBuilder) - { - foreach (IEntityRegistrar entityRegistrar in ExtensionManager.GetInstances()) - entityRegistrar.RegisterEntities(modelBuilder); - } + foreach (IEntityRegistrar entityRegistrar in ExtensionManager.GetInstances()) + entityRegistrar.RegisterEntities(modelBuilder); } } \ No newline at end of file diff --git a/src/ExtCore.Data.EntityFramework/IEntityRegistrar.cs b/src/ExtCore.Data.EntityFramework/IEntityRegistrar.cs index abf13dd..f03d4a3 100644 --- a/src/ExtCore.Data.EntityFramework/IEntityRegistrar.cs +++ b/src/ExtCore.Data.EntityFramework/IEntityRegistrar.cs @@ -3,17 +3,16 @@ using Microsoft.EntityFrameworkCore; -namespace ExtCore.Data.EntityFramework +namespace ExtCore.Data.EntityFramework; + +/// +/// Describes a mechanism of registering entities inside the Entity Framework storage context. +/// +public interface IEntityRegistrar { /// - /// Describes a mechanism of registering entities inside the Entity Framework storage context. + /// Registers entities inside the Entity Framework storage context. /// - public interface IEntityRegistrar - { - /// - /// Registers entities inside the Entity Framework storage context. - /// - /// The Entity Framework model builder. - void RegisterEntities(ModelBuilder modelbuilder); - } + /// The Entity Framework model builder. + void RegisterEntities(ModelBuilder modelbuilder); } \ No newline at end of file diff --git a/src/ExtCore.Data.EntityFramework/RepositoryBase.cs b/src/ExtCore.Data.EntityFramework/RepositoryBase.cs index 1a022c1..40f9ced 100644 --- a/src/ExtCore.Data.EntityFramework/RepositoryBase.cs +++ b/src/ExtCore.Data.EntityFramework/RepositoryBase.cs @@ -5,25 +5,24 @@ using ExtCore.Data.Entities.Abstractions; using Microsoft.EntityFrameworkCore; -namespace ExtCore.Data.EntityFramework +namespace ExtCore.Data.EntityFramework; + +/// +/// Implements the IRepository interface and represents default repository behavior. +/// +/// The entity type this repository operates. +public abstract class RepositoryBase : IRepository where TEntity : class, IEntity { + protected DbContext storageContext; + protected DbSet dbSet; + /// - /// Implements the IRepository interface and represents default repository behavior. + /// Sets the Entity Framework storage context that represents the physical storage to work with. /// - /// The entity type this repository operates. - public abstract class RepositoryBase : IRepository where TEntity : class, IEntity + /// The Entity Framework storage context to set. + public void SetStorageContext(IStorageContext storageContext) { - protected DbContext storageContext; - protected DbSet dbSet; - - /// - /// Sets the Entity Framework storage context that represents the physical storage to work with. - /// - /// The Entity Framework storage context to set. - public void SetStorageContext(IStorageContext storageContext) - { - this.storageContext = storageContext as DbContext; - this.dbSet = this.storageContext.Set(); - } + this.storageContext = storageContext as DbContext; + this.dbSet = this.storageContext.Set(); } } \ No newline at end of file diff --git a/src/ExtCore.Data.EntityFramework/Storage.cs b/src/ExtCore.Data.EntityFramework/Storage.cs index 43c866d..6a7ac93 100644 --- a/src/ExtCore.Data.EntityFramework/Storage.cs +++ b/src/ExtCore.Data.EntityFramework/Storage.cs @@ -7,57 +7,56 @@ using ExtCore.Infrastructure; using Microsoft.EntityFrameworkCore; -namespace ExtCore.Data.EntityFramework +namespace ExtCore.Data.EntityFramework; + +/// +/// Implements the IStorage interface and represents implementation of the +/// Unit of Work design pattern with the mechanism of getting the repositories to work with the underlying +/// Entity Framework storage context and committing the changes made by all the repositories. +/// +public class Storage : IStorage { /// - /// Implements the IStorage interface and represents implementation of the - /// Unit of Work design pattern with the mechanism of getting the repositories to work with the underlying - /// Entity Framework storage context and committing the changes made by all the repositories. + /// Gets the Entity Framework storage context. /// - public class Storage : IStorage + public IStorageContext StorageContext { get; private set; } + + public Storage(IStorageContext storageContext) + { + if (!(storageContext is DbContext)) + throw new ArgumentException("The storageContext object must be an instance of the Microsoft.EntityFrameworkCore.DbContext class."); + + this.StorageContext = storageContext; + } + + /// + /// Gets a repository of the given type. + /// + /// The type parameter to find implementation of. + /// + public TRepository GetRepository() where TRepository : IRepository + { + TRepository repository = ExtensionManager.GetInstance(); + + if (repository != null) + repository.SetStorageContext(this.StorageContext); + + return repository; + } + + /// + /// Commits the changes made by all the repositories. + /// + public int Save() + { + return (this.StorageContext as DbContext).SaveChanges(); + } + + /// + /// Asynchronously commits the changes made by all the repositories. + /// + public async Task SaveAsync() { - /// - /// Gets the Entity Framework storage context. - /// - public IStorageContext StorageContext { get; private set; } - - public Storage(IStorageContext storageContext) - { - if (!(storageContext is DbContext)) - throw new ArgumentException("The storageContext object must be an instance of the Microsoft.EntityFrameworkCore.DbContext class."); - - this.StorageContext = storageContext; - } - - /// - /// Gets a repository of the given type. - /// - /// The type parameter to find implementation of. - /// - public TRepository GetRepository() where TRepository : IRepository - { - TRepository repository = ExtensionManager.GetInstance(); - - if (repository != null) - repository.SetStorageContext(this.StorageContext); - - return repository; - } - - /// - /// Commits the changes made by all the repositories. - /// - public int Save() - { - return (this.StorageContext as DbContext).SaveChanges(); - } - - /// - /// Asynchronously commits the changes made by all the repositories. - /// - public async Task SaveAsync() - { - return await (this.StorageContext as DbContext).SaveChangesAsync(); - } + return await (this.StorageContext as DbContext).SaveChangesAsync(); } } \ No newline at end of file diff --git a/src/ExtCore.Data.EntityFramework/StorageContextBase.cs b/src/ExtCore.Data.EntityFramework/StorageContextBase.cs index edc47c4..90a5e1d 100644 --- a/src/ExtCore.Data.EntityFramework/StorageContextBase.cs +++ b/src/ExtCore.Data.EntityFramework/StorageContextBase.cs @@ -5,38 +5,37 @@ using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Options; -namespace ExtCore.Data.EntityFramework +namespace ExtCore.Data.EntityFramework; + +/// +/// Implements the IStorageContext interface and represents the physical storage +/// with the Entity Framework Core as the ORM. +/// +public abstract class StorageContextBase : DbContext, IStorageContext { /// - /// Implements the IStorageContext interface and represents the physical storage - /// with the Entity Framework Core as the ORM. + /// The connection string that is used to connect to the physical storage. /// - public abstract class StorageContextBase : DbContext, IStorageContext - { - /// - /// The connection string that is used to connect to the physical storage. - /// - public string ConnectionString { get; private set; } + public string ConnectionString { get; private set; } - /// - /// The assembly name where migrations are maintained for this context. - /// - public string MigrationsAssembly { get; private set; } + /// + /// The assembly name where migrations are maintained for this context. + /// + public string MigrationsAssembly { get; private set; } - /// - /// Initializes a new instance of the StorageContext class. - /// - /// The connection string that is used to connect to the physical storage. - public StorageContextBase(IOptions options) - { - this.ConnectionString = options.Value.ConnectionString; - this.MigrationsAssembly = options.Value.MigrationsAssembly; - } + /// + /// Initializes a new instance of the StorageContext class. + /// + /// The connection string that is used to connect to the physical storage. + public StorageContextBase(IOptions options) + { + this.ConnectionString = options.Value.ConnectionString; + this.MigrationsAssembly = options.Value.MigrationsAssembly; + } - protected override void OnModelCreating(ModelBuilder modelBuilder) - { - base.OnModelCreating(modelBuilder); - this.RegisterEntities(modelBuilder); - } + protected override void OnModelCreating(ModelBuilder modelBuilder) + { + base.OnModelCreating(modelBuilder); + this.RegisterEntities(modelBuilder); } } \ No newline at end of file diff --git a/src/ExtCore.Data.EntityFramework/StorageContextOptions.cs b/src/ExtCore.Data.EntityFramework/StorageContextOptions.cs index 3d82d98..cff88ab 100644 --- a/src/ExtCore.Data.EntityFramework/StorageContextOptions.cs +++ b/src/ExtCore.Data.EntityFramework/StorageContextOptions.cs @@ -1,21 +1,20 @@ // Copyright © 2017 Dmitry Sikorsky. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. -namespace ExtCore.Data.EntityFramework +namespace ExtCore.Data.EntityFramework; + +/// +/// Represents Entity Framework storage context options. +/// +public class StorageContextOptions { /// - /// Represents Entity Framework storage context options. + /// The connection string that is used to connect to the physical storage. /// - public class StorageContextOptions - { - /// - /// The connection string that is used to connect to the physical storage. - /// - public string ConnectionString { get; set; } + public string ConnectionString { get; set; } - /// - /// The assembly name where migrations are maintained for this context. - /// - public string MigrationsAssembly { get; set; } - } + /// + /// The assembly name where migrations are maintained for this context. + /// + public string MigrationsAssembly { get; set; } } \ No newline at end of file diff --git a/src/ExtCore.Data/Actions/AddStorageAction.cs b/src/ExtCore.Data/Actions/AddStorageAction.cs index 9989b63..883ed36 100644 --- a/src/ExtCore.Data/Actions/AddStorageAction.cs +++ b/src/ExtCore.Data/Actions/AddStorageAction.cs @@ -10,41 +10,40 @@ using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; -namespace ExtCore.Data.Actions +namespace ExtCore.Data.Actions; + +/// +/// Implements the IConfigureServicesAction interface and +/// registers found implementation of the IStorage interface inside the DI. +/// +public class AddStorageAction : IConfigureServicesAction { /// - /// Implements the IConfigureServicesAction interface and - /// registers found implementation of the IStorage interface inside the DI. + /// Priority of the action. The actions will be executed in the order specified by the priority (from smallest to largest). + /// + public int Priority => 1000; + + /// + /// Registers found implementation of the IStorage interface inside the DI. /// - public class AddStorageAction : IConfigureServicesAction + /// + /// Will be provided by the ExtCore and might be used to register any service inside the DI. + /// + /// + /// Will be provided by the ExtCore and might be used to get any service that is registered inside the DI at this moment. + /// + public void Execute(IServiceCollection services, IServiceProvider serviceProvider) { - /// - /// Priority of the action. The actions will be executed in the order specified by the priority (from smallest to largest). - /// - public int Priority => 1000; + Type type = ExtensionManager.GetImplementations()?.FirstOrDefault(t => !t.GetTypeInfo().IsAbstract); - /// - /// Registers found implementation of the IStorage interface inside the DI. - /// - /// - /// Will be provided by the ExtCore and might be used to register any service inside the DI. - /// - /// - /// Will be provided by the ExtCore and might be used to get any service that is registered inside the DI at this moment. - /// - public void Execute(IServiceCollection services, IServiceProvider serviceProvider) + if (type == null) { - Type type = ExtensionManager.GetImplementations()?.FirstOrDefault(t => !t.GetTypeInfo().IsAbstract); + ILogger logger = serviceProvider.GetService().CreateLogger("ExtCore.Data"); - if (type == null) - { - ILogger logger = serviceProvider.GetService().CreateLogger("ExtCore.Data"); - - logger.LogError("Implementation of ExtCore.Data.Abstractions.IStorage not found"); - return; - } - - services.AddScoped(typeof(IStorage), type); + logger.LogError("Implementation of ExtCore.Data.Abstractions.IStorage not found"); + return; } + + services.AddScoped(typeof(IStorage), type); } } \ No newline at end of file diff --git a/src/ExtCore.Data/Extension.cs b/src/ExtCore.Data/Extension.cs index b0fe161..4f244df 100644 --- a/src/ExtCore.Data/Extension.cs +++ b/src/ExtCore.Data/Extension.cs @@ -3,31 +3,30 @@ using ExtCore.Infrastructure; -namespace ExtCore.Data +namespace ExtCore.Data; + +/// +/// Overrides the ExtensionBase class and provides the ExtCore.Data extension information. +/// +public class Extension : ExtensionBase { /// - /// Overrides the ExtensionBase class and provides the ExtCore.Data extension information. + /// Gets the name of the extension. /// - public class Extension : ExtensionBase - { - /// - /// Gets the name of the extension. - /// - public override string Name => "ExtCore.Data"; + public override string Name => "ExtCore.Data"; - /// - /// Gets the URL of the extension. - /// - public override string Url => "https://extcore.net/"; + /// + /// Gets the URL of the extension. + /// + public override string Url => "https://extcore.net/"; - /// - /// Gets the version of the extension. - /// - public override string Version => "8.1.0"; + /// + /// Gets the version of the extension. + /// + public override string Version => "8.1.0"; - /// - /// Gets the authors of the extension (separated by commas). - /// - public override string Authors => "Dmitry Sikorsky"; - } + /// + /// Gets the authors of the extension (separated by commas). + /// + public override string Authors => "Dmitry Sikorsky"; } \ No newline at end of file diff --git a/src/ExtCore.Events/Event.cs b/src/ExtCore.Events/Event.cs index 414c8d7..6b3e3e4 100644 --- a/src/ExtCore.Events/Event.cs +++ b/src/ExtCore.Events/Event.cs @@ -5,110 +5,109 @@ using System.Linq; using ExtCore.Infrastructure; -namespace ExtCore.Events +namespace ExtCore.Events; + +/// +/// Represents an event that can be broadcasted and handled by the corresponding event handlers +/// specified by the TEventHandler type parameter. The event handlers +/// might be located in this or any other extension and will be resolved automatically by ExtCore. +/// +/// Defines the type of the event handlers that will handle the event. +public static class Event where TEventHandler : IEventHandler { /// - /// Represents an event that can be broadcasted and handled by the corresponding event handlers - /// specified by the TEventHandler type parameter. The event handlers - /// might be located in this or any other extension and will be resolved automatically by ExtCore. + /// Broadcasts the event to all the event handlers that are resolved automatically by ExtCore. /// - /// Defines the type of the event handlers that will handle the event. - public static class Event where TEventHandler : IEventHandler + /// Resolved event handlers that have handled the event. + public static IEnumerable Broadcast() { - /// - /// Broadcasts the event to all the event handlers that are resolved automatically by ExtCore. - /// - /// Resolved event handlers that have handled the event. - public static IEnumerable Broadcast() - { - IEnumerable eventHandlers = ExtensionManager.GetInstances().OrderBy(eh => eh.Priority); + IEnumerable eventHandlers = ExtensionManager.GetInstances().OrderBy(eh => eh.Priority); - foreach (TEventHandler eventHandler in eventHandlers) - eventHandler.HandleEvent(); + foreach (TEventHandler eventHandler in eventHandlers) + eventHandler.HandleEvent(); - return eventHandlers; - } + return eventHandlers; } +} +/// +/// Represents an event that can be broadcasted and handled by the corresponding event handlers +/// specified by the TEventHandler type parameter. The event handlers +/// might be located in this or any other extension and will be resolved automatically by ExtCore. +/// +/// Defines the type of the event handlers that will handle the event. +/// Defines the type of the argument that will be passed to the event handlers. +public static class Event where TEventHandler : IEventHandler +{ /// - /// Represents an event that can be broadcasted and handled by the corresponding event handlers - /// specified by the TEventHandler type parameter. The event handlers - /// might be located in this or any other extension and will be resolved automatically by ExtCore. + /// Broadcasts the event to all the event handlers that are resolved automatically by ExtCore. /// - /// Defines the type of the event handlers that will handle the event. - /// Defines the type of the argument that will be passed to the event handlers. - public static class Event where TEventHandler : IEventHandler + /// The event argument. + /// Resolved event handlers that have handled the event. + public static IEnumerable Broadcast(TEventArgument argument) { - /// - /// Broadcasts the event to all the event handlers that are resolved automatically by ExtCore. - /// - /// The event argument. - /// Resolved event handlers that have handled the event. - public static IEnumerable Broadcast(TEventArgument argument) - { - IEnumerable eventHandlers = ExtensionManager.GetInstances().OrderBy(eh => eh.Priority); + IEnumerable eventHandlers = ExtensionManager.GetInstances().OrderBy(eh => eh.Priority); - foreach (TEventHandler eventHandler in eventHandlers) - eventHandler.HandleEvent(argument); + foreach (TEventHandler eventHandler in eventHandlers) + eventHandler.HandleEvent(argument); - return eventHandlers; - } + return eventHandlers; } +} +/// +/// Represents an event that can be broadcasted and handled by the corresponding event handlers +/// specified by the TEventHandler type parameter. The event handlers +/// might be located in this or any other extension and will be resolved automatically by ExtCore. +/// +/// +/// Defines the type of the event handlers that will handle the event. +/// Defines the type of the first argument that will be passed to the event handlers. +/// Defines the type of the second argument that will be passed to the event handlers. +public static class Event where TEventHandler : IEventHandler +{ /// - /// Represents an event that can be broadcasted and handled by the corresponding event handlers - /// specified by the TEventHandler type parameter. The event handlers - /// might be located in this or any other extension and will be resolved automatically by ExtCore. + /// Broadcasts the event to all the event handlers that are resolved automatically by ExtCore. /// - /// - /// Defines the type of the event handlers that will handle the event. - /// Defines the type of the first argument that will be passed to the event handlers. - /// Defines the type of the second argument that will be passed to the event handlers. - public static class Event where TEventHandler : IEventHandler + /// The first event argument. + /// The second event argument. + /// Resolved event handlers that have handled the event. + public static IEnumerable Broadcast(TEventArgument1 argument1, TEventArgument2 argument2) { - /// - /// Broadcasts the event to all the event handlers that are resolved automatically by ExtCore. - /// - /// The first event argument. - /// The second event argument. - /// Resolved event handlers that have handled the event. - public static IEnumerable Broadcast(TEventArgument1 argument1, TEventArgument2 argument2) - { - IEnumerable eventHandlers = ExtensionManager.GetInstances().OrderBy(eh => eh.Priority); + IEnumerable eventHandlers = ExtensionManager.GetInstances().OrderBy(eh => eh.Priority); - foreach (TEventHandler eventHandler in eventHandlers) - eventHandler.HandleEvent(argument1, argument2); + foreach (TEventHandler eventHandler in eventHandlers) + eventHandler.HandleEvent(argument1, argument2); - return eventHandlers; - } + return eventHandlers; } +} +/// +/// Represents an event that can be broadcasted and handled by the corresponding event handlers +/// specified by the TEventHandler type parameter. The event handlers +/// might be located in this or any other extension and will be resolved automatically by ExtCore. +/// +/// Defines the type of the event handlers that will handle the event. +/// Defines the type of the first argument that will be passed to the event handlers. +/// Defines the type of the second argument that will be passed to the event handlers. +/// Defines the type of the third argument that will be passed to the event handlers. +public static class Event where TEventHandler : IEventHandler +{ /// - /// Represents an event that can be broadcasted and handled by the corresponding event handlers - /// specified by the TEventHandler type parameter. The event handlers - /// might be located in this or any other extension and will be resolved automatically by ExtCore. + /// Broadcasts the event to all the event handlers that are resolved automatically by ExtCore. /// - /// Defines the type of the event handlers that will handle the event. - /// Defines the type of the first argument that will be passed to the event handlers. - /// Defines the type of the second argument that will be passed to the event handlers. - /// Defines the type of the third argument that will be passed to the event handlers. - public static class Event where TEventHandler : IEventHandler + /// The first event argument. + /// The second event argument. + /// The third event argument. + /// Resolved event handlers that have handled the event. + public static IEnumerable Broadcast(TEventArgument1 argument1, TEventArgument2 argument2, TEventArgument3 argument3) { - /// - /// Broadcasts the event to all the event handlers that are resolved automatically by ExtCore. - /// - /// The first event argument. - /// The second event argument. - /// The third event argument. - /// Resolved event handlers that have handled the event. - public static IEnumerable Broadcast(TEventArgument1 argument1, TEventArgument2 argument2, TEventArgument3 argument3) - { - IEnumerable eventHandlers = ExtensionManager.GetInstances().OrderBy(eh => eh.Priority); + IEnumerable eventHandlers = ExtensionManager.GetInstances().OrderBy(eh => eh.Priority); - foreach (TEventHandler eventHandler in eventHandlers) - eventHandler.HandleEvent(argument1, argument2, argument3); + foreach (TEventHandler eventHandler in eventHandlers) + eventHandler.HandleEvent(argument1, argument2, argument3); - return eventHandlers; - } + return eventHandlers; } } \ No newline at end of file diff --git a/src/ExtCore.Events/Extension.cs b/src/ExtCore.Events/Extension.cs index d74fc53..4207f4f 100644 --- a/src/ExtCore.Events/Extension.cs +++ b/src/ExtCore.Events/Extension.cs @@ -3,31 +3,30 @@ using ExtCore.Infrastructure; -namespace ExtCore.Events +namespace ExtCore.Events; + +/// +/// Overrides the ExtensionBase class and provides the ExtCore.Events extension information. +/// +public class Extension : ExtensionBase { /// - /// Overrides the ExtensionBase class and provides the ExtCore.Events extension information. + /// Gets the name of the extension. /// - public class Extension : ExtensionBase - { - /// - /// Gets the name of the extension. - /// - public override string Name => "ExtCore.Events"; + public override string Name => "ExtCore.Events"; - /// - /// Gets the URL of the extension. - /// - public override string Url => "https://extcore.net/"; + /// + /// Gets the URL of the extension. + /// + public override string Url => "https://extcore.net/"; - /// - /// Gets the version of the extension. - /// - public override string Version => "8.1.0"; + /// + /// Gets the version of the extension. + /// + public override string Version => "8.1.0"; - /// - /// Gets the authors of the extension (separated by commas). - /// - public override string Authors => "Dmitry Sikorsky"; - } + /// + /// Gets the authors of the extension (separated by commas). + /// + public override string Authors => "Dmitry Sikorsky"; } \ No newline at end of file diff --git a/src/ExtCore.Events/IEventHandler.cs b/src/ExtCore.Events/IEventHandler.cs index 30d8da6..3010b96 100644 --- a/src/ExtCore.Events/IEventHandler.cs +++ b/src/ExtCore.Events/IEventHandler.cs @@ -1,89 +1,88 @@ // Copyright © 2017 Dmitry Sikorsky. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. -namespace ExtCore.Events +namespace ExtCore.Events; + +/// +/// Describes an event handler that can handle the events broadcasted by the +/// class. +/// +public interface IEventHandler { /// - /// Describes an event handler that can handle the events broadcasted by the - /// class. + /// Priority of the event handler. The event handlers of the same event will be executed in the order + /// specified by the priority. /// - public interface IEventHandler - { - /// - /// Priority of the event handler. The event handlers of the same event will be executed in the order - /// specified by the priority. - /// - int Priority { get; } + int Priority { get; } - /// - /// Handles the event. - /// - void HandleEvent(); - } + /// + /// Handles the event. + /// + void HandleEvent(); +} +/// +/// Describes an event handler that can handle the events broadcasted by the +/// class. +/// +/// Defines the type of the argument that will be passed to the event handler. +public interface IEventHandler +{ /// - /// Describes an event handler that can handle the events broadcasted by the - /// class. + /// Priority of the event handler. The event handlers of the same event will be executed in the order + /// specified by the priority. /// - /// Defines the type of the argument that will be passed to the event handler. - public interface IEventHandler - { - /// - /// Priority of the event handler. The event handlers of the same event will be executed in the order - /// specified by the priority. - /// - int Priority { get; } + int Priority { get; } - /// - /// Handles the event. - /// - /// The event argument. - void HandleEvent(TEventArgument argument); - } + /// + /// Handles the event. + /// + /// The event argument. + void HandleEvent(TEventArgument argument); +} +/// +/// Describes an event handler that can handle the events broadcasted by the +/// class. +/// +/// Defines the type of the first argument that will be passed to the event handler. +/// Defines the type of the second argument that will be passed to the event handler. +public interface IEventHandler +{ /// - /// Describes an event handler that can handle the events broadcasted by the - /// class. + /// Priority of the event handler. The event handlers of the same event will be executed in the order + /// specified by the priority. /// - /// Defines the type of the first argument that will be passed to the event handler. - /// Defines the type of the second argument that will be passed to the event handler. - public interface IEventHandler - { - /// - /// Priority of the event handler. The event handlers of the same event will be executed in the order - /// specified by the priority. - /// - int Priority { get; } + int Priority { get; } - /// - /// Handles the event. - /// - /// The first event argument. - /// The second event argument. - void HandleEvent(TEventArgument1 argument1, TEventArgument2 argument2); - } + /// + /// Handles the event. + /// + /// The first event argument. + /// The second event argument. + void HandleEvent(TEventArgument1 argument1, TEventArgument2 argument2); +} +/// +/// Describes an event handler that can handle the events broadcasted by the +/// class. +/// +/// Defines the type of the first argument that will be passed to the event handler. +/// Defines the type of the second argument that will be passed to the event handler. +/// Defines the type of the first argument that will be passed to the event handler. +public interface IEventHandler +{ /// - /// Describes an event handler that can handle the events broadcasted by the - /// class. + /// Priority of the event handler. The event handlers of the same event will be executed in the order + /// specified by the priority. /// - /// Defines the type of the first argument that will be passed to the event handler. - /// Defines the type of the second argument that will be passed to the event handler. - /// Defines the type of the first argument that will be passed to the event handler. - public interface IEventHandler - { - /// - /// Priority of the event handler. The event handlers of the same event will be executed in the order - /// specified by the priority. - /// - int Priority { get; } + int Priority { get; } - /// - /// Handles the event. - /// - /// The first event argument. - /// The second event argument. - /// The third event argument. - void HandleEvent(TEventArgument1 argument1, TEventArgument2 argument2, TEventArgument3 argument3); - } + /// + /// Handles the event. + /// + /// The first event argument. + /// The second event argument. + /// The third event argument. + void HandleEvent(TEventArgument1 argument1, TEventArgument2 argument2, TEventArgument3 argument3); } \ No newline at end of file diff --git a/src/ExtCore.FileStorage.Abstractions/Exceptions/AccessDeniedException.cs b/src/ExtCore.FileStorage.Abstractions/Exceptions/AccessDeniedException.cs index 16bde33..389e6b7 100644 --- a/src/ExtCore.FileStorage.Abstractions/Exceptions/AccessDeniedException.cs +++ b/src/ExtCore.FileStorage.Abstractions/Exceptions/AccessDeniedException.cs @@ -3,15 +3,14 @@ using System; -namespace ExtCore.FileStorage +namespace ExtCore.FileStorage; + +/// +/// Represents an access denied file storage exception. +/// +public class AccessDeniedException : FileStorageException { - /// - /// Represents an access denied file storage exception. - /// - public class AccessDeniedException : FileStorageException - { - public AccessDeniedException() : base() { } - public AccessDeniedException(string message) : base(message) { } - public AccessDeniedException(string message, Exception innerException) : base(message, innerException) { } - } + public AccessDeniedException() : base() { } + public AccessDeniedException(string message) : base(message) { } + public AccessDeniedException(string message, Exception innerException) : base(message, innerException) { } } \ No newline at end of file diff --git a/src/ExtCore.FileStorage.Abstractions/Exceptions/DirectoryNotFoundException.cs b/src/ExtCore.FileStorage.Abstractions/Exceptions/DirectoryNotFoundException.cs index 8a925b4..0584731 100644 --- a/src/ExtCore.FileStorage.Abstractions/Exceptions/DirectoryNotFoundException.cs +++ b/src/ExtCore.FileStorage.Abstractions/Exceptions/DirectoryNotFoundException.cs @@ -3,15 +3,14 @@ using System; -namespace ExtCore.FileStorage +namespace ExtCore.FileStorage; + +/// +/// Represents a directory not found file storage exception. +/// +public class DirectoryNotFoundException : FileStorageException { - /// - /// Represents a directory not found file storage exception. - /// - public class DirectoryNotFoundException : FileStorageException - { - public DirectoryNotFoundException() : base() { } - public DirectoryNotFoundException(string message) : base(message) { } - public DirectoryNotFoundException(string message, Exception innerException) : base(message, innerException) { } - } + public DirectoryNotFoundException() : base() { } + public DirectoryNotFoundException(string message) : base(message) { } + public DirectoryNotFoundException(string message, Exception innerException) : base(message, innerException) { } } \ No newline at end of file diff --git a/src/ExtCore.FileStorage.Abstractions/Exceptions/FileNotFoundException.cs b/src/ExtCore.FileStorage.Abstractions/Exceptions/FileNotFoundException.cs index 6d5c4d0..f4d1dbc 100644 --- a/src/ExtCore.FileStorage.Abstractions/Exceptions/FileNotFoundException.cs +++ b/src/ExtCore.FileStorage.Abstractions/Exceptions/FileNotFoundException.cs @@ -3,15 +3,14 @@ using System; -namespace ExtCore.FileStorage +namespace ExtCore.FileStorage; + +/// +/// Represents a directory not found file storage exception. +/// +public class FileNotFoundException : FileStorageException { - /// - /// Represents a directory not found file storage exception. - /// - public class FileNotFoundException : FileStorageException - { - public FileNotFoundException() : base() { } - public FileNotFoundException(string message) : base(message) { } - public FileNotFoundException(string message, Exception innerException) : base(message, innerException) { } - } + public FileNotFoundException() : base() { } + public FileNotFoundException(string message) : base(message) { } + public FileNotFoundException(string message, Exception innerException) : base(message, innerException) { } } \ No newline at end of file diff --git a/src/ExtCore.FileStorage.Abstractions/Exceptions/FileStorageException.cs b/src/ExtCore.FileStorage.Abstractions/Exceptions/FileStorageException.cs index c0d203a..11d5c24 100644 --- a/src/ExtCore.FileStorage.Abstractions/Exceptions/FileStorageException.cs +++ b/src/ExtCore.FileStorage.Abstractions/Exceptions/FileStorageException.cs @@ -3,15 +3,14 @@ using System; -namespace ExtCore.FileStorage +namespace ExtCore.FileStorage; + +/// +/// Represents a generic file storage exception. +/// +public class FileStorageException : Exception { - /// - /// Represents a generic file storage exception. - /// - public class FileStorageException : Exception - { - public FileStorageException() : base() { } - public FileStorageException(string message) : base(message) { } - public FileStorageException(string message, Exception innerException) : base(message, innerException) { } - } + public FileStorageException() : base() { } + public FileStorageException(string message) : base(message) { } + public FileStorageException(string message, Exception innerException) : base(message, innerException) { } } \ No newline at end of file diff --git a/src/ExtCore.FileStorage.Abstractions/Exceptions/PathTooLongException.cs b/src/ExtCore.FileStorage.Abstractions/Exceptions/PathTooLongException.cs index bf360fe..9d6e1aa 100644 --- a/src/ExtCore.FileStorage.Abstractions/Exceptions/PathTooLongException.cs +++ b/src/ExtCore.FileStorage.Abstractions/Exceptions/PathTooLongException.cs @@ -3,15 +3,14 @@ using System; -namespace ExtCore.FileStorage +namespace ExtCore.FileStorage; + +/// +/// Represents a path too long file storage exception. +/// +public class PathTooLongException : FileStorageException { - /// - /// Represents a path too long file storage exception. - /// - public class PathTooLongException : FileStorageException - { - public PathTooLongException() : base() { } - public PathTooLongException(string message) : base(message) { } - public PathTooLongException(string message, Exception innerException) : base(message, innerException) { } - } + public PathTooLongException() : base() { } + public PathTooLongException(string message) : base(message) { } + public PathTooLongException(string message, Exception innerException) : base(message, innerException) { } } \ No newline at end of file diff --git a/src/ExtCore.FileStorage.Abstractions/FileStorageOptions.cs b/src/ExtCore.FileStorage.Abstractions/FileStorageOptions.cs index b480954..47c466d 100644 --- a/src/ExtCore.FileStorage.Abstractions/FileStorageOptions.cs +++ b/src/ExtCore.FileStorage.Abstractions/FileStorageOptions.cs @@ -1,31 +1,30 @@ // Copyright © 2018 Dmitry Sikorsky. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. -namespace ExtCore.FileStorage +namespace ExtCore.FileStorage; + +/// +/// Represents generic file storage options. +/// +public class FileStorageOptions { /// - /// Represents generic file storage options. + /// The origin that is used to connect to the file storage. Might be used to provide an API base URL. /// - public class FileStorageOptions - { - /// - /// The origin that is used to connect to the file storage. Might be used to provide an API base URL. - /// - public string Origin { get; set; } + public string Origin { get; set; } - /// - /// The identifier that is used to connect to the file storage. Might be used to provide a username or an application identifier. - /// - public string Identifier { get; set; } + /// + /// The identifier that is used to connect to the file storage. Might be used to provide a username or an application identifier. + /// + public string Identifier { get; set; } - /// - /// The secret that is used to connect to the file storage. Might be used to provide a password, an application secret, or an API key. - /// - public string Secret { get; set; } + /// + /// The secret that is used to connect to the file storage. Might be used to provide a password, an application secret, or an API key. + /// + public string Secret { get; set; } - /// - /// The root path that is used by the file storage. - /// - public string RootPath { get; set; } - } + /// + /// The root path that is used by the file storage. + /// + public string RootPath { get; set; } } \ No newline at end of file diff --git a/src/ExtCore.FileStorage.Abstractions/IDirectoryProxy.cs b/src/ExtCore.FileStorage.Abstractions/IDirectoryProxy.cs index 501ac60..f504af5 100644 --- a/src/ExtCore.FileStorage.Abstractions/IDirectoryProxy.cs +++ b/src/ExtCore.FileStorage.Abstractions/IDirectoryProxy.cs @@ -5,73 +5,72 @@ using System.Collections.Generic; using System.Threading.Tasks; -namespace ExtCore.FileStorage.Abstractions +namespace ExtCore.FileStorage.Abstractions; + +/// +/// Describes a generic directory proxy to manipulate an underlying directory with a specified relative path. +/// +public interface IDirectoryProxy { /// - /// Describes a generic directory proxy to manipulate an underlying directory with a specified relative path. + /// The path of the underlying directory relatively to the root one. /// - public interface IDirectoryProxy - { - /// - /// The path of the underlying directory relatively to the root one. - /// - string RelativePath { get; } + string RelativePath { get; } - /// - /// Checks if the underlying directory exists. - /// - /// Returns a flag indicating if the underlying directory exists. - Task ExistsAsync(); + /// + /// Checks if the underlying directory exists. + /// + /// Returns a flag indicating if the underlying directory exists. + Task ExistsAsync(); - /// - /// Creates the underlying directory. - /// - /// - /// - /// - /// - Task CreateAsync(); + /// + /// Creates the underlying directory. + /// + /// + /// + /// + /// + Task CreateAsync(); - /// - /// Moves the underlying directory. - /// - /// - /// - /// - /// - /// - /// - /// - Task MoveAsync(string destinationRelativePath); + /// + /// Moves the underlying directory. + /// + /// + /// + /// + /// + /// + /// + /// + Task MoveAsync(string destinationRelativePath); - /// - /// Deletes the underlying directory. - /// - /// Pass true to remove all the underlying directory content recursively; otherwise false. - /// - /// - /// - /// - Task DeleteAsync(bool recursive); + /// + /// Deletes the underlying directory. + /// + /// Pass true to remove all the underlying directory content recursively; otherwise false. + /// + /// + /// + /// + Task DeleteAsync(bool recursive); - /// - /// Gets the directory proxies for the directories inside the underlying one. - /// - /// The directory proxies for the directories inside the underlying one - /// - /// - /// - /// - Task> GetDirectoryProxiesAsync(); + /// + /// Gets the directory proxies for the directories inside the underlying one. + /// + /// The directory proxies for the directories inside the underlying one + /// + /// + /// + /// + Task> GetDirectoryProxiesAsync(); - /// - /// Gets the file proxies for the files inside the underlying one. - /// - /// The file proxies for the files inside the underlying directory. - /// - /// - /// - /// - Task> GetFileProxiesAsync(); - } + /// + /// Gets the file proxies for the files inside the underlying one. + /// + /// The file proxies for the files inside the underlying directory. + /// + /// + /// + /// + Task> GetFileProxiesAsync(); } \ No newline at end of file diff --git a/src/ExtCore.FileStorage.Abstractions/IFileProxy.cs b/src/ExtCore.FileStorage.Abstractions/IFileProxy.cs index 059392a..c006c7f 100644 --- a/src/ExtCore.FileStorage.Abstractions/IFileProxy.cs +++ b/src/ExtCore.FileStorage.Abstractions/IFileProxy.cs @@ -5,103 +5,102 @@ using System.IO; using System.Threading.Tasks; -namespace ExtCore.FileStorage.Abstractions +namespace ExtCore.FileStorage.Abstractions; + +/// +/// Describes a generic file proxy to manipulate an underlying file with a specified relative path and a filename. +/// +public interface IFileProxy { /// - /// Describes a generic file proxy to manipulate an underlying file with a specified relative path and a filename. + /// The path of the underlying file relatively to the root one. /// - public interface IFileProxy - { - /// - /// The path of the underlying file relatively to the root one. - /// - string RelativePath { get; } + string RelativePath { get; } - /// - /// The filename of the underlying file. - /// - string Filename { get; } + /// + /// The filename of the underlying file. + /// + string Filename { get; } - /// - /// Checks if the underlying file exists. - /// - /// Returns a flag indicating if the underlying file exists. - Task ExistsAsync(); + /// + /// Checks if the underlying file exists. + /// + /// Returns a flag indicating if the underlying file exists. + Task ExistsAsync(); - /// - /// Reads content of the underlying file as a stream. - /// - /// Content of the underlying file as a stream. - /// - /// - /// - /// - /// - Task ReadStreamAsync(); + /// + /// Reads content of the underlying file as a stream. + /// + /// Content of the underlying file as a stream. + /// + /// + /// + /// + /// + Task ReadStreamAsync(); - /// - /// Reads content of the underlying file as a byte array. - /// - /// Content of the underlying file as a byte array. - /// - /// - /// - /// - /// - Task ReadBytesAsync(); + /// + /// Reads content of the underlying file as a byte array. + /// + /// Content of the underlying file as a byte array. + /// + /// + /// + /// + /// + Task ReadBytesAsync(); - /// - /// Reads content of the underlying file as a text string. - /// - /// Content of the underlying file as a text string. - /// - /// - /// - /// - /// - Task ReadTextAsync(); + /// + /// Reads content of the underlying file as a text string. + /// + /// Content of the underlying file as a text string. + /// + /// + /// + /// + /// + Task ReadTextAsync(); - /// - /// Writes content to the underlying file as a stream. - /// - /// Content to write to the underlying file as a stream. - /// - /// - /// - /// - /// - Task WriteStreamAsync(Stream inputStream); + /// + /// Writes content to the underlying file as a stream. + /// + /// Content to write to the underlying file as a stream. + /// + /// + /// + /// + /// + Task WriteStreamAsync(Stream inputStream); - /// - /// Writes content to the underlying file as a byte array. - /// - /// Content to write to the underlying file as a byte array. - /// - /// - /// - /// - /// - Task WriteBytesAsync(byte[] bytes); + /// + /// Writes content to the underlying file as a byte array. + /// + /// Content to write to the underlying file as a byte array. + /// + /// + /// + /// + /// + Task WriteBytesAsync(byte[] bytes); - /// - /// Writes content to the underlying file as a text string. - /// - /// Content to write to the underlying file as a text string. - /// - /// - /// - /// - /// - Task WriteTextAsync(string text); + /// + /// Writes content to the underlying file as a text string. + /// + /// Content to write to the underlying file as a text string. + /// + /// + /// + /// + /// + Task WriteTextAsync(string text); - /// - /// Deletes the underlying file. - /// - /// - /// - /// - /// - /// - Task DeleteAsync(); - } + /// + /// Deletes the underlying file. + /// + /// + /// + /// + /// + /// + Task DeleteAsync(); } \ No newline at end of file diff --git a/src/ExtCore.FileStorage.Abstractions/IFileStorage.cs b/src/ExtCore.FileStorage.Abstractions/IFileStorage.cs index 72b4cc8..722958a 100644 --- a/src/ExtCore.FileStorage.Abstractions/IFileStorage.cs +++ b/src/ExtCore.FileStorage.Abstractions/IFileStorage.cs @@ -1,26 +1,25 @@ // Copyright © 2018 Dmitry Sikorsky. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. -namespace ExtCore.FileStorage.Abstractions +namespace ExtCore.FileStorage.Abstractions; + +/// +/// Describes a generic file storage that allows to manipulate directories and files via proxies. +/// +public interface IFileStorage { /// - /// Describes a generic file storage that allows to manipulate directories and files via proxies. + /// Creates a directory proxy which allows to manipulate an underlying directory with a specified relative path. /// - public interface IFileStorage - { - /// - /// Creates a directory proxy which allows to manipulate an underlying directory with a specified relative path. - /// - /// The path of the underlying directory relatively to the root one. - /// Created directory proxy. - IDirectoryProxy CreateDirectoryProxy(string relativePath); + /// The path of the underlying directory relatively to the root one. + /// Created directory proxy. + IDirectoryProxy CreateDirectoryProxy(string relativePath); - /// - /// Creates a file proxy which allows to manipulate an underlying file with a specified relative path and a filename. - /// - /// The path of the underlying file relatively to the root one. - /// The filename of the underlying file. - /// Created file proxy. - IFileProxy CreateFileProxy(string relativePath, string filename); - } + /// + /// Creates a file proxy which allows to manipulate an underlying file with a specified relative path and a filename. + /// + /// The path of the underlying file relatively to the root one. + /// The filename of the underlying file. + /// Created file proxy. + IFileProxy CreateFileProxy(string relativePath, string filename); } \ No newline at end of file diff --git a/src/ExtCore.FileStorage.Azure/DirectoryProxy.cs b/src/ExtCore.FileStorage.Azure/DirectoryProxy.cs index 6e0be3d..d6b474b 100644 --- a/src/ExtCore.FileStorage.Azure/DirectoryProxy.cs +++ b/src/ExtCore.FileStorage.Azure/DirectoryProxy.cs @@ -10,216 +10,215 @@ using Azure.Storage.Blobs.Models; using ExtCore.FileStorage.Abstractions; -namespace ExtCore.FileStorage.Azure +namespace ExtCore.FileStorage.Azure; + +/// +/// Implements the IDirectoryProxy interface and represents a directory in a Azure Storage account. +/// +public class DirectoryProxy : IDirectoryProxy { + private readonly string connectionString; + private readonly string rootPath; + private readonly string path; + private readonly string containerName; + private readonly string prefix; + + /// + /// The path of the underlying directory relatively to the root one. + /// + public string RelativePath { get; private set; } + /// - /// Implements the IDirectoryProxy interface and represents a directory in a Azure Storage account. + /// Initializes a new instance of the DirectoryProxy class. /// - public class DirectoryProxy : IDirectoryProxy + /// The Azure Storage account connection string. + /// The root path of the underlying directory's relative one. + /// The path of the underlying directory relatively to the root one. + /// + /// + public DirectoryProxy(string connectionString, string rootPath, string relativePath) { - private readonly string connectionString; - private readonly string rootPath; - private readonly string path; - private readonly string containerName; - private readonly string prefix; - - /// - /// The path of the underlying directory relatively to the root one. - /// - public string RelativePath { get; private set; } - - /// - /// Initializes a new instance of the DirectoryProxy class. - /// - /// The Azure Storage account connection string. - /// The root path of the underlying directory's relative one. - /// The path of the underlying directory relatively to the root one. - /// - /// - public DirectoryProxy(string connectionString, string rootPath, string relativePath) - { - if (connectionString == string.Empty) - throw new ArgumentException($"Value can't be empty. Parameter name: connectionString."); + if (connectionString == string.Empty) + throw new ArgumentException($"Value can't be empty. Parameter name: connectionString."); - if (connectionString == null) - throw new ArgumentNullException($"Value can't be null. Parameter name: connectionString.", default(Exception)); + if (connectionString == null) + throw new ArgumentNullException($"Value can't be null. Parameter name: connectionString.", default(Exception)); - this.connectionString = connectionString; - this.rootPath = RelativeUrl.Combine(rootPath); - this.RelativePath = RelativeUrl.Combine(relativePath); - this.path = RelativeUrl.Combine(this.rootPath, this.RelativePath); + this.connectionString = connectionString; + this.rootPath = RelativeUrl.Combine(rootPath); + this.RelativePath = RelativeUrl.Combine(relativePath); + this.path = RelativeUrl.Combine(this.rootPath, this.RelativePath); - string[] urlSegments = path.Split('/'); + string[] urlSegments = path.Split('/'); - this.containerName = urlSegments.First(); - this.prefix = string.Join("/", urlSegments.Skip(1)); - } + this.containerName = urlSegments.First(); + this.prefix = string.Join("/", urlSegments.Skip(1)); + } - /// - /// Checks if the underlying directory exists. - /// - /// Returns a flag indicating if the underlying directory exists. - public async Task ExistsAsync() + /// + /// Checks if the underlying directory exists. + /// + /// Returns a flag indicating if the underlying directory exists. + public async Task ExistsAsync() + { + try { - try - { - BlobContainerClient blobContainerClient = this.GetBlobContainerClient(); - IAsyncEnumerable> pages = blobContainerClient.GetBlobsByHierarchyAsync(prefix: this.prefix).AsPages(); + BlobContainerClient blobContainerClient = this.GetBlobContainerClient(); + IAsyncEnumerable> pages = blobContainerClient.GetBlobsByHierarchyAsync(prefix: this.prefix).AsPages(); - await foreach (Page page in pages) - return page.Values.Count != 0; - } + await foreach (Page page in pages) + return page.Values.Count != 0; + } - catch { } + catch { } - return false; - } + return false; + } - /// - /// Creates the underlying directory. - /// - /// - /// - /// - /// - public async Task CreateAsync() - { - throw new NotSupportedException(); - } + /// + /// Creates the underlying directory. + /// + /// + /// + /// + /// + public async Task CreateAsync() + { + throw new NotSupportedException(); + } - /// - /// Moves the underlying directory. - /// - /// - /// - /// - /// - /// - /// - /// - public async Task MoveAsync(string destinationRelativePath) - { - throw new NotSupportedException(); - } + /// + /// Moves the underlying directory. + /// + /// + /// + /// + /// + /// + /// + /// + public async Task MoveAsync(string destinationRelativePath) + { + throw new NotSupportedException(); + } - /// - /// Deletes the underlying directory. - /// - /// Pass true to remove all the underlying directory content recursively; otherwise false. - /// - /// - /// - /// - public async Task DeleteAsync(bool recursive) + /// + /// Deletes the underlying directory. + /// + /// Pass true to remove all the underlying directory content recursively; otherwise false. + /// + /// + /// + /// + public async Task DeleteAsync(bool recursive) + { + try { - try - { - BlobContainerClient blobContainerClient = this.GetBlobContainerClient(); + BlobContainerClient blobContainerClient = this.GetBlobContainerClient(); - if (string.IsNullOrEmpty(this.prefix)) - { - await blobContainerClient.DeleteAsync(); - return; - } + if (string.IsNullOrEmpty(this.prefix)) + { + await blobContainerClient.DeleteAsync(); + return; + } - string prefix = this.prefix + "/"; - IAsyncEnumerable> pages = blobContainerClient.GetBlobsByHierarchyAsync(prefix: prefix, delimiter: recursive ? null : "/").AsPages(); + string prefix = this.prefix + "/"; + IAsyncEnumerable> pages = blobContainerClient.GetBlobsByHierarchyAsync(prefix: prefix, delimiter: recursive ? null : "/").AsPages(); - await foreach (Page page in pages) + await foreach (Page page in pages) + { + foreach (BlobHierarchyItem blobItem in page.Values) { - foreach (BlobHierarchyItem blobItem in page.Values) + if (blobItem.IsBlob) { - if (blobItem.IsBlob) - { - BlobClient blobClient = await this.GetBlobClient(blobItem.Blob); + BlobClient blobClient = await this.GetBlobClient(blobItem.Blob); - await blobClient.DeleteAsync(); - } + await blobClient.DeleteAsync(); } } } - - catch (Exception e) - { - throw new FileStorageException($"Generic file storage exception: \"{this.path}\". See inner exception for details.", e); - } } - /// - /// Gets the directory proxies for the directories inside the underlying one. - /// - /// The directory proxies for the directories inside the underlying one - /// - /// - /// - /// - public async Task> GetDirectoryProxiesAsync() + catch (Exception e) { - try - { - IList directoryProxies = new List(); - BlobContainerClient blobContainerClient = this.GetBlobContainerClient(); - string prefix = string.IsNullOrEmpty(this.prefix) ? null : this.prefix + "/"; - IAsyncEnumerable> pages = blobContainerClient.GetBlobsByHierarchyAsync(prefix: prefix, delimiter: "/").AsPages(); + throw new FileStorageException($"Generic file storage exception: \"{this.path}\". See inner exception for details.", e); + } + } - await foreach (Page page in pages) - foreach (BlobHierarchyItem blobItem in page.Values) - if (blobItem.IsPrefix) - directoryProxies.Add(new DirectoryProxy(this.connectionString, this.rootPath, RelativeUrl.Combine(this.RelativePath, RelativeUrl.Combine(blobItem.Prefix).Split('/').Last()))); + /// + /// Gets the directory proxies for the directories inside the underlying one. + /// + /// The directory proxies for the directories inside the underlying one + /// + /// + /// + /// + public async Task> GetDirectoryProxiesAsync() + { + try + { + IList directoryProxies = new List(); + BlobContainerClient blobContainerClient = this.GetBlobContainerClient(); + string prefix = string.IsNullOrEmpty(this.prefix) ? null : this.prefix + "/"; + IAsyncEnumerable> pages = blobContainerClient.GetBlobsByHierarchyAsync(prefix: prefix, delimiter: "/").AsPages(); - return directoryProxies; - } + await foreach (Page page in pages) + foreach (BlobHierarchyItem blobItem in page.Values) + if (blobItem.IsPrefix) + directoryProxies.Add(new DirectoryProxy(this.connectionString, this.rootPath, RelativeUrl.Combine(this.RelativePath, RelativeUrl.Combine(blobItem.Prefix).Split('/').Last()))); - catch (Exception e) - { - throw new FileStorageException($"Generic file storage exception: \"{this.path}\". See inner exception for details.", e); - } + return directoryProxies; } - /// - /// Gets the file proxies for the files inside the underlying one. - /// - /// The file proxies for the files inside the underlying directory. - /// - /// - /// - /// - public async Task> GetFileProxiesAsync() + catch (Exception e) { - try - { - IList fileProxies = new List(); - BlobContainerClient blobContainerClient = this.GetBlobContainerClient(); - string prefix = string.IsNullOrEmpty(this.prefix) ? null : this.prefix + "/"; - IAsyncEnumerable> pages = blobContainerClient.GetBlobsByHierarchyAsync(prefix: prefix, delimiter: "/").AsPages(); + throw new FileStorageException($"Generic file storage exception: \"{this.path}\". See inner exception for details.", e); + } + } - await foreach (Page page in pages) - foreach (BlobHierarchyItem blobItem in page.Values) - if (blobItem.IsBlob) - fileProxies.Add(new FileProxy(this.connectionString, this.rootPath, this.RelativePath, blobItem.Blob.Name.Split('/').Last())); + /// + /// Gets the file proxies for the files inside the underlying one. + /// + /// The file proxies for the files inside the underlying directory. + /// + /// + /// + /// + public async Task> GetFileProxiesAsync() + { + try + { + IList fileProxies = new List(); + BlobContainerClient blobContainerClient = this.GetBlobContainerClient(); + string prefix = string.IsNullOrEmpty(this.prefix) ? null : this.prefix + "/"; + IAsyncEnumerable> pages = blobContainerClient.GetBlobsByHierarchyAsync(prefix: prefix, delimiter: "/").AsPages(); - return fileProxies; - } + await foreach (Page page in pages) + foreach (BlobHierarchyItem blobItem in page.Values) + if (blobItem.IsBlob) + fileProxies.Add(new FileProxy(this.connectionString, this.rootPath, this.RelativePath, blobItem.Blob.Name.Split('/').Last())); - catch (Exception e) - { - throw new FileStorageException($"Generic file storage exception: \"{this.path}\". See inner exception for details.", e); - } + return fileProxies; } - private BlobContainerClient GetBlobContainerClient() + catch (Exception e) { - BlobServiceClient blobServiceClient = new BlobServiceClient(this.connectionString); - - return blobServiceClient.GetBlobContainerClient(this.containerName); + throw new FileStorageException($"Generic file storage exception: \"{this.path}\". See inner exception for details.", e); } + } - private async Task GetBlobClient(BlobItem blobItem) - { - BlobContainerClient blobContainerClient = this.GetBlobContainerClient(); + private BlobContainerClient GetBlobContainerClient() + { + BlobServiceClient blobServiceClient = new BlobServiceClient(this.connectionString); - await blobContainerClient.CreateIfNotExistsAsync(); - return blobContainerClient.GetBlobClient(blobItem.Name); - } + return blobServiceClient.GetBlobContainerClient(this.containerName); + } + + private async Task GetBlobClient(BlobItem blobItem) + { + BlobContainerClient blobContainerClient = this.GetBlobContainerClient(); + + await blobContainerClient.CreateIfNotExistsAsync(); + return blobContainerClient.GetBlobClient(blobItem.Name); } } \ No newline at end of file diff --git a/src/ExtCore.FileStorage.Azure/FileProxy.cs b/src/ExtCore.FileStorage.Azure/FileProxy.cs index b95a2ba..9fced27 100644 --- a/src/ExtCore.FileStorage.Azure/FileProxy.cs +++ b/src/ExtCore.FileStorage.Azure/FileProxy.cs @@ -9,260 +9,259 @@ using Azure.Storage.Blobs.Models; using ExtCore.FileStorage.Abstractions; -namespace ExtCore.FileStorage.Azure +namespace ExtCore.FileStorage.Azure; + +/// +/// Implements the IDirectoryProxy interface and represents a file in a Azure Storage account. +/// +public class FileProxy : IFileProxy { + private readonly string connectionString; + private readonly string filepath; + private readonly string containerName; + private readonly string blobName; + + /// + /// The path of the underlying file relatively to the root one. + /// + public string RelativePath { get; private set; } + + /// + /// The filename of the underlying file. + /// + public string Filename { get; private set; } + /// - /// Implements the IDirectoryProxy interface and represents a file in a Azure Storage account. + /// Initializes a new instance of the FileProxy class. /// - public class FileProxy : IFileProxy + /// The Azure Storage account connection string. + /// The root path of the underlying file's relative one. + /// The path of the underlying file relatively to the root one. + /// The filename of the underlying file. + /// + /// + public FileProxy(string connectionString, string rootPath, string relativePath, string filename) { - private readonly string connectionString; - private readonly string filepath; - private readonly string containerName; - private readonly string blobName; - - /// - /// The path of the underlying file relatively to the root one. - /// - public string RelativePath { get; private set; } - - /// - /// The filename of the underlying file. - /// - public string Filename { get; private set; } - - /// - /// Initializes a new instance of the FileProxy class. - /// - /// The Azure Storage account connection string. - /// The root path of the underlying file's relative one. - /// The path of the underlying file relatively to the root one. - /// The filename of the underlying file. - /// - /// - public FileProxy(string connectionString, string rootPath, string relativePath, string filename) - { - if (connectionString == string.Empty) - throw new ArgumentException($"Value can't be empty. Parameter name: connectionString."); + if (connectionString == string.Empty) + throw new ArgumentException($"Value can't be empty. Parameter name: connectionString."); + + if (connectionString == null) + throw new ArgumentNullException($"Value can't be null. Parameter name: connectionString.", default(Exception)); - if (connectionString == null) - throw new ArgumentNullException($"Value can't be null. Parameter name: connectionString.", default(Exception)); + if (filename == string.Empty) + throw new ArgumentException($"Value can't be empty. Parameter name: filename."); - if (filename == string.Empty) - throw new ArgumentException($"Value can't be empty. Parameter name: filename."); + if (filename == null) + throw new ArgumentNullException($"Value can't be null. Parameter name: filename.", default(Exception)); - if (filename == null) - throw new ArgumentNullException($"Value can't be null. Parameter name: filename.", default(Exception)); + this.connectionString = connectionString; + this.RelativePath = RelativeUrl.Combine(relativePath); + this.Filename = filename; + this.filepath = RelativeUrl.Combine(rootPath, this.RelativePath, this.Filename); - this.connectionString = connectionString; - this.RelativePath = RelativeUrl.Combine(relativePath); - this.Filename = filename; - this.filepath = RelativeUrl.Combine(rootPath, this.RelativePath, this.Filename); + string[] urlSegments = filepath.Split('/'); + + this.containerName = urlSegments.First(); + this.blobName = string.Join("/", urlSegments.Skip(1)); + } - string[] urlSegments = filepath.Split('/'); + /// + /// Checks if the underlying file exists. + /// + /// Returns a flag indicating if the underlying file exists. + public async Task ExistsAsync() + { + try + { + BlobClient blobClient = await this.GetBlobClient(); - this.containerName = urlSegments.First(); - this.blobName = string.Join("/", urlSegments.Skip(1)); + return await blobClient.ExistsAsync(); } - /// - /// Checks if the underlying file exists. - /// - /// Returns a flag indicating if the underlying file exists. - public async Task ExistsAsync() + catch { - try - { - BlobClient blobClient = await this.GetBlobClient(); + return false; + } + } - return await blobClient.ExistsAsync(); - } + /// + /// Reads content of the underlying file as a byte array. + /// + /// Content of the underlying file as a byte array. + /// + /// + /// + /// + /// + public async Task ReadStreamAsync() + { + try + { + BlobClient blobClient = await this.GetBlobClient(); + MemoryStream stream = new MemoryStream(); - catch - { - return false; - } + await blobClient.DownloadToAsync(stream); + stream.Position = 0; + return stream; } - /// - /// Reads content of the underlying file as a byte array. - /// - /// Content of the underlying file as a byte array. - /// - /// - /// - /// - /// - public async Task ReadStreamAsync() + catch (Exception e) { - try - { - BlobClient blobClient = await this.GetBlobClient(); - MemoryStream stream = new MemoryStream(); - - await blobClient.DownloadToAsync(stream); - stream.Position = 0; - return stream; - } - - catch (Exception e) - { - throw new FileStorageException($"Generic file storage exception: \"{this.filepath}\". See inner exception for details.", e); - } + throw new FileStorageException($"Generic file storage exception: \"{this.filepath}\". See inner exception for details.", e); } + } - /// - /// Reads content of the underlying file as a byte array. - /// - /// Content of the underlying file as a byte array. - /// - /// - /// - /// - /// - public async Task ReadBytesAsync() + /// + /// Reads content of the underlying file as a byte array. + /// + /// Content of the underlying file as a byte array. + /// + /// + /// + /// + /// + public async Task ReadBytesAsync() + { + try { - try - { - BlobClient blobClient = await this.GetBlobClient(); - BlobDownloadResult downloadResult = await blobClient.DownloadContentAsync(); - - return downloadResult.Content.ToArray(); - } - - catch (Exception e) - { - throw new FileStorageException($"Generic file storage exception: \"{this.filepath}\". See inner exception for details.", e); - } + BlobClient blobClient = await this.GetBlobClient(); + BlobDownloadResult downloadResult = await blobClient.DownloadContentAsync(); + + return downloadResult.Content.ToArray(); } - /// - /// Reads content of the underlying file as a text string. - /// - /// Content of the underlying file as a text string. - /// - /// - /// - /// - /// - public async Task ReadTextAsync() + catch (Exception e) { - try - { - BlobClient blobClient = await this.GetBlobClient(); - BlobDownloadResult downloadResult = await blobClient.DownloadContentAsync(); - - return downloadResult.Content.ToString(); - } - - catch (Exception e) - { - throw new FileStorageException($"Generic file storage exception: \"{this.filepath}\". See inner exception for details.", e); - } + throw new FileStorageException($"Generic file storage exception: \"{this.filepath}\". See inner exception for details.", e); } + } - /// - /// Writes content to the underlying file as a stream. - /// - /// Content to write to the underlying file as a stream. - /// - /// - /// - /// - /// - public async Task WriteStreamAsync(Stream inputStream) + /// + /// Reads content of the underlying file as a text string. + /// + /// Content of the underlying file as a text string. + /// + /// + /// + /// + /// + public async Task ReadTextAsync() + { + try { - try - { - BlobClient blobClient = await this.GetBlobClient(); + BlobClient blobClient = await this.GetBlobClient(); + BlobDownloadResult downloadResult = await blobClient.DownloadContentAsync(); - await blobClient.UploadAsync(inputStream); - } + return downloadResult.Content.ToString(); + } - catch (Exception e) - { - throw new FileStorageException($"Generic file storage exception: \"{this.filepath}\". See inner exception for details.", e); - } + catch (Exception e) + { + throw new FileStorageException($"Generic file storage exception: \"{this.filepath}\". See inner exception for details.", e); } + } - /// - /// Writes content to the underlying file as a byte array. - /// - /// Content to write to the underlying file as a byte array. - /// - /// - /// - /// - /// - public async Task WriteBytesAsync(byte[] bytes) + /// + /// Writes content to the underlying file as a stream. + /// + /// Content to write to the underlying file as a stream. + /// + /// + /// + /// + /// + public async Task WriteStreamAsync(Stream inputStream) + { + try { - try - { - BlobClient blobClient = await this.GetBlobClient(); + BlobClient blobClient = await this.GetBlobClient(); - await blobClient.UploadAsync(BinaryData.FromBytes(bytes)); - } + await blobClient.UploadAsync(inputStream); + } - catch (Exception e) - { - throw new FileStorageException($"Generic file storage exception: \"{this.filepath}\". See inner exception for details.", e); - } + catch (Exception e) + { + throw new FileStorageException($"Generic file storage exception: \"{this.filepath}\". See inner exception for details.", e); } + } - /// - /// Writes content to the underlying file as a text string. - /// - /// Content to write to the underlying file as a text string. - /// - /// - /// - /// - /// - public async Task WriteTextAsync(string text) + /// + /// Writes content to the underlying file as a byte array. + /// + /// Content to write to the underlying file as a byte array. + /// + /// + /// + /// + /// + public async Task WriteBytesAsync(byte[] bytes) + { + try { - try - { - BlobClient blobClient = await this.GetBlobClient(); + BlobClient blobClient = await this.GetBlobClient(); - await blobClient.UploadAsync(BinaryData.FromString(text)); - } + await blobClient.UploadAsync(BinaryData.FromBytes(bytes)); + } - catch (Exception e) - { - throw new FileStorageException($"Generic file storage exception: \"{this.filepath}\". See inner exception for details.", e); - } + catch (Exception e) + { + throw new FileStorageException($"Generic file storage exception: \"{this.filepath}\". See inner exception for details.", e); } + } - /// - /// Deletes the underlying file. - /// - /// - /// - /// - /// - /// - public async Task DeleteAsync() + /// + /// Writes content to the underlying file as a text string. + /// + /// Content to write to the underlying file as a text string. + /// + /// + /// + /// + /// + public async Task WriteTextAsync(string text) + { + try { - try - { - BlobClient blobClient = await this.GetBlobClient(); + BlobClient blobClient = await this.GetBlobClient(); - await blobClient.DeleteAsync(); - } + await blobClient.UploadAsync(BinaryData.FromString(text)); + } - catch (Exception e) - { - throw new FileStorageException($"Generic file storage exception: \"{this.filepath}\". See inner exception for details.", e); - } + catch (Exception e) + { + throw new FileStorageException($"Generic file storage exception: \"{this.filepath}\". See inner exception for details.", e); } + } - private async Task GetBlobClient() + /// + /// Deletes the underlying file. + /// + /// + /// + /// + /// + /// + public async Task DeleteAsync() + { + try { - BlobServiceClient blobServiceClient = new BlobServiceClient(this.connectionString); - BlobContainerClient blobContainerClient = blobServiceClient.GetBlobContainerClient(this.containerName); + BlobClient blobClient = await this.GetBlobClient(); - await blobContainerClient.CreateIfNotExistsAsync(); - return blobContainerClient.GetBlobClient(this.blobName); + await blobClient.DeleteAsync(); } + + catch (Exception e) + { + throw new FileStorageException($"Generic file storage exception: \"{this.filepath}\". See inner exception for details.", e); + } + } + + private async Task GetBlobClient() + { + BlobServiceClient blobServiceClient = new BlobServiceClient(this.connectionString); + BlobContainerClient blobContainerClient = blobServiceClient.GetBlobContainerClient(this.containerName); + + await blobContainerClient.CreateIfNotExistsAsync(); + return blobContainerClient.GetBlobClient(this.blobName); } } \ No newline at end of file diff --git a/src/ExtCore.FileStorage.Azure/FileStorage.cs b/src/ExtCore.FileStorage.Azure/FileStorage.cs index 71868e1..b5a9b2b 100644 --- a/src/ExtCore.FileStorage.Azure/FileStorage.cs +++ b/src/ExtCore.FileStorage.Azure/FileStorage.cs @@ -4,45 +4,44 @@ using ExtCore.FileStorage.Abstractions; using Microsoft.Extensions.Options; -namespace ExtCore.FileStorage.Azure +namespace ExtCore.FileStorage.Azure; + +/// +/// Implements the IFileStorage interface and represents a file storage in a Azure Storage account. +/// +public class FileStorage : IFileStorage { + private readonly string secret; + private readonly string rootPath; + /// - /// Implements the IFileStorage interface and represents a file storage in a Azure Storage account. + /// Initializes a new instance of the FileStorage class. /// - public class FileStorage : IFileStorage + /// The options that are used to configure the file storage root path. + public FileStorage(IOptions options) { - private readonly string secret; - private readonly string rootPath; - - /// - /// Initializes a new instance of the FileStorage class. - /// - /// The options that are used to configure the file storage root path. - public FileStorage(IOptions options) - { - this.secret = options.Value.Secret; - this.rootPath = options.Value.RootPath; - } + this.secret = options.Value.Secret; + this.rootPath = options.Value.RootPath; + } - /// - /// Creates a directory proxy which allows to manipulate an underlying directory with a specified relative path. - /// - /// The path of the underlying directory relatively to the root one. - /// Created directory proxy. - public IDirectoryProxy CreateDirectoryProxy(string relativePath) - { - return new DirectoryProxy(this.secret, this.rootPath, relativePath); - } + /// + /// Creates a directory proxy which allows to manipulate an underlying directory with a specified relative path. + /// + /// The path of the underlying directory relatively to the root one. + /// Created directory proxy. + public IDirectoryProxy CreateDirectoryProxy(string relativePath) + { + return new DirectoryProxy(this.secret, this.rootPath, relativePath); + } - /// - /// Creates a file proxy which allows to manipulate an underlying file with a specified relative path and a filename. - /// - /// The path of the underlying file relatively to the root one. - /// The filename of the underlying file. - /// Created file proxy. - public IFileProxy CreateFileProxy(string relativePath, string filename) - { - return new FileProxy(this.secret, this.rootPath, relativePath, filename); - } + /// + /// Creates a file proxy which allows to manipulate an underlying file with a specified relative path and a filename. + /// + /// The path of the underlying file relatively to the root one. + /// The filename of the underlying file. + /// Created file proxy. + public IFileProxy CreateFileProxy(string relativePath, string filename) + { + return new FileProxy(this.secret, this.rootPath, relativePath, filename); } } \ No newline at end of file diff --git a/src/ExtCore.FileStorage.Azure/RelativeUrl.cs b/src/ExtCore.FileStorage.Azure/RelativeUrl.cs index b220ecf..539139f 100644 --- a/src/ExtCore.FileStorage.Azure/RelativeUrl.cs +++ b/src/ExtCore.FileStorage.Azure/RelativeUrl.cs @@ -4,18 +4,17 @@ using System; using System.Linq; -namespace ExtCore.FileStorage.Azure +namespace ExtCore.FileStorage.Azure; + +public static class RelativeUrl { - public static class RelativeUrl + public static string Combine(params string[] segments) { - public static string Combine(params string[] segments) - { - return string.Join( - "/", - segments.Where(s => !string.IsNullOrEmpty(s)).Select( - s => string.Join("/", s.Split(new char[] { '/', '\\' }, StringSplitOptions.RemoveEmptyEntries)) - ).Where(s => !string.IsNullOrEmpty(s)) - ); - } + return string.Join( + "/", + segments.Where(s => !string.IsNullOrEmpty(s)).Select( + s => string.Join("/", s.Split(new char[] { '/', '\\' }, StringSplitOptions.RemoveEmptyEntries)) + ).Where(s => !string.IsNullOrEmpty(s)) + ); } } \ No newline at end of file diff --git a/src/ExtCore.FileStorage.Dropbox/DirectoryProxy.cs b/src/ExtCore.FileStorage.Dropbox/DirectoryProxy.cs index bfb15f1..f18de8c 100644 --- a/src/ExtCore.FileStorage.Dropbox/DirectoryProxy.cs +++ b/src/ExtCore.FileStorage.Dropbox/DirectoryProxy.cs @@ -9,144 +9,178 @@ using Dropbox.Api.Files; using ExtCore.FileStorage.Abstractions; -namespace ExtCore.FileStorage.Dropbox +namespace ExtCore.FileStorage.Dropbox; + +/// +/// Implements the IDirectoryProxy interface and represents a directory in a Dropbox account. +/// +public class DirectoryProxy : IDirectoryProxy { + private readonly string accessToken; + private readonly string rootPath; + private readonly string path; + /// - /// Implements the IDirectoryProxy interface and represents a directory in a Dropbox account. + /// The path of the underlying directory relatively to the root one. /// - public class DirectoryProxy : IDirectoryProxy + public string RelativePath { get; private set; } + + /// + /// Initializes a new instance of the DirectoryProxy class. + /// + /// The Dropbox's account access token. + /// The root path of the underlying directory's relative one. + /// The path of the underlying directory relatively to the root one. + /// + /// + public DirectoryProxy(string accessToken, string rootPath, string relativePath) { - private readonly string accessToken; - private readonly string rootPath; - private readonly string path; - - /// - /// The path of the underlying directory relatively to the root one. - /// - public string RelativePath { get; private set; } - - /// - /// Initializes a new instance of the DirectoryProxy class. - /// - /// The Dropbox's account access token. - /// The root path of the underlying directory's relative one. - /// The path of the underlying directory relatively to the root one. - /// - /// - public DirectoryProxy(string accessToken, string rootPath, string relativePath) - { - if (accessToken == string.Empty) - throw new ArgumentException($"Value can't be empty. Parameter name: accessToken."); + if (accessToken == string.Empty) + throw new ArgumentException($"Value can't be empty. Parameter name: accessToken."); - if (accessToken == null) - throw new ArgumentNullException($"Value can't be null. Parameter name: accessToken.", default(Exception)); + if (accessToken == null) + throw new ArgumentNullException($"Value can't be null. Parameter name: accessToken.", default(Exception)); - this.accessToken = accessToken; - this.rootPath = RelativeUrl.Combine(rootPath); - this.RelativePath = RelativeUrl.Combine(relativePath); - this.path = RelativeUrl.Combine(this.rootPath, this.RelativePath); + this.accessToken = accessToken; + this.rootPath = RelativeUrl.Combine(rootPath); + this.RelativePath = RelativeUrl.Combine(relativePath); + this.path = RelativeUrl.Combine(this.rootPath, this.RelativePath); - if (string.Equals(this.path, "/")) - this.path = string.Empty; - } + if (string.Equals(this.path, "/")) + this.path = string.Empty; + } - /// - /// Checks if the underlying directory exists. - /// - /// Returns a flag indicating if the underlying directory exists. - public async Task ExistsAsync() + /// + /// Checks if the underlying directory exists. + /// + /// Returns a flag indicating if the underlying directory exists. + public async Task ExistsAsync() + { + try { - try + using (DropboxClient dropboxClient = new DropboxClient(this.accessToken)) { - using (DropboxClient dropboxClient = new DropboxClient(this.accessToken)) - { - Metadata metadata = await dropboxClient.Files.GetMetadataAsync(this.path); + Metadata metadata = await dropboxClient.Files.GetMetadataAsync(this.path); - return metadata.IsFolder; - } + return metadata.IsFolder; } + } + + catch { return false; } + } - catch { return false; } + /// + /// Creates the underlying directory. + /// + /// + /// + /// + /// + public async Task CreateAsync() + { + try + { + using (DropboxClient dropboxClient = new DropboxClient(this.accessToken)) + await dropboxClient.Files.CreateFolderV2Async(this.path); } - /// - /// Creates the underlying directory. - /// - /// - /// - /// - /// - public async Task CreateAsync() + catch (Exception e) { - try - { - using (DropboxClient dropboxClient = new DropboxClient(this.accessToken)) - await dropboxClient.Files.CreateFolderV2Async(this.path); - } + throw new FileStorageException($"Generic file storage exception: \"{this.path}\". See inner exception for details.", e); + } + } - catch (Exception e) - { - throw new FileStorageException($"Generic file storage exception: \"{this.path}\". See inner exception for details.", e); - } + /// + /// Moves the underlying directory. + /// + /// + /// + /// + /// + /// + /// + /// + public async Task MoveAsync(string destinationRelativePath) + { + if (destinationRelativePath == string.Empty) + throw new ArgumentException($"Value can't be empty. Parameter name: destinationRelativePath."); + + if (destinationRelativePath == null) + throw new ArgumentNullException($"Value can't be null. Parameter name: destinationRelativePath.", default(Exception)); + + try + { + using (DropboxClient dropboxClient = new DropboxClient(this.accessToken)) + await dropboxClient.Files.MoveV2Async(this.path, RelativeUrl.Combine(this.rootPath, destinationRelativePath)); } - /// - /// Moves the underlying directory. - /// - /// - /// - /// - /// - /// - /// - /// - public async Task MoveAsync(string destinationRelativePath) + catch (ApiException e) { - if (destinationRelativePath == string.Empty) - throw new ArgumentException($"Value can't be empty. Parameter name: destinationRelativePath."); + if (e.ErrorResponse.IsFromLookup) + throw new DirectoryNotFoundException($"Directory not found: \"{this.path}\". See inner exception for details.", e); - if (destinationRelativePath == null) - throw new ArgumentNullException($"Value can't be null. Parameter name: destinationRelativePath.", default(Exception)); + throw new FileStorageException($"Generic file storage exception: \"{this.path}\". See inner exception for details.", e); + } - try - { - using (DropboxClient dropboxClient = new DropboxClient(this.accessToken)) - await dropboxClient.Files.MoveV2Async(this.path, RelativeUrl.Combine(this.rootPath, destinationRelativePath)); - } + catch (Exception e) + { + throw new FileStorageException($"Generic file storage exception: \"{this.path}\". See inner exception for details.", e); + } + } - catch (ApiException e) - { - if (e.ErrorResponse.IsFromLookup) - throw new DirectoryNotFoundException($"Directory not found: \"{this.path}\". See inner exception for details.", e); + /// + /// Deletes the underlying directory. + /// + /// Pass true to remove all the underlying directory content recursively; otherwise false. + /// + /// + /// + /// + public async Task DeleteAsync(bool recursive) + { + try + { + using (DropboxClient dropboxClient = new DropboxClient(this.accessToken)) + await dropboxClient.Files.DeleteV2Async(this.path); + } - throw new FileStorageException($"Generic file storage exception: \"{this.path}\". See inner exception for details.", e); - } + catch (ApiException e) + { + if (e.ErrorResponse.IsPathLookup) + throw new DirectoryNotFoundException($"Directory not found: \"{this.path}\". See inner exception for details.", e); - catch (Exception e) - { - throw new FileStorageException($"Generic file storage exception: \"{this.path}\". See inner exception for details.", e); - } + throw new FileStorageException($"Generic file storage exception: \"{this.path}\". See inner exception for details.", e); + } + + catch (Exception e) + { + throw new FileStorageException($"Generic file storage exception: \"{this.path}\". See inner exception for details.", e); } + } - /// - /// Deletes the underlying directory. - /// - /// Pass true to remove all the underlying directory content recursively; otherwise false. - /// - /// - /// - /// - public async Task DeleteAsync(bool recursive) + /// + /// Gets the directory proxies for the directories inside the underlying one. + /// + /// The directory proxies for the directories inside the underlying one + /// + /// + /// + /// + public async Task> GetDirectoryProxiesAsync() + { + using (DropboxClient dropboxClient = new DropboxClient(this.accessToken)) { + IList directoryProxies = new List(); + try { - using (DropboxClient dropboxClient = new DropboxClient(this.accessToken)) - await dropboxClient.Files.DeleteV2Async(this.path); + foreach (Metadata metadata in (await dropboxClient.Files.ListFolderAsync(this.path)).Entries.Where(m => m.IsFolder)) + directoryProxies.Add(new DirectoryProxy(this.accessToken, this.rootPath, metadata.PathDisplay.Substring(this.rootPath.Length))); } - catch (ApiException e) + catch (ApiException e) { - if (e.ErrorResponse.IsPathLookup) + if (e.ErrorResponse.IsPath) throw new DirectoryNotFoundException($"Directory not found: \"{this.path}\". See inner exception for details.", e); throw new FileStorageException($"Generic file storage exception: \"{this.path}\". See inner exception for details.", e); @@ -156,89 +190,54 @@ public async Task DeleteAsync(bool recursive) { throw new FileStorageException($"Generic file storage exception: \"{this.path}\". See inner exception for details.", e); } + + return directoryProxies; } + } - /// - /// Gets the directory proxies for the directories inside the underlying one. - /// - /// The directory proxies for the directories inside the underlying one - /// - /// - /// - /// - public async Task> GetDirectoryProxiesAsync() + /// + /// Gets the file proxies for the files inside the underlying one. + /// + /// The file proxies for the files inside the underlying directory. + /// + /// + /// + /// + public async Task> GetFileProxiesAsync() + { + using (DropboxClient dropboxClient = new DropboxClient(this.accessToken)) { - using (DropboxClient dropboxClient = new DropboxClient(this.accessToken)) - { - IList directoryProxies = new List(); + IList fileProxies = new List(); - try + try + { + foreach (Metadata metadata in (await dropboxClient.Files.ListFolderAsync(this.path)).Entries.Where(m => m.IsFile)) { - foreach (Metadata metadata in (await dropboxClient.Files.ListFolderAsync(this.path)).Entries.Where(m => m.IsFolder)) - directoryProxies.Add(new DirectoryProxy(this.accessToken, this.rootPath, metadata.PathDisplay.Substring(this.rootPath.Length))); - } + string relativePath = metadata.PathDisplay; - catch (ApiException e) - { - if (e.ErrorResponse.IsPath) - throw new DirectoryNotFoundException($"Directory not found: \"{this.path}\". See inner exception for details.", e); + relativePath = relativePath.Substring(this.rootPath.Length); - throw new FileStorageException($"Generic file storage exception: \"{this.path}\". See inner exception for details.", e); - } + if (relativePath.Contains("/")) + relativePath = relativePath.Remove(relativePath.LastIndexOf("/")); - catch (Exception e) - { - throw new FileStorageException($"Generic file storage exception: \"{this.path}\". See inner exception for details.", e); + fileProxies.Add(new FileProxy(this.accessToken, this.rootPath, relativePath, metadata.Name)); } - - return directoryProxies; } - } - /// - /// Gets the file proxies for the files inside the underlying one. - /// - /// The file proxies for the files inside the underlying directory. - /// - /// - /// - /// - public async Task> GetFileProxiesAsync() - { - using (DropboxClient dropboxClient = new DropboxClient(this.accessToken)) + catch (ApiException e) { - IList fileProxies = new List(); - - try - { - foreach (Metadata metadata in (await dropboxClient.Files.ListFolderAsync(this.path)).Entries.Where(m => m.IsFile)) - { - string relativePath = metadata.PathDisplay; - - relativePath = relativePath.Substring(this.rootPath.Length); - - if (relativePath.Contains("/")) - relativePath = relativePath.Remove(relativePath.LastIndexOf("/")); - - fileProxies.Add(new FileProxy(this.accessToken, this.rootPath, relativePath, metadata.Name)); - } - } - - catch (ApiException e) - { - if (e.ErrorResponse.IsPath) - throw new DirectoryNotFoundException($"Directory not found: \"{this.path}\". See inner exception for details.", e); - - throw new FileStorageException($"Generic file storage exception: \"{this.path}\". See inner exception for details.", e); - } + if (e.ErrorResponse.IsPath) + throw new DirectoryNotFoundException($"Directory not found: \"{this.path}\". See inner exception for details.", e); - catch (Exception e) - { - throw new FileStorageException($"Generic file storage exception: \"{this.path}\". See inner exception for details.", e); - } + throw new FileStorageException($"Generic file storage exception: \"{this.path}\". See inner exception for details.", e); + } - return fileProxies; + catch (Exception e) + { + throw new FileStorageException($"Generic file storage exception: \"{this.path}\". See inner exception for details.", e); } + + return fileProxies; } } } \ No newline at end of file diff --git a/src/ExtCore.FileStorage.Dropbox/FileProxy.cs b/src/ExtCore.FileStorage.Dropbox/FileProxy.cs index 7507606..e4fe2d1 100644 --- a/src/ExtCore.FileStorage.Dropbox/FileProxy.cs +++ b/src/ExtCore.FileStorage.Dropbox/FileProxy.cs @@ -10,268 +10,267 @@ using Dropbox.Api.Stone; using ExtCore.FileStorage.Abstractions; -namespace ExtCore.FileStorage.Dropbox +namespace ExtCore.FileStorage.Dropbox; + +/// +/// Implements the IDirectoryProxy interface and represents a file in a Dropbox account. +/// +public class FileProxy : IFileProxy { + private readonly string accessToken; + private readonly string rootPath; + private readonly string filepath; + /// - /// Implements the IDirectoryProxy interface and represents a file in a Dropbox account. + /// The path of the underlying file relatively to the root one. /// - public class FileProxy : IFileProxy + public string RelativePath { get; private set; } + + /// + /// The filename of the underlying file. + /// + public string Filename { get; private set; } + + /// + /// Initializes a new instance of the FileProxy class. + /// + /// The Dropbox's account access token. + /// The root path of the underlying file's relative one. + /// The path of the underlying file relatively to the root one. + /// The filename of the underlying file. + /// + /// + public FileProxy(string accessToken, string rootPath, string relativePath, string filename) { - private readonly string accessToken; - private readonly string rootPath; - private readonly string filepath; - - /// - /// The path of the underlying file relatively to the root one. - /// - public string RelativePath { get; private set; } - - /// - /// The filename of the underlying file. - /// - public string Filename { get; private set; } - - /// - /// Initializes a new instance of the FileProxy class. - /// - /// The Dropbox's account access token. - /// The root path of the underlying file's relative one. - /// The path of the underlying file relatively to the root one. - /// The filename of the underlying file. - /// - /// - public FileProxy(string accessToken, string rootPath, string relativePath, string filename) - { - if (accessToken == string.Empty) - throw new ArgumentException($"Value can't be empty. Parameter name: accessToken."); + if (accessToken == string.Empty) + throw new ArgumentException($"Value can't be empty. Parameter name: accessToken."); - if (accessToken == null) - throw new ArgumentNullException($"Value can't be null. Parameter name: accessToken.", default(Exception)); + if (accessToken == null) + throw new ArgumentNullException($"Value can't be null. Parameter name: accessToken.", default(Exception)); - if (filename == string.Empty) - throw new ArgumentException($"Value can't be empty. Parameter name: filename."); + if (filename == string.Empty) + throw new ArgumentException($"Value can't be empty. Parameter name: filename."); - if (filename == null) - throw new ArgumentNullException($"Value can't be null. Parameter name: filename.", default(Exception)); + if (filename == null) + throw new ArgumentNullException($"Value can't be null. Parameter name: filename.", default(Exception)); - this.accessToken = accessToken; - this.rootPath = RelativeUrl.Combine(rootPath); - this.RelativePath = RelativeUrl.Combine(relativePath); - this.Filename = filename; - this.filepath = RelativeUrl.Combine(this.rootPath, this.RelativePath, this.Filename); - } + this.accessToken = accessToken; + this.rootPath = RelativeUrl.Combine(rootPath); + this.RelativePath = RelativeUrl.Combine(relativePath); + this.Filename = filename; + this.filepath = RelativeUrl.Combine(this.rootPath, this.RelativePath, this.Filename); + } - /// - /// Checks if the underlying file exists. - /// - /// Returns a flag indicating if the underlying file exists. - public async Task ExistsAsync() + /// + /// Checks if the underlying file exists. + /// + /// Returns a flag indicating if the underlying file exists. + public async Task ExistsAsync() + { + try { - try + using (DropboxClient dropboxClient = new DropboxClient(this.accessToken)) { - using (DropboxClient dropboxClient = new DropboxClient(this.accessToken)) - { - Metadata metadata = await dropboxClient.Files.GetMetadataAsync(this.filepath); + Metadata metadata = await dropboxClient.Files.GetMetadataAsync(this.filepath); - return metadata.IsFile; - } + return metadata.IsFile; } - - catch { return false; } } - /// - /// Reads content of the underlying file as a byte array. - /// - /// Content of the underlying file as a byte array. - /// - /// - /// - /// - /// - public async Task ReadStreamAsync() + catch { return false; } + } + + /// + /// Reads content of the underlying file as a byte array. + /// + /// Content of the underlying file as a byte array. + /// + /// + /// + /// + /// + public async Task ReadStreamAsync() + { + try { - try - { - using (DropboxClient dropboxClient = new DropboxClient(this.accessToken)) - using (IDownloadResponse response = await dropboxClient.Files.DownloadAsync(this.filepath)) - return await response.GetContentAsStreamAsync(); - } + using (DropboxClient dropboxClient = new DropboxClient(this.accessToken)) + using (IDownloadResponse response = await dropboxClient.Files.DownloadAsync(this.filepath)) + return await response.GetContentAsStreamAsync(); + } - catch (ApiException e) - { - if (e.ErrorResponse.IsPath) - throw new DirectoryNotFoundException($"Directory not found: \"{this.filepath}\". See inner exception for details.", e); + catch (ApiException e) + { + if (e.ErrorResponse.IsPath) + throw new DirectoryNotFoundException($"Directory not found: \"{this.filepath}\". See inner exception for details.", e); - throw new FileStorageException($"Generic file storage exception: \"{this.filepath}\". See inner exception for details.", e); - } + throw new FileStorageException($"Generic file storage exception: \"{this.filepath}\". See inner exception for details.", e); + } - catch (Exception e) - { - throw new FileStorageException($"Generic file storage exception: \"{this.filepath}\". See inner exception for details.", e); - } + catch (Exception e) + { + throw new FileStorageException($"Generic file storage exception: \"{this.filepath}\". See inner exception for details.", e); } + } - /// - /// Reads content of the underlying file as a byte array. - /// - /// Content of the underlying file as a byte array. - /// - /// - /// - /// - /// - public async Task ReadBytesAsync() + /// + /// Reads content of the underlying file as a byte array. + /// + /// Content of the underlying file as a byte array. + /// + /// + /// + /// + /// + public async Task ReadBytesAsync() + { + try { - try - { - using (DropboxClient dropboxClient = new DropboxClient(this.accessToken)) - using (IDownloadResponse response = await dropboxClient.Files.DownloadAsync(this.filepath)) - return await response.GetContentAsByteArrayAsync(); - } + using (DropboxClient dropboxClient = new DropboxClient(this.accessToken)) + using (IDownloadResponse response = await dropboxClient.Files.DownloadAsync(this.filepath)) + return await response.GetContentAsByteArrayAsync(); + } - catch (ApiException e) - { - if (e.ErrorResponse.IsPath) - throw new DirectoryNotFoundException($"Directory not found: \"{this.filepath}\". See inner exception for details.", e); + catch (ApiException e) + { + if (e.ErrorResponse.IsPath) + throw new DirectoryNotFoundException($"Directory not found: \"{this.filepath}\". See inner exception for details.", e); - throw new FileStorageException($"Generic file storage exception: \"{this.filepath}\". See inner exception for details.", e); - } + throw new FileStorageException($"Generic file storage exception: \"{this.filepath}\". See inner exception for details.", e); + } - catch (Exception e) - { - throw new FileStorageException($"Generic file storage exception: \"{this.filepath}\". See inner exception for details.", e); - } + catch (Exception e) + { + throw new FileStorageException($"Generic file storage exception: \"{this.filepath}\". See inner exception for details.", e); } + } - /// - /// Reads content of the underlying file as a text string. - /// - /// Content of the underlying file as a text string. - /// - /// - /// - /// - /// - public async Task ReadTextAsync() + /// + /// Reads content of the underlying file as a text string. + /// + /// Content of the underlying file as a text string. + /// + /// + /// + /// + /// + public async Task ReadTextAsync() + { + try { - try - { - using (DropboxClient dropboxClient = new DropboxClient(this.accessToken)) - using (IDownloadResponse response = await dropboxClient.Files.DownloadAsync(this.filepath)) - return await response.GetContentAsStringAsync(); - } + using (DropboxClient dropboxClient = new DropboxClient(this.accessToken)) + using (IDownloadResponse response = await dropboxClient.Files.DownloadAsync(this.filepath)) + return await response.GetContentAsStringAsync(); + } - catch (ApiException e) - { - if (e.ErrorResponse.IsPath) - throw new DirectoryNotFoundException($"Directory not found: \"{this.filepath}\". See inner exception for details.", e); + catch (ApiException e) + { + if (e.ErrorResponse.IsPath) + throw new DirectoryNotFoundException($"Directory not found: \"{this.filepath}\". See inner exception for details.", e); - throw new FileStorageException($"Generic file storage exception: \"{this.filepath}\". See inner exception for details.", e); - } + throw new FileStorageException($"Generic file storage exception: \"{this.filepath}\". See inner exception for details.", e); + } - catch (Exception e) - { - throw new FileStorageException($"Generic file storage exception: \"{this.filepath}\". See inner exception for details.", e); - } + catch (Exception e) + { + throw new FileStorageException($"Generic file storage exception: \"{this.filepath}\". See inner exception for details.", e); } + } - /// - /// Writes content to the underlying file as a stream. - /// - /// Content to write to the underlying file as a stream. - /// - /// - /// - /// - /// - public async Task WriteStreamAsync(Stream inputStream) + /// + /// Writes content to the underlying file as a stream. + /// + /// Content to write to the underlying file as a stream. + /// + /// + /// + /// + /// + public async Task WriteStreamAsync(Stream inputStream) + { + try { - try - { - using (DropboxClient dropboxClient = new DropboxClient(this.accessToken)) - await dropboxClient.Files.UploadAsync(this.filepath, WriteMode.Overwrite.Instance, body: inputStream); - } + using (DropboxClient dropboxClient = new DropboxClient(this.accessToken)) + await dropboxClient.Files.UploadAsync(this.filepath, WriteMode.Overwrite.Instance, body: inputStream); + } - catch (Exception e) - { - throw new FileStorageException($"Generic file storage exception: \"{this.filepath}\". See inner exception for details.", e); - } + catch (Exception e) + { + throw new FileStorageException($"Generic file storage exception: \"{this.filepath}\". See inner exception for details.", e); } + } - /// - /// Writes content to the underlying file as a byte array. - /// - /// Content to write to the underlying file as a byte array. - /// - /// - /// - /// - /// - public async Task WriteBytesAsync(byte[] bytes) + /// + /// Writes content to the underlying file as a byte array. + /// + /// Content to write to the underlying file as a byte array. + /// + /// + /// + /// + /// + public async Task WriteBytesAsync(byte[] bytes) + { + try { - try - { - using (MemoryStream inputStream = new MemoryStream(bytes)) - await this.WriteStreamAsync(inputStream); - } + using (MemoryStream inputStream = new MemoryStream(bytes)) + await this.WriteStreamAsync(inputStream); + } - catch (Exception e) - { - throw new FileStorageException($"Generic file storage exception: \"{this.filepath}\". See inner exception for details.", e); - } + catch (Exception e) + { + throw new FileStorageException($"Generic file storage exception: \"{this.filepath}\". See inner exception for details.", e); } + } - /// - /// Writes content to the underlying file as a text string. - /// - /// Content to write to the underlying file as a text string. - /// - /// - /// - /// - /// - public async Task WriteTextAsync(string text) + /// + /// Writes content to the underlying file as a text string. + /// + /// Content to write to the underlying file as a text string. + /// + /// + /// + /// + /// + public async Task WriteTextAsync(string text) + { + try { - try - { - await this.WriteBytesAsync(Encoding.UTF8.GetBytes(text)); - } + await this.WriteBytesAsync(Encoding.UTF8.GetBytes(text)); + } - catch (Exception e) - { - throw new FileStorageException($"Generic file storage exception: \"{this.filepath}\". See inner exception for details.", e); - } + catch (Exception e) + { + throw new FileStorageException($"Generic file storage exception: \"{this.filepath}\". See inner exception for details.", e); } + } - /// - /// Deletes the underlying file. - /// - /// - /// - /// - /// - /// - public async Task DeleteAsync() + /// + /// Deletes the underlying file. + /// + /// + /// + /// + /// + /// + public async Task DeleteAsync() + { + try { - try - { - using (DropboxClient dropboxClient = new DropboxClient(this.accessToken)) - await dropboxClient.Files.DeleteV2Async(this.filepath); - } + using (DropboxClient dropboxClient = new DropboxClient(this.accessToken)) + await dropboxClient.Files.DeleteV2Async(this.filepath); + } - catch (ApiException e) - { - if (e.ErrorResponse.IsPath) - throw new DirectoryNotFoundException($"Directory not found: \"{this.filepath}\". See inner exception for details.", e); + catch (ApiException e) + { + if (e.ErrorResponse.IsPath) + throw new DirectoryNotFoundException($"Directory not found: \"{this.filepath}\". See inner exception for details.", e); - throw new FileStorageException($"Generic file storage exception: \"{this.filepath}\". See inner exception for details.", e); - } + throw new FileStorageException($"Generic file storage exception: \"{this.filepath}\". See inner exception for details.", e); + } - catch (Exception e) - { - throw new FileStorageException($"Generic file storage exception: \"{this.filepath}\". See inner exception for details.", e); - } + catch (Exception e) + { + throw new FileStorageException($"Generic file storage exception: \"{this.filepath}\". See inner exception for details.", e); } } } \ No newline at end of file diff --git a/src/ExtCore.FileStorage.Dropbox/FileStorage.cs b/src/ExtCore.FileStorage.Dropbox/FileStorage.cs index 4df55ab..ab5f7a2 100644 --- a/src/ExtCore.FileStorage.Dropbox/FileStorage.cs +++ b/src/ExtCore.FileStorage.Dropbox/FileStorage.cs @@ -4,45 +4,44 @@ using ExtCore.FileStorage.Abstractions; using Microsoft.Extensions.Options; -namespace ExtCore.FileStorage.Dropbox +namespace ExtCore.FileStorage.Dropbox; + +/// +/// Implements the IFileStorage interface and represents a file storage in a Dropbox account. +/// +public class FileStorage : IFileStorage { + private readonly string secret; + private readonly string rootPath; + /// - /// Implements the IFileStorage interface and represents a file storage in a Dropbox account. + /// Initializes a new instance of the FileStorage class. /// - public class FileStorage : IFileStorage + /// The options that are used to configure the file storage root path. + public FileStorage(IOptions options) { - private readonly string secret; - private readonly string rootPath; - - /// - /// Initializes a new instance of the FileStorage class. - /// - /// The options that are used to configure the file storage root path. - public FileStorage(IOptions options) - { - this.secret = options.Value.Secret; - this.rootPath = options.Value.RootPath; - } + this.secret = options.Value.Secret; + this.rootPath = options.Value.RootPath; + } - /// - /// Creates a directory proxy which allows to manipulate an underlying directory with a specified relative path. - /// - /// The path of the underlying directory relatively to the root one. - /// Created directory proxy. - public IDirectoryProxy CreateDirectoryProxy(string relativePath) - { - return new DirectoryProxy(this.secret, this.rootPath, relativePath); - } + /// + /// Creates a directory proxy which allows to manipulate an underlying directory with a specified relative path. + /// + /// The path of the underlying directory relatively to the root one. + /// Created directory proxy. + public IDirectoryProxy CreateDirectoryProxy(string relativePath) + { + return new DirectoryProxy(this.secret, this.rootPath, relativePath); + } - /// - /// Creates a file proxy which allows to manipulate an underlying file with a specified relative path and a filename. - /// - /// The path of the underlying file relatively to the root one. - /// The filename of the underlying file. - /// Created file proxy. - public IFileProxy CreateFileProxy(string relativePath, string filename) - { - return new FileProxy(this.secret, this.rootPath, relativePath, filename); - } + /// + /// Creates a file proxy which allows to manipulate an underlying file with a specified relative path and a filename. + /// + /// The path of the underlying file relatively to the root one. + /// The filename of the underlying file. + /// Created file proxy. + public IFileProxy CreateFileProxy(string relativePath, string filename) + { + return new FileProxy(this.secret, this.rootPath, relativePath, filename); } } \ No newline at end of file diff --git a/src/ExtCore.FileStorage.Dropbox/RelativeUrl.cs b/src/ExtCore.FileStorage.Dropbox/RelativeUrl.cs index 56303c1..298b9a0 100644 --- a/src/ExtCore.FileStorage.Dropbox/RelativeUrl.cs +++ b/src/ExtCore.FileStorage.Dropbox/RelativeUrl.cs @@ -4,18 +4,17 @@ using System; using System.Linq; -namespace ExtCore.FileStorage.Dropbox +namespace ExtCore.FileStorage.Dropbox; + +public static class RelativeUrl { - public static class RelativeUrl + public static string Combine(params string[] segments) { - public static string Combine(params string[] segments) - { - return "/" + string.Join( - "/", - segments.Where(s => !string.IsNullOrEmpty(s)).Select( - s => string.Join("/", s.Split(new char[] { '/', '\\' }, StringSplitOptions.RemoveEmptyEntries)) - ).Where(s => !string.IsNullOrEmpty(s)) - ); - } + return "/" + string.Join( + "/", + segments.Where(s => !string.IsNullOrEmpty(s)).Select( + s => string.Join("/", s.Split(new char[] { '/', '\\' }, StringSplitOptions.RemoveEmptyEntries)) + ).Where(s => !string.IsNullOrEmpty(s)) + ); } } \ No newline at end of file diff --git a/src/ExtCore.FileStorage.FileSystem/AbsolutePath.cs b/src/ExtCore.FileStorage.FileSystem/AbsolutePath.cs index cab4a3b..1c27920 100644 --- a/src/ExtCore.FileStorage.FileSystem/AbsolutePath.cs +++ b/src/ExtCore.FileStorage.FileSystem/AbsolutePath.cs @@ -5,18 +5,17 @@ using System.IO; using System.Linq; -namespace ExtCore.FileStorage.FileSystem +namespace ExtCore.FileStorage.FileSystem; + +public static class AbsolutePath { - public static class AbsolutePath + public static string Combine(params string[] segments) { - public static string Combine(params string[] segments) - { - return string.Join( - Path.DirectorySeparatorChar.ToString(), - segments.Where(s => !string.IsNullOrEmpty(s)).Select( - s => string.Join(Path.DirectorySeparatorChar.ToString(), s.Split(new char[] { '/', '\\' }, StringSplitOptions.RemoveEmptyEntries)) - ).Where(s => !string.IsNullOrEmpty(s)) - ); - } + return string.Join( + Path.DirectorySeparatorChar.ToString(), + segments.Where(s => !string.IsNullOrEmpty(s)).Select( + s => string.Join(Path.DirectorySeparatorChar.ToString(), s.Split(new char[] { '/', '\\' }, StringSplitOptions.RemoveEmptyEntries)) + ).Where(s => !string.IsNullOrEmpty(s)) + ); } } \ No newline at end of file diff --git a/src/ExtCore.FileStorage.FileSystem/DirectoryProxy.cs b/src/ExtCore.FileStorage.FileSystem/DirectoryProxy.cs index c135a8d..d7f1dce 100644 --- a/src/ExtCore.FileStorage.FileSystem/DirectoryProxy.cs +++ b/src/ExtCore.FileStorage.FileSystem/DirectoryProxy.cs @@ -8,103 +8,184 @@ using System.Threading.Tasks; using ExtCore.FileStorage.Abstractions; -namespace ExtCore.FileStorage.FileSystem +namespace ExtCore.FileStorage.FileSystem; + +/// +/// Implements the IDirectoryProxy interface and represents a directory in a file system. +/// +public class DirectoryProxy : IDirectoryProxy { + private readonly string rootPath; + private readonly string path; + + /// + /// The path of the underlying directory relatively to the root one. + /// + public string RelativePath { get; private set; } + /// - /// Implements the IDirectoryProxy interface and represents a directory in a file system. + /// Initializes a new instance of the DirectoryProxy class. /// - public class DirectoryProxy : IDirectoryProxy + /// The root path of the underlying directory's relative one. + /// The path of the underlying directory relatively to the root one. + public DirectoryProxy(string rootPath, string relativePath) { - private readonly string rootPath; - private readonly string path; - - /// - /// The path of the underlying directory relatively to the root one. - /// - public string RelativePath { get; private set; } - - /// - /// Initializes a new instance of the DirectoryProxy class. - /// - /// The root path of the underlying directory's relative one. - /// The path of the underlying directory relatively to the root one. - public DirectoryProxy(string rootPath, string relativePath) - { - this.rootPath = AbsolutePath.Combine(rootPath); - this.RelativePath = AbsolutePath.Combine(relativePath); - this.path = AbsolutePath.Combine(this.rootPath, this.RelativePath); - } - - /// - /// Checks if the underlying directory exists. - /// - /// Returns a flag indicating if the underlying directory exists. - public async Task ExistsAsync() + this.rootPath = AbsolutePath.Combine(rootPath); + this.RelativePath = AbsolutePath.Combine(relativePath); + this.path = AbsolutePath.Combine(this.rootPath, this.RelativePath); + } + + /// + /// Checks if the underlying directory exists. + /// + /// Returns a flag indicating if the underlying directory exists. + public async Task ExistsAsync() + { + return await Task.Factory.StartNew(() => Directory.Exists(this.path)); + } + + /// + /// Creates the underlying directory. + /// + /// + /// + /// + /// + public async Task CreateAsync() + { + await Task.Factory.StartNew(() => { - return await Task.Factory.StartNew(() => Directory.Exists(this.path)); - } - - /// - /// Creates the underlying directory. - /// - /// - /// - /// - /// - public async Task CreateAsync() + try + { + Directory.CreateDirectory(this.path); + } + + catch (UnauthorizedAccessException e) + { + throw new AccessDeniedException($"Access denied: \"{this.path}\". See inner exception for details.", e); + } + + catch (System.IO.DirectoryNotFoundException e) + { + throw new DirectoryNotFoundException($"Directory not found: \"{this.path}\". See inner exception for details.", e); + } + + catch (System.IO.PathTooLongException e) + { + throw new PathTooLongException($"Path too long: \"{this.path}\". See inner exception for details.", e); + } + + catch (Exception e) + { + throw new FileStorageException($"Generic file storage exception: \"{this.path}\". See inner exception for details.", e); + } + }); + } + + /// + /// Moves the underlying directory. + /// + /// + /// + /// + /// + /// + /// + /// + public async Task MoveAsync(string destinationRelativePath) + { + if (destinationRelativePath == string.Empty) + throw new ArgumentException($"Value can't be empty. Parameter name: destinationRelativePath."); + + if (destinationRelativePath == null) + throw new ArgumentNullException($"Value can't be null. Parameter name: destinationRelativePath.", default(Exception)); + + await Task.Factory.StartNew(() => { - await Task.Factory.StartNew(() => + try { - try - { - Directory.CreateDirectory(this.path); - } + Directory.Move(this.path, this.rootPath + destinationRelativePath); + } - catch (UnauthorizedAccessException e) - { - throw new AccessDeniedException($"Access denied: \"{this.path}\". See inner exception for details.", e); - } + catch (UnauthorizedAccessException e) + { + throw new AccessDeniedException($"Access denied: \"{this.path}\". See inner exception for details.", e); + } - catch (System.IO.DirectoryNotFoundException e) - { - throw new DirectoryNotFoundException($"Directory not found: \"{this.path}\". See inner exception for details.", e); - } + catch (System.IO.DirectoryNotFoundException e) + { + throw new DirectoryNotFoundException($"Directory not found: \"{this.path}\". See inner exception for details.", e); + } - catch (System.IO.PathTooLongException e) - { - throw new PathTooLongException($"Path too long: \"{this.path}\". See inner exception for details.", e); - } + catch (System.IO.PathTooLongException e) + { + throw new PathTooLongException($"Path too long: \"{this.path}\". See inner exception for details.", e); + } - catch (Exception e) - { - throw new FileStorageException($"Generic file storage exception: \"{this.path}\". See inner exception for details.", e); - } - }); - } - - /// - /// Moves the underlying directory. - /// - /// - /// - /// - /// - /// - /// - /// - public async Task MoveAsync(string destinationRelativePath) + catch (Exception e) + { + throw new FileStorageException($"Generic file storage exception: \"{this.path}\". See inner exception for details.", e); + } + }); + } + + /// + /// Deletes the underlying directory. + /// + /// Pass true to remove all the underlying directory content recursively; otherwise false. + /// + /// + /// + /// + public async Task DeleteAsync(bool recursive) + { + await Task.Factory.StartNew(() => { - if (destinationRelativePath == string.Empty) - throw new ArgumentException($"Value can't be empty. Parameter name: destinationRelativePath."); + try + { + Directory.Delete(this.path, recursive); + } + + catch (UnauthorizedAccessException e) + { + throw new AccessDeniedException($"Access denied: \"{this.path}\". See inner exception for details.", e); + } - if (destinationRelativePath == null) - throw new ArgumentNullException($"Value can't be null. Parameter name: destinationRelativePath.", default(Exception)); + catch (System.IO.DirectoryNotFoundException e) + { + throw new DirectoryNotFoundException($"Directory not found: \"{this.path}\". See inner exception for details.", e); + } + + catch (System.IO.PathTooLongException e) + { + throw new PathTooLongException($"Path too long: \"{this.path}\". See inner exception for details.", e); + } - await Task.Factory.StartNew(() => + catch (Exception e) + { + throw new FileStorageException($"Generic file storage exception: \"{this.path}\". See inner exception for details.", e); + } + }); + } + + /// + /// Gets the directory proxies for the directories inside the underlying one. + /// + /// The directory proxies for the directories inside the underlying one + /// + /// + /// + /// + public async Task> GetDirectoryProxiesAsync() + { + return await Task>.Factory.StartNew( + () => { try { - Directory.Move(this.path, this.rootPath + destinationRelativePath); + return Directory.GetDirectories(this.path).Select( + d => new DirectoryProxy(this.rootPath, d.Substring(this.rootPath.Length)) + ); } catch (UnauthorizedAccessException e) @@ -126,24 +207,35 @@ await Task.Factory.StartNew(() => { throw new FileStorageException($"Generic file storage exception: \"{this.path}\". See inner exception for details.", e); } - }); - } - - /// - /// Deletes the underlying directory. - /// - /// Pass true to remove all the underlying directory content recursively; otherwise false. - /// - /// - /// - /// - public async Task DeleteAsync(bool recursive) - { - await Task.Factory.StartNew(() => + } + ); + } + + /// + /// Gets the file proxies for the files inside the underlying one. + /// + /// The file proxies for the files inside the underlying directory. + /// + /// + /// + /// + public async Task> GetFileProxiesAsync() + { + return await Task>.Factory.StartNew( + () => { try { - Directory.Delete(this.path, recursive); + return Directory.GetFiles(this.path).Select( + f => + { + string relativePath = f; + + relativePath = relativePath.Substring(this.rootPath.Length); + relativePath = relativePath.Remove(relativePath.LastIndexOf(Path.DirectorySeparatorChar)); + return new FileProxy(this.rootPath, relativePath, f.Substring(f.LastIndexOf(Path.DirectorySeparatorChar) + 1)); + } + ); } catch (UnauthorizedAccessException e) @@ -165,100 +257,7 @@ await Task.Factory.StartNew(() => { throw new FileStorageException($"Generic file storage exception: \"{this.path}\". See inner exception for details.", e); } - }); - } - - /// - /// Gets the directory proxies for the directories inside the underlying one. - /// - /// The directory proxies for the directories inside the underlying one - /// - /// - /// - /// - public async Task> GetDirectoryProxiesAsync() - { - return await Task>.Factory.StartNew( - () => - { - try - { - return Directory.GetDirectories(this.path).Select( - d => new DirectoryProxy(this.rootPath, d.Substring(this.rootPath.Length)) - ); - } - - catch (UnauthorizedAccessException e) - { - throw new AccessDeniedException($"Access denied: \"{this.path}\". See inner exception for details.", e); - } - - catch (System.IO.DirectoryNotFoundException e) - { - throw new DirectoryNotFoundException($"Directory not found: \"{this.path}\". See inner exception for details.", e); - } - - catch (System.IO.PathTooLongException e) - { - throw new PathTooLongException($"Path too long: \"{this.path}\". See inner exception for details.", e); - } - - catch (Exception e) - { - throw new FileStorageException($"Generic file storage exception: \"{this.path}\". See inner exception for details.", e); - } - } - ); - } - - /// - /// Gets the file proxies for the files inside the underlying one. - /// - /// The file proxies for the files inside the underlying directory. - /// - /// - /// - /// - public async Task> GetFileProxiesAsync() - { - return await Task>.Factory.StartNew( - () => - { - try - { - return Directory.GetFiles(this.path).Select( - f => - { - string relativePath = f; - - relativePath = relativePath.Substring(this.rootPath.Length); - relativePath = relativePath.Remove(relativePath.LastIndexOf(Path.DirectorySeparatorChar)); - return new FileProxy(this.rootPath, relativePath, f.Substring(f.LastIndexOf(Path.DirectorySeparatorChar) + 1)); - } - ); - } - - catch (UnauthorizedAccessException e) - { - throw new AccessDeniedException($"Access denied: \"{this.path}\". See inner exception for details.", e); - } - - catch (System.IO.DirectoryNotFoundException e) - { - throw new DirectoryNotFoundException($"Directory not found: \"{this.path}\". See inner exception for details.", e); - } - - catch (System.IO.PathTooLongException e) - { - throw new PathTooLongException($"Path too long: \"{this.path}\". See inner exception for details.", e); - } - - catch (Exception e) - { - throw new FileStorageException($"Generic file storage exception: \"{this.path}\". See inner exception for details.", e); - } - } - ); - } + } + ); } } \ No newline at end of file diff --git a/src/ExtCore.FileStorage.FileSystem/FileProxy.cs b/src/ExtCore.FileStorage.FileSystem/FileProxy.cs index e86ac18..1a44a5d 100644 --- a/src/ExtCore.FileStorage.FileSystem/FileProxy.cs +++ b/src/ExtCore.FileStorage.FileSystem/FileProxy.cs @@ -7,382 +7,381 @@ using System.Threading.Tasks; using ExtCore.FileStorage.Abstractions; -namespace ExtCore.FileStorage.FileSystem +namespace ExtCore.FileStorage.FileSystem; + +/// +/// Implements the IDirectoryProxy interface and represents a file in a file system. +/// +public class FileProxy : IFileProxy { + private readonly string rootPath; + private readonly string filepath; + + /// + /// The path of the underlying file relatively to the root one. + /// + public string RelativePath { get; private set; } + /// - /// Implements the IDirectoryProxy interface and represents a file in a file system. + /// The filename of the underlying file. /// - public class FileProxy : IFileProxy + public string Filename { get; private set; } + + /// + /// Initializes a new instance of the FileProxy class. + /// + /// The root path of the underlying file's relative one. + /// The path of the underlying file relatively to the root one. + /// The filename of the underlying file. + /// + /// + public FileProxy(string rootPath, string relativePath, string filename) { - private readonly string rootPath; - private readonly string filepath; - - /// - /// The path of the underlying file relatively to the root one. - /// - public string RelativePath { get; private set; } - - /// - /// The filename of the underlying file. - /// - public string Filename { get; private set; } - - /// - /// Initializes a new instance of the FileProxy class. - /// - /// The root path of the underlying file's relative one. - /// The path of the underlying file relatively to the root one. - /// The filename of the underlying file. - /// - /// - public FileProxy(string rootPath, string relativePath, string filename) - { - if (filename == string.Empty) - throw new ArgumentException($"Value can't be empty. Parameter name: filename."); - - if (filename == null) - throw new ArgumentNullException($"Value can't be null. Parameter name: filename.", default(Exception)); - - this.rootPath = rootPath; - this.RelativePath = relativePath; - this.Filename = filename; - this.filepath = AbsolutePath.Combine(this.rootPath, this.RelativePath, this.Filename); - } - - /// - /// Checks if the underlying file exists. - /// - /// Returns a flag indicating if the underlying file exists. - public async Task ExistsAsync() - { - return await Task.Factory.StartNew(() => File.Exists(this.filepath)); - } - - /// - /// Reads content of the underlying file as a stream. - /// - /// Content of the underlying file as a stream. - /// - /// - /// - /// - /// - public async Task ReadStreamAsync() + if (filename == string.Empty) + throw new ArgumentException($"Value can't be empty. Parameter name: filename."); + + if (filename == null) + throw new ArgumentNullException($"Value can't be null. Parameter name: filename.", default(Exception)); + + this.rootPath = rootPath; + this.RelativePath = relativePath; + this.Filename = filename; + this.filepath = AbsolutePath.Combine(this.rootPath, this.RelativePath, this.Filename); + } + + /// + /// Checks if the underlying file exists. + /// + /// Returns a flag indicating if the underlying file exists. + public async Task ExistsAsync() + { + return await Task.Factory.StartNew(() => File.Exists(this.filepath)); + } + + /// + /// Reads content of the underlying file as a stream. + /// + /// Content of the underlying file as a stream. + /// + /// + /// + /// + /// + public async Task ReadStreamAsync() + { + return await Task.Factory.StartNew(() => { - return await Task.Factory.StartNew(() => - { - try - { - return File.Open(this.filepath, FileMode.Open); - } - - catch (UnauthorizedAccessException e) - { - throw new AccessDeniedException($"Access denied: \"{this.filepath}\". See inner exception for details.", e); - } - - catch (System.IO.DirectoryNotFoundException e) - { - throw new DirectoryNotFoundException($"Directory not found: \"{this.filepath}\". See inner exception for details.", e); - } - - catch (System.IO.FileNotFoundException e) - { - throw new FileNotFoundException($"File not found: \"{this.filepath}\". See inner exception for details.", e); - } - - catch (System.IO.PathTooLongException e) - { - throw new PathTooLongException($"Path too long: \"{this.filepath}\". See inner exception for details.", e); - } - - catch (Exception e) - { - throw new FileStorageException($"Generic file storage exception: \"{this.filepath}\". See inner exception for details.", e); - } - }); - } - - /// - /// Reads content of the underlying file as a byte array. - /// - /// Content of the underlying file as a byte array. - /// - /// - /// - /// - /// - public async Task ReadBytesAsync() + try + { + return File.Open(this.filepath, FileMode.Open); + } + + catch (UnauthorizedAccessException e) + { + throw new AccessDeniedException($"Access denied: \"{this.filepath}\". See inner exception for details.", e); + } + + catch (System.IO.DirectoryNotFoundException e) + { + throw new DirectoryNotFoundException($"Directory not found: \"{this.filepath}\". See inner exception for details.", e); + } + + catch (System.IO.FileNotFoundException e) + { + throw new FileNotFoundException($"File not found: \"{this.filepath}\". See inner exception for details.", e); + } + + catch (System.IO.PathTooLongException e) + { + throw new PathTooLongException($"Path too long: \"{this.filepath}\". See inner exception for details.", e); + } + + catch (Exception e) + { + throw new FileStorageException($"Generic file storage exception: \"{this.filepath}\". See inner exception for details.", e); + } + }); + } + + /// + /// Reads content of the underlying file as a byte array. + /// + /// Content of the underlying file as a byte array. + /// + /// + /// + /// + /// + public async Task ReadBytesAsync() + { + return await Task.Factory.StartNew(() => { - return await Task.Factory.StartNew(() => - { - try - { - return File.ReadAllBytes(this.filepath); - } - - catch (UnauthorizedAccessException e) - { - throw new AccessDeniedException($"Access denied: \"{this.filepath}\". See inner exception for details.", e); - } - - catch (SecurityException e) - { - throw new AccessDeniedException($"Access denied: \"{this.filepath}\". See inner exception for details.", e); - } - - catch (System.IO.DirectoryNotFoundException e) - { - throw new DirectoryNotFoundException($"Directory not found: \"{this.filepath}\". See inner exception for details.", e); - } - - catch (System.IO.FileNotFoundException e) - { - throw new FileNotFoundException($"File not found: \"{this.filepath}\". See inner exception for details.", e); - } - - catch (System.IO.PathTooLongException e) - { - throw new PathTooLongException($"Path too long: \"{this.filepath}\". See inner exception for details.", e); - } - - catch (Exception e) - { - throw new FileStorageException($"Generic file storage exception: \"{this.filepath}\". See inner exception for details.", e); - } - }); - } - - /// - /// Reads content of the underlying file as a text string. - /// - /// Content of the underlying file as a text string. - /// - /// - /// - /// - /// - public async Task ReadTextAsync() + try + { + return File.ReadAllBytes(this.filepath); + } + + catch (UnauthorizedAccessException e) + { + throw new AccessDeniedException($"Access denied: \"{this.filepath}\". See inner exception for details.", e); + } + + catch (SecurityException e) + { + throw new AccessDeniedException($"Access denied: \"{this.filepath}\". See inner exception for details.", e); + } + + catch (System.IO.DirectoryNotFoundException e) + { + throw new DirectoryNotFoundException($"Directory not found: \"{this.filepath}\". See inner exception for details.", e); + } + + catch (System.IO.FileNotFoundException e) + { + throw new FileNotFoundException($"File not found: \"{this.filepath}\". See inner exception for details.", e); + } + + catch (System.IO.PathTooLongException e) + { + throw new PathTooLongException($"Path too long: \"{this.filepath}\". See inner exception for details.", e); + } + + catch (Exception e) + { + throw new FileStorageException($"Generic file storage exception: \"{this.filepath}\". See inner exception for details.", e); + } + }); + } + + /// + /// Reads content of the underlying file as a text string. + /// + /// Content of the underlying file as a text string. + /// + /// + /// + /// + /// + public async Task ReadTextAsync() + { + return await Task.Factory.StartNew(() => { - return await Task.Factory.StartNew(() => - { - try - { - return File.ReadAllText(this.filepath); - } - - catch (UnauthorizedAccessException e) - { - throw new AccessDeniedException($"Access denied: \"{this.filepath}\". See inner exception for details.", e); - } - - catch (SecurityException e) - { - throw new AccessDeniedException($"Access denied: \"{this.filepath}\". See inner exception for details.", e); - } - - catch (System.IO.DirectoryNotFoundException e) - { - throw new DirectoryNotFoundException($"Directory not found: \"{this.filepath}\". See inner exception for details.", e); - } - - catch (System.IO.FileNotFoundException e) - { - throw new FileNotFoundException($"File not found: \"{this.filepath}\". See inner exception for details.", e); - } - - catch (System.IO.PathTooLongException e) - { - throw new PathTooLongException($"Path too long: \"{this.filepath}\". See inner exception for details.", e); - } - - catch (Exception e) - { - throw new FileStorageException($"Generic file storage exception: \"{this.filepath}\". See inner exception for details.", e); - } - }); - } - - /// - /// Writes content to the underlying file as a stream. - /// - /// Content to write to the underlying file as a stream. - /// - /// - /// - /// - /// - public async Task WriteStreamAsync(Stream inputStream) + try + { + return File.ReadAllText(this.filepath); + } + + catch (UnauthorizedAccessException e) + { + throw new AccessDeniedException($"Access denied: \"{this.filepath}\". See inner exception for details.", e); + } + + catch (SecurityException e) + { + throw new AccessDeniedException($"Access denied: \"{this.filepath}\". See inner exception for details.", e); + } + + catch (System.IO.DirectoryNotFoundException e) + { + throw new DirectoryNotFoundException($"Directory not found: \"{this.filepath}\". See inner exception for details.", e); + } + + catch (System.IO.FileNotFoundException e) + { + throw new FileNotFoundException($"File not found: \"{this.filepath}\". See inner exception for details.", e); + } + + catch (System.IO.PathTooLongException e) + { + throw new PathTooLongException($"Path too long: \"{this.filepath}\". See inner exception for details.", e); + } + + catch (Exception e) + { + throw new FileStorageException($"Generic file storage exception: \"{this.filepath}\". See inner exception for details.", e); + } + }); + } + + /// + /// Writes content to the underlying file as a stream. + /// + /// Content to write to the underlying file as a stream. + /// + /// + /// + /// + /// + public async Task WriteStreamAsync(Stream inputStream) + { + if (inputStream == null) + throw new ArgumentNullException($"Value can't be null. Parameter name: inputStream.", default(Exception)); + + await Task.Factory.StartNew(() => { - if (inputStream == null) - throw new ArgumentNullException($"Value can't be null. Parameter name: inputStream.", default(Exception)); - - await Task.Factory.StartNew(() => - { - try - { - using (Stream outputStream = File.Create(this.filepath)) - inputStream.CopyTo(outputStream); - } - - catch (UnauthorizedAccessException e) - { - throw new AccessDeniedException($"Access denied: \"{this.filepath}\". See inner exception for details.", e); - } - - catch (System.IO.DirectoryNotFoundException e) - { - throw new DirectoryNotFoundException($"Directory not found: \"{this.filepath}\". See inner exception for details.", e); - } - - catch (System.IO.PathTooLongException e) - { - throw new PathTooLongException($"Path too long: \"{this.filepath}\". See inner exception for details.", e); - } - - catch (Exception e) - { - throw new FileStorageException($"Generic file storage exception: \"{this.filepath}\". See inner exception for details.", e); - } - }); - } - - /// - /// Writes content to the underlying file as a byte array. - /// - /// Content to write to the underlying file as a byte array. - /// - /// - /// - /// - /// - public async Task WriteBytesAsync(byte[] bytes) + try + { + using (Stream outputStream = File.Create(this.filepath)) + inputStream.CopyTo(outputStream); + } + + catch (UnauthorizedAccessException e) + { + throw new AccessDeniedException($"Access denied: \"{this.filepath}\". See inner exception for details.", e); + } + + catch (System.IO.DirectoryNotFoundException e) + { + throw new DirectoryNotFoundException($"Directory not found: \"{this.filepath}\". See inner exception for details.", e); + } + + catch (System.IO.PathTooLongException e) + { + throw new PathTooLongException($"Path too long: \"{this.filepath}\". See inner exception for details.", e); + } + + catch (Exception e) + { + throw new FileStorageException($"Generic file storage exception: \"{this.filepath}\". See inner exception for details.", e); + } + }); + } + + /// + /// Writes content to the underlying file as a byte array. + /// + /// Content to write to the underlying file as a byte array. + /// + /// + /// + /// + /// + public async Task WriteBytesAsync(byte[] bytes) + { + if (bytes == null) + throw new ArgumentNullException($"Value can't be null. Parameter name: bytes.", default(Exception)); + + await Task.Factory.StartNew(() => { - if (bytes == null) - throw new ArgumentNullException($"Value can't be null. Parameter name: bytes.", default(Exception)); - - await Task.Factory.StartNew(() => - { - try - { - File.WriteAllBytes(this.filepath, bytes); - } - - catch (UnauthorizedAccessException e) - { - throw new AccessDeniedException($"Access denied: \"{this.filepath}\". See inner exception for details.", e); - } - - catch (SecurityException e) - { - throw new AccessDeniedException($"Access denied: \"{this.filepath}\". See inner exception for details.", e); - } - - catch (System.IO.DirectoryNotFoundException e) - { - throw new DirectoryNotFoundException($"Directory not found: \"{this.filepath}\". See inner exception for details.", e); - } - - catch (System.IO.PathTooLongException e) - { - throw new PathTooLongException($"Path too long: \"{this.filepath}\". See inner exception for details.", e); - } - - catch (Exception e) - { - throw new FileStorageException($"Generic file storage exception: \"{this.filepath}\". See inner exception for details.", e); - } - }); - } - - /// - /// Writes content to the underlying file as a text string. - /// - /// Content to write to the underlying file as a text string. - /// - /// - /// - /// - /// - public async Task WriteTextAsync(string text) + try + { + File.WriteAllBytes(this.filepath, bytes); + } + + catch (UnauthorizedAccessException e) + { + throw new AccessDeniedException($"Access denied: \"{this.filepath}\". See inner exception for details.", e); + } + + catch (SecurityException e) + { + throw new AccessDeniedException($"Access denied: \"{this.filepath}\". See inner exception for details.", e); + } + + catch (System.IO.DirectoryNotFoundException e) + { + throw new DirectoryNotFoundException($"Directory not found: \"{this.filepath}\". See inner exception for details.", e); + } + + catch (System.IO.PathTooLongException e) + { + throw new PathTooLongException($"Path too long: \"{this.filepath}\". See inner exception for details.", e); + } + + catch (Exception e) + { + throw new FileStorageException($"Generic file storage exception: \"{this.filepath}\". See inner exception for details.", e); + } + }); + } + + /// + /// Writes content to the underlying file as a text string. + /// + /// Content to write to the underlying file as a text string. + /// + /// + /// + /// + /// + public async Task WriteTextAsync(string text) + { + if (text == null) + throw new ArgumentNullException($"Value can't be null. Parameter name: text.", default(Exception)); + + await Task.Factory.StartNew(() => { - if (text == null) - throw new ArgumentNullException($"Value can't be null. Parameter name: text.", default(Exception)); - - await Task.Factory.StartNew(() => - { - try - { - File.WriteAllText(this.filepath, text); - } - - catch (UnauthorizedAccessException e) - { - throw new AccessDeniedException($"Access denied: \"{this.filepath}\". See inner exception for details.", e); - } - - catch (SecurityException e) - { - throw new AccessDeniedException($"Access denied: \"{this.filepath}\". See inner exception for details.", e); - } - - catch (System.IO.DirectoryNotFoundException e) - { - throw new DirectoryNotFoundException($"Directory not found: \"{this.filepath}\". See inner exception for details.", e); - } - - catch (System.IO.PathTooLongException e) - { - throw new PathTooLongException($"Path too long: \"{this.filepath}\". See inner exception for details.", e); - } - - catch (Exception e) - { - throw new FileStorageException($"Generic file storage exception: \"{this.filepath}\". See inner exception for details.", e); - } - }); - } - - /// - /// Deletes the underlying file. - /// - /// - /// - /// - /// - /// - public async Task DeleteAsync() + try + { + File.WriteAllText(this.filepath, text); + } + + catch (UnauthorizedAccessException e) + { + throw new AccessDeniedException($"Access denied: \"{this.filepath}\". See inner exception for details.", e); + } + + catch (SecurityException e) + { + throw new AccessDeniedException($"Access denied: \"{this.filepath}\". See inner exception for details.", e); + } + + catch (System.IO.DirectoryNotFoundException e) + { + throw new DirectoryNotFoundException($"Directory not found: \"{this.filepath}\". See inner exception for details.", e); + } + + catch (System.IO.PathTooLongException e) + { + throw new PathTooLongException($"Path too long: \"{this.filepath}\". See inner exception for details.", e); + } + + catch (Exception e) + { + throw new FileStorageException($"Generic file storage exception: \"{this.filepath}\". See inner exception for details.", e); + } + }); + } + + /// + /// Deletes the underlying file. + /// + /// + /// + /// + /// + /// + public async Task DeleteAsync() + { + await Task.Factory.StartNew(() => { - await Task.Factory.StartNew(() => - { - if (!File.Exists(this.filepath)) - throw new FileNotFoundException($"File not found: \"{this.filepath}\".", null); - - try - { - File.Delete(this.filepath); - } - - catch (UnauthorizedAccessException e) - { - throw new AccessDeniedException($"Access denied: \"{this.filepath}\". See inner exception for details.", e); - } - - catch (System.IO.DirectoryNotFoundException e) - { - throw new DirectoryNotFoundException($"Directory not found: \"{this.filepath}\". See inner exception for details.", e); - } - - catch (System.IO.PathTooLongException e) - { - throw new PathTooLongException($"Path too long: \"{this.filepath}\". See inner exception for details.", e); - } - - catch (Exception e) - { - throw new FileStorageException($"Generic file storage exception: \"{this.filepath}\". See inner exception for details.", e); - } - }); - } + if (!File.Exists(this.filepath)) + throw new FileNotFoundException($"File not found: \"{this.filepath}\".", null); + + try + { + File.Delete(this.filepath); + } + + catch (UnauthorizedAccessException e) + { + throw new AccessDeniedException($"Access denied: \"{this.filepath}\". See inner exception for details.", e); + } + + catch (System.IO.DirectoryNotFoundException e) + { + throw new DirectoryNotFoundException($"Directory not found: \"{this.filepath}\". See inner exception for details.", e); + } + + catch (System.IO.PathTooLongException e) + { + throw new PathTooLongException($"Path too long: \"{this.filepath}\". See inner exception for details.", e); + } + + catch (Exception e) + { + throw new FileStorageException($"Generic file storage exception: \"{this.filepath}\". See inner exception for details.", e); + } + }); } } \ No newline at end of file diff --git a/src/ExtCore.FileStorage.FileSystem/FileStorage.cs b/src/ExtCore.FileStorage.FileSystem/FileStorage.cs index 72692f4..2d308f6 100644 --- a/src/ExtCore.FileStorage.FileSystem/FileStorage.cs +++ b/src/ExtCore.FileStorage.FileSystem/FileStorage.cs @@ -4,43 +4,42 @@ using ExtCore.FileStorage.Abstractions; using Microsoft.Extensions.Options; -namespace ExtCore.FileStorage.FileSystem +namespace ExtCore.FileStorage.FileSystem; + +/// +/// Implements the IFileStorage interface and represents a file storage in a file system. +/// +public class FileStorage : IFileStorage { + private readonly string rootPath; + /// - /// Implements the IFileStorage interface and represents a file storage in a file system. + /// Initializes a new instance of the FileStorage class. /// - public class FileStorage : IFileStorage + /// The options that are used to configure the file storage root path. + public FileStorage(IOptions options) { - private readonly string rootPath; - - /// - /// Initializes a new instance of the FileStorage class. - /// - /// The options that are used to configure the file storage root path. - public FileStorage(IOptions options) - { - this.rootPath = options.Value.RootPath; - } + this.rootPath = options.Value.RootPath; + } - /// - /// Creates a directory proxy which allows to manipulate an underlying directory with a specified relative path. - /// - /// The path of the underlying directory relatively to the root one. - /// Created directory proxy. - public IDirectoryProxy CreateDirectoryProxy(string relativePath) - { - return new DirectoryProxy(this.rootPath, relativePath); - } + /// + /// Creates a directory proxy which allows to manipulate an underlying directory with a specified relative path. + /// + /// The path of the underlying directory relatively to the root one. + /// Created directory proxy. + public IDirectoryProxy CreateDirectoryProxy(string relativePath) + { + return new DirectoryProxy(this.rootPath, relativePath); + } - /// - /// Creates a file proxy which allows to manipulate an underlying file with a specified relative path and a filename. - /// - /// The path of the underlying file relatively to the root one. - /// The filename of the underlying file. - /// Created file proxy. - public IFileProxy CreateFileProxy(string relativePath, string filename) - { - return new FileProxy(this.rootPath, relativePath, filename); - } + /// + /// Creates a file proxy which allows to manipulate an underlying file with a specified relative path and a filename. + /// + /// The path of the underlying file relatively to the root one. + /// The filename of the underlying file. + /// Created file proxy. + public IFileProxy CreateFileProxy(string relativePath, string filename) + { + return new FileProxy(this.rootPath, relativePath, filename); } } \ No newline at end of file diff --git a/src/ExtCore.FileStorage/Actions/AddFileStorageAction.cs b/src/ExtCore.FileStorage/Actions/AddFileStorageAction.cs index b1a9a52..2debc52 100644 --- a/src/ExtCore.FileStorage/Actions/AddFileStorageAction.cs +++ b/src/ExtCore.FileStorage/Actions/AddFileStorageAction.cs @@ -10,41 +10,40 @@ using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; -namespace ExtCore.FileStorage.Actions +namespace ExtCore.FileStorage.Actions; + +/// +/// Implements the IConfigureServicesAction interface and +/// registers found implementation of the IFileStorage interface inside the DI. +/// +public class AddFileStorageAction : IConfigureServicesAction { /// - /// Implements the IConfigureServicesAction interface and - /// registers found implementation of the IFileStorage interface inside the DI. + /// Priority of the action. The actions will be executed in the order specified by the priority (from smallest to largest). + /// + public int Priority => 1000; + + /// + /// Registers found implementation of the IFileStorage interface inside the DI. /// - public class AddFileStorageAction : IConfigureServicesAction + /// + /// Will be provided by the ExtCore and might be used to register any service inside the DI. + /// + /// + /// Will be provided by the ExtCore and might be used to get any service that is registered inside the DI at this moment. + /// + public void Execute(IServiceCollection services, IServiceProvider serviceProvider) { - /// - /// Priority of the action. The actions will be executed in the order specified by the priority (from smallest to largest). - /// - public int Priority => 1000; + Type type = ExtensionManager.GetImplementations()?.FirstOrDefault(t => !t.GetTypeInfo().IsAbstract); - /// - /// Registers found implementation of the IFileStorage interface inside the DI. - /// - /// - /// Will be provided by the ExtCore and might be used to register any service inside the DI. - /// - /// - /// Will be provided by the ExtCore and might be used to get any service that is registered inside the DI at this moment. - /// - public void Execute(IServiceCollection services, IServiceProvider serviceProvider) + if (type == null) { - Type type = ExtensionManager.GetImplementations()?.FirstOrDefault(t => !t.GetTypeInfo().IsAbstract); + ILogger logger = serviceProvider.GetService().CreateLogger("ExtCore.FileStorage"); - if (type == null) - { - ILogger logger = serviceProvider.GetService().CreateLogger("ExtCore.FileStorage"); - - logger.LogError("Implementation of ExtCore.FileStorage.Abstractions.IFileStorage not found"); - return; - } - - services.AddScoped(typeof(IFileStorage), type); + logger.LogError("Implementation of ExtCore.FileStorage.Abstractions.IFileStorage not found"); + return; } + + services.AddScoped(typeof(IFileStorage), type); } } \ No newline at end of file diff --git a/src/ExtCore.FileStorage/Extension.cs b/src/ExtCore.FileStorage/Extension.cs index fc89843..291ed1d 100644 --- a/src/ExtCore.FileStorage/Extension.cs +++ b/src/ExtCore.FileStorage/Extension.cs @@ -3,31 +3,30 @@ using ExtCore.Infrastructure; -namespace ExtCore.FileStorage +namespace ExtCore.FileStorage; + +/// +/// Overrides the ExtensionBase class and provides the ExtCore.FileStorage extension information. +/// +public class Extension : ExtensionBase { /// - /// Overrides the ExtensionBase class and provides the ExtCore.FileStorage extension information. + /// Gets the name of the extension. /// - public class Extension : ExtensionBase - { - /// - /// Gets the name of the extension. - /// - public override string Name => "ExtCore.FileStorage"; + public override string Name => "ExtCore.FileStorage"; - /// - /// Gets the URL of the extension. - /// - public override string Url => "https://extcore.net/"; + /// + /// Gets the URL of the extension. + /// + public override string Url => "https://extcore.net/"; - /// - /// Gets the version of the extension. - /// - public override string Version => "8.1.0"; + /// + /// Gets the version of the extension. + /// + public override string Version => "8.1.0"; - /// - /// Gets the authors of the extension (separated by commas). - /// - public override string Authors => "Dmitry Sikorsky"; - } + /// + /// Gets the authors of the extension (separated by commas). + /// + public override string Authors => "Dmitry Sikorsky"; } \ No newline at end of file diff --git a/src/ExtCore.Infrastructure/Actions/IConfigureAction.cs b/src/ExtCore.Infrastructure/Actions/IConfigureAction.cs index bf85e9d..7820511 100644 --- a/src/ExtCore.Infrastructure/Actions/IConfigureAction.cs +++ b/src/ExtCore.Infrastructure/Actions/IConfigureAction.cs @@ -4,28 +4,27 @@ using System; using Microsoft.AspNetCore.Builder; -namespace ExtCore.Infrastructure.Actions +namespace ExtCore.Infrastructure.Actions; + +/// +/// Describes an action that must be executed inside the Configure method of a web application's Startup class +/// and might be used by the extensions to configure a web application's request pipeline. +/// +public interface IConfigureAction { /// - /// Describes an action that must be executed inside the Configure method of a web application's Startup class - /// and might be used by the extensions to configure a web application's request pipeline. + /// Priority of the action. The actions will be executed in the order specified by the priority (from smallest to largest). /// - public interface IConfigureAction - { - /// - /// Priority of the action. The actions will be executed in the order specified by the priority (from smallest to largest). - /// - int Priority { get; } + int Priority { get; } - /// - /// Contains any code that must be executed inside the Configure method of the web application's Startup class. - /// - /// - /// Will be provided by the ExtCore and might be used to configure a web application's request pipeline. - /// - /// - /// Will be provided by the ExtCore and might be used to get any service that is registered inside the DI at this moment. - /// - void Execute(IApplicationBuilder applicationBuilder, IServiceProvider serviceProvider); - } + /// + /// Contains any code that must be executed inside the Configure method of the web application's Startup class. + /// + /// + /// Will be provided by the ExtCore and might be used to configure a web application's request pipeline. + /// + /// + /// Will be provided by the ExtCore and might be used to get any service that is registered inside the DI at this moment. + /// + void Execute(IApplicationBuilder applicationBuilder, IServiceProvider serviceProvider); } \ No newline at end of file diff --git a/src/ExtCore.Infrastructure/Actions/IConfigureServicesAction.cs b/src/ExtCore.Infrastructure/Actions/IConfigureServicesAction.cs index 4b344f2..e202d9c 100644 --- a/src/ExtCore.Infrastructure/Actions/IConfigureServicesAction.cs +++ b/src/ExtCore.Infrastructure/Actions/IConfigureServicesAction.cs @@ -4,28 +4,27 @@ using System; using Microsoft.Extensions.DependencyInjection; -namespace ExtCore.Infrastructure.Actions +namespace ExtCore.Infrastructure.Actions; + +/// +/// Describes an action that must be executed inside the ConfigureServices method of a web application's Startup class +/// and might be used by the extensions to register any service inside the DI. +/// +public interface IConfigureServicesAction { /// - /// Describes an action that must be executed inside the ConfigureServices method of a web application's Startup class - /// and might be used by the extensions to register any service inside the DI. + /// Priority of the action. The actions will be executed in the order specified by the priority (from smallest to largest). /// - public interface IConfigureServicesAction - { - /// - /// Priority of the action. The actions will be executed in the order specified by the priority (from smallest to largest). - /// - int Priority { get; } + int Priority { get; } - /// - /// Contains any code that must be executed inside the ConfigureServices method of the web application's Startup class. - /// - /// - /// Will be provided by the ExtCore and might be used to register any service inside the DI. - /// - /// - /// Will be provided by the ExtCore and might be used to get any service that is registered inside the DI at this moment. - /// - void Execute(IServiceCollection services, IServiceProvider serviceProvider); - } + /// + /// Contains any code that must be executed inside the ConfigureServices method of the web application's Startup class. + /// + /// + /// Will be provided by the ExtCore and might be used to register any service inside the DI. + /// + /// + /// Will be provided by the ExtCore and might be used to get any service that is registered inside the DI at this moment. + /// + void Execute(IServiceCollection services, IServiceProvider serviceProvider); } \ No newline at end of file diff --git a/src/ExtCore.Infrastructure/ExtensionBase.cs b/src/ExtCore.Infrastructure/ExtensionBase.cs index 4b92b94..d33dd08 100644 --- a/src/ExtCore.Infrastructure/ExtensionBase.cs +++ b/src/ExtCore.Infrastructure/ExtensionBase.cs @@ -1,36 +1,35 @@ // Copyright © 2017 Dmitry Sikorsky. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. -namespace ExtCore.Infrastructure +namespace ExtCore.Infrastructure; + +/// +/// Implements the IExtension interface and represents default extension behavior. +/// +public abstract class ExtensionBase : IExtension { /// - /// Implements the IExtension interface and represents default extension behavior. + /// Gets the name of the extension. /// - public abstract class ExtensionBase : IExtension - { - /// - /// Gets the name of the extension. - /// - public virtual string Name => this.GetType().FullName; + public virtual string Name => this.GetType().FullName; - /// - /// Gets the description of the extension. - /// - public virtual string Description => null; + /// + /// Gets the description of the extension. + /// + public virtual string Description => null; - /// - /// Gets the URL of the extension. - /// - public virtual string Url => null; + /// + /// Gets the URL of the extension. + /// + public virtual string Url => null; - /// - /// Gets the version of the extension. - /// - public virtual string Version => null; + /// + /// Gets the version of the extension. + /// + public virtual string Version => null; - /// - /// Gets the authors of the extension (separated by commas). - /// - public virtual string Authors => null; - } + /// + /// Gets the authors of the extension (separated by commas). + /// + public virtual string Authors => null; } \ No newline at end of file diff --git a/src/ExtCore.Infrastructure/ExtensionManager.cs b/src/ExtCore.Infrastructure/ExtensionManager.cs index 9b48ab6..aef30e3 100644 --- a/src/ExtCore.Infrastructure/ExtensionManager.cs +++ b/src/ExtCore.Infrastructure/ExtensionManager.cs @@ -7,262 +7,261 @@ using System.Linq; using System.Reflection; -namespace ExtCore.Infrastructure +namespace ExtCore.Infrastructure; + +/// +/// Represents the assembly cache with the mechanism of getting implementations or instances of a given type. +/// This is the global access point to the ExtCore type discovering mechanism. +/// +public static class ExtensionManager { + private static IEnumerable assemblies; + private static ConcurrentDictionary> types; + /// - /// Represents the assembly cache with the mechanism of getting implementations or instances of a given type. - /// This is the global access point to the ExtCore type discovering mechanism. + /// Gets the cached assemblies that have been set by the SetAssemblies method. /// - public static class ExtensionManager + public static IEnumerable Assemblies { - private static IEnumerable assemblies; - private static ConcurrentDictionary> types; - - /// - /// Gets the cached assemblies that have been set by the SetAssemblies method. - /// - public static IEnumerable Assemblies + get { - get - { - return ExtensionManager.assemblies; - } + return ExtensionManager.assemblies; } + } - /// - /// Sets the assemblies and invalidates the type cache. - /// - /// The assemblies to set. - public static void SetAssemblies(IEnumerable assemblies) - { - ExtensionManager.assemblies = assemblies; - ExtensionManager.types = new ConcurrentDictionary>(); - } + /// + /// Sets the assemblies and invalidates the type cache. + /// + /// The assemblies to set. + public static void SetAssemblies(IEnumerable assemblies) + { + ExtensionManager.assemblies = assemblies; + ExtensionManager.types = new ConcurrentDictionary>(); + } - /// - /// Gets the first implementation of the type specified by the type parameter, or null if no implementations found. - /// - /// The type parameter to find implementation of. - /// - /// Determines whether the type cache should be used to avoid assemblies scanning next time, - /// when the same type(s) is requested. - /// - /// The first found implementation of the given type. - public static Type GetImplementation(bool useCaching = false) - { - return ExtensionManager.GetImplementation(null, useCaching); - } + /// + /// Gets the first implementation of the type specified by the type parameter, or null if no implementations found. + /// + /// The type parameter to find implementation of. + /// + /// Determines whether the type cache should be used to avoid assemblies scanning next time, + /// when the same type(s) is requested. + /// + /// The first found implementation of the given type. + public static Type GetImplementation(bool useCaching = false) + { + return ExtensionManager.GetImplementation(null, useCaching); + } - /// - /// Gets the first implementation of the type specified by the type parameter and located in the assemblies - /// filtered by the predicate, or null if no implementations found. - /// - /// The type parameter to find implementation of. - /// The predicate to filter the assemblies. - /// - /// Determines whether the type cache should be used to avoid assemblies scanning next time, - /// when the same type(s) is requested. - /// - /// The first found implementation of the given type. - public static Type GetImplementation(Func predicate, bool useCaching = false) - { - return ExtensionManager.GetImplementations(predicate, useCaching).FirstOrDefault(); - } + /// + /// Gets the first implementation of the type specified by the type parameter and located in the assemblies + /// filtered by the predicate, or null if no implementations found. + /// + /// The type parameter to find implementation of. + /// The predicate to filter the assemblies. + /// + /// Determines whether the type cache should be used to avoid assemblies scanning next time, + /// when the same type(s) is requested. + /// + /// The first found implementation of the given type. + public static Type GetImplementation(Func predicate, bool useCaching = false) + { + return ExtensionManager.GetImplementations(predicate, useCaching).FirstOrDefault(); + } - /// - /// Gets the implementations of the type specified by the type parameter. - /// - /// The type parameter to find implementations of. - /// - /// Determines whether the type cache should be used to avoid assemblies scanning next time, - /// when the same type(s) is requested. - /// - /// Found implementations of the given type. - public static IEnumerable GetImplementations(bool useCaching = false) - { - return ExtensionManager.GetImplementations(null, useCaching); - } + /// + /// Gets the implementations of the type specified by the type parameter. + /// + /// The type parameter to find implementations of. + /// + /// Determines whether the type cache should be used to avoid assemblies scanning next time, + /// when the same type(s) is requested. + /// + /// Found implementations of the given type. + public static IEnumerable GetImplementations(bool useCaching = false) + { + return ExtensionManager.GetImplementations(null, useCaching); + } - /// - /// Gets the implementations of the type specified by the type parameter and located in the assemblies - /// filtered by the predicate. - /// - /// The type parameter to find implementations of. - /// The predicate to filter the assemblies. - /// - /// Determines whether the type cache should be used to avoid assemblies scanning next time, - /// when the same type(s) is requested. - /// - /// Found implementations of the given type. - public static IEnumerable GetImplementations(Func predicate, bool useCaching = false) - { - Type type = typeof(T); + /// + /// Gets the implementations of the type specified by the type parameter and located in the assemblies + /// filtered by the predicate. + /// + /// The type parameter to find implementations of. + /// The predicate to filter the assemblies. + /// + /// Determines whether the type cache should be used to avoid assemblies scanning next time, + /// when the same type(s) is requested. + /// + /// Found implementations of the given type. + public static IEnumerable GetImplementations(Func predicate, bool useCaching = false) + { + Type type = typeof(T); - if (useCaching && ExtensionManager.types.ContainsKey(type)) - return ExtensionManager.types[type]; + if (useCaching && ExtensionManager.types.ContainsKey(type)) + return ExtensionManager.types[type]; - List implementations = new List(); + List implementations = new List(); - foreach (Assembly assembly in ExtensionManager.GetAssemblies(predicate)) - foreach (Type exportedType in assembly.GetExportedTypes()) - if (type.GetTypeInfo().IsAssignableFrom(exportedType) && exportedType.GetTypeInfo().IsClass) - implementations.Add(exportedType); + foreach (Assembly assembly in ExtensionManager.GetAssemblies(predicate)) + foreach (Type exportedType in assembly.GetExportedTypes()) + if (type.GetTypeInfo().IsAssignableFrom(exportedType) && exportedType.GetTypeInfo().IsClass) + implementations.Add(exportedType); - if (useCaching) - ExtensionManager.types[type] = implementations; + if (useCaching) + ExtensionManager.types[type] = implementations; - return implementations; - } + return implementations; + } - /// - /// Gets the new instance of the first implementation of the type specified by the type parameter, - /// or null if no implementations found. - /// - /// The type parameter to find implementation of. - /// - /// Determines whether the type cache should be used to avoid assemblies scanning next time, - /// when the instance(s) of the same type(s) is requested. - /// - /// The instance of the first found implementation of the given type. - public static T GetInstance(bool useCaching = false) - { - return ExtensionManager.GetInstance(null, useCaching, new object[] { }); - } + /// + /// Gets the new instance of the first implementation of the type specified by the type parameter, + /// or null if no implementations found. + /// + /// The type parameter to find implementation of. + /// + /// Determines whether the type cache should be used to avoid assemblies scanning next time, + /// when the instance(s) of the same type(s) is requested. + /// + /// The instance of the first found implementation of the given type. + public static T GetInstance(bool useCaching = false) + { + return ExtensionManager.GetInstance(null, useCaching, new object[] { }); + } - /// - /// Gets the new instance (using constructor that matches the arguments) of the first implementation - /// of the type specified by the type parameter or null if no implementations found. - /// - /// The type parameter to find implementation of. - /// - /// Determines whether the type cache should be used to avoid assemblies scanning next time, - /// when the instance(s) of the same type(s) is requested. - /// - /// The arguments to be passed to the constructor. - /// The instance of the first found implementation of the given type. - public static T GetInstance(bool useCaching = false, params object[] args) - { - return ExtensionManager.GetInstance(null, useCaching, args); - } + /// + /// Gets the new instance (using constructor that matches the arguments) of the first implementation + /// of the type specified by the type parameter or null if no implementations found. + /// + /// The type parameter to find implementation of. + /// + /// Determines whether the type cache should be used to avoid assemblies scanning next time, + /// when the instance(s) of the same type(s) is requested. + /// + /// The arguments to be passed to the constructor. + /// The instance of the first found implementation of the given type. + public static T GetInstance(bool useCaching = false, params object[] args) + { + return ExtensionManager.GetInstance(null, useCaching, args); + } - /// - /// Gets the new instance of the first implementation of the type specified by the type parameter - /// and located in the assemblies filtered by the predicate or null if no implementations found. - /// - /// The type parameter to find implementation of. - /// The predicate to filter the assemblies. - /// - /// Determines whether the type cache should be used to avoid assemblies scanning next time, - /// when the instance(s) of the same type(s) is requested. - /// - /// The instance of the first found implementation of the given type. - public static T GetInstance(Func predicate, bool useCaching = false) - { - return ExtensionManager.GetInstances(predicate, useCaching).FirstOrDefault(); - } + /// + /// Gets the new instance of the first implementation of the type specified by the type parameter + /// and located in the assemblies filtered by the predicate or null if no implementations found. + /// + /// The type parameter to find implementation of. + /// The predicate to filter the assemblies. + /// + /// Determines whether the type cache should be used to avoid assemblies scanning next time, + /// when the instance(s) of the same type(s) is requested. + /// + /// The instance of the first found implementation of the given type. + public static T GetInstance(Func predicate, bool useCaching = false) + { + return ExtensionManager.GetInstances(predicate, useCaching).FirstOrDefault(); + } - /// - /// Gets the new instance (using constructor that matches the arguments) of the first implementation - /// of the type specified by the type parameter and located in the assemblies filtered by the predicate - /// or null if no implementations found. - /// - /// The type parameter to find implementation of. - /// The predicate to filter the assemblies. - /// - /// Determines whether the type cache should be used to avoid assemblies scanning next time, - /// when the instance(s) of the same type(s) is requested. - /// - /// The arguments to be passed to the constructor. - /// The instance of the first found implementation of the given type. - public static T GetInstance(Func predicate, bool useCaching = false, params object[] args) - { - return ExtensionManager.GetInstances(predicate, useCaching, args).FirstOrDefault(); - } + /// + /// Gets the new instance (using constructor that matches the arguments) of the first implementation + /// of the type specified by the type parameter and located in the assemblies filtered by the predicate + /// or null if no implementations found. + /// + /// The type parameter to find implementation of. + /// The predicate to filter the assemblies. + /// + /// Determines whether the type cache should be used to avoid assemblies scanning next time, + /// when the instance(s) of the same type(s) is requested. + /// + /// The arguments to be passed to the constructor. + /// The instance of the first found implementation of the given type. + public static T GetInstance(Func predicate, bool useCaching = false, params object[] args) + { + return ExtensionManager.GetInstances(predicate, useCaching, args).FirstOrDefault(); + } - /// - /// Gets the new instances of the implementations of the type specified by the type parameter - /// or empty enumeration if no implementations found. - /// - /// The type parameter to find implementations of. - /// - /// Determines whether the type cache should be used to avoid assemblies scanning next time, - /// when the instance(s) of the same type(s) is requested. - /// - /// The instances of the found implementations of the given type. - public static IEnumerable GetInstances(bool useCaching = false) - { - return ExtensionManager.GetInstances(null, useCaching, new object[] { }); - } + /// + /// Gets the new instances of the implementations of the type specified by the type parameter + /// or empty enumeration if no implementations found. + /// + /// The type parameter to find implementations of. + /// + /// Determines whether the type cache should be used to avoid assemblies scanning next time, + /// when the instance(s) of the same type(s) is requested. + /// + /// The instances of the found implementations of the given type. + public static IEnumerable GetInstances(bool useCaching = false) + { + return ExtensionManager.GetInstances(null, useCaching, new object[] { }); + } - /// - /// Gets the new instances (using constructor that matches the arguments) of the implementations - /// of the type specified by the type parameter or empty enumeration if no implementations found. - /// - /// The type parameter to find implementations of. - /// - /// Determines whether the type cache should be used to avoid assemblies scanning next time, - /// when the instance(s) of the same type(s) is requested. - /// - /// The arguments to be passed to the constructors. - /// The instances of the found implementations of the given type. - public static IEnumerable GetInstances(bool useCaching = false, params object[] args) - { - return ExtensionManager.GetInstances(null, useCaching, args); - } + /// + /// Gets the new instances (using constructor that matches the arguments) of the implementations + /// of the type specified by the type parameter or empty enumeration if no implementations found. + /// + /// The type parameter to find implementations of. + /// + /// Determines whether the type cache should be used to avoid assemblies scanning next time, + /// when the instance(s) of the same type(s) is requested. + /// + /// The arguments to be passed to the constructors. + /// The instances of the found implementations of the given type. + public static IEnumerable GetInstances(bool useCaching = false, params object[] args) + { + return ExtensionManager.GetInstances(null, useCaching, args); + } - /// - /// Gets the new instances of the implementations of the type specified by the type parameter - /// and located in the assemblies filtered by the predicate or empty enumeration - /// if no implementations found. - /// - /// The type parameter to find implementations of. - /// The predicate to filter the assemblies. - /// - /// Determines whether the type cache should be used to avoid assemblies scanning next time, - /// when the instance(s) of the same type(s) is requested. - /// - /// The instances of the found implementations of the given type. - public static IEnumerable GetInstances(Func predicate, bool useCaching = false) - { - return ExtensionManager.GetInstances(predicate, useCaching, new object[] { }); - } + /// + /// Gets the new instances of the implementations of the type specified by the type parameter + /// and located in the assemblies filtered by the predicate or empty enumeration + /// if no implementations found. + /// + /// The type parameter to find implementations of. + /// The predicate to filter the assemblies. + /// + /// Determines whether the type cache should be used to avoid assemblies scanning next time, + /// when the instance(s) of the same type(s) is requested. + /// + /// The instances of the found implementations of the given type. + public static IEnumerable GetInstances(Func predicate, bool useCaching = false) + { + return ExtensionManager.GetInstances(predicate, useCaching, new object[] { }); + } - /// - /// Gets the new instances (using constructor that matches the arguments) of the implementations - /// of the type specified by the type parameter and located in the assemblies filtered by the predicate - /// or empty enumeration if no implementations found. - /// - /// The type parameter to find implementations of. - /// The predicate to filter the assemblies. - /// - /// Determines whether the type cache should be used to avoid assemblies scanning next time, - /// when the instance(s) of the same type(s) is requested. - /// - /// The arguments to be passed to the constructors. - /// The instances of the found implementations of the given type. - public static IEnumerable GetInstances(Func predicate, bool useCaching = false, params object[] args) - { - List instances = new List(); + /// + /// Gets the new instances (using constructor that matches the arguments) of the implementations + /// of the type specified by the type parameter and located in the assemblies filtered by the predicate + /// or empty enumeration if no implementations found. + /// + /// The type parameter to find implementations of. + /// The predicate to filter the assemblies. + /// + /// Determines whether the type cache should be used to avoid assemblies scanning next time, + /// when the instance(s) of the same type(s) is requested. + /// + /// The arguments to be passed to the constructors. + /// The instances of the found implementations of the given type. + public static IEnumerable GetInstances(Func predicate, bool useCaching = false, params object[] args) + { + List instances = new List(); - foreach (Type implementation in ExtensionManager.GetImplementations(predicate, useCaching)) + foreach (Type implementation in ExtensionManager.GetImplementations(predicate, useCaching)) + { + if (!implementation.GetTypeInfo().IsAbstract) { - if (!implementation.GetTypeInfo().IsAbstract) - { - T instance = (T)Activator.CreateInstance(implementation, args); + T instance = (T)Activator.CreateInstance(implementation, args); - instances.Add(instance); - } + instances.Add(instance); } - - return instances; } - private static IEnumerable GetAssemblies(Func predicate) - { - if (predicate == null) - return ExtensionManager.Assemblies; + return instances; + } - return ExtensionManager.Assemblies.Where(predicate); - } + private static IEnumerable GetAssemblies(Func predicate) + { + if (predicate == null) + return ExtensionManager.Assemblies; + + return ExtensionManager.Assemblies.Where(predicate); } } \ No newline at end of file diff --git a/src/ExtCore.Infrastructure/IExtension.cs b/src/ExtCore.Infrastructure/IExtension.cs index 96d6bc8..a4b0693 100644 --- a/src/ExtCore.Infrastructure/IExtension.cs +++ b/src/ExtCore.Infrastructure/IExtension.cs @@ -1,36 +1,35 @@ // Copyright © 2017 Dmitry Sikorsky. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. -namespace ExtCore.Infrastructure +namespace ExtCore.Infrastructure; + +/// +/// Describes an extension. +/// +public interface IExtension { /// - /// Describes an extension. + /// Gets the name of the extension. /// - public interface IExtension - { - /// - /// Gets the name of the extension. - /// - string Name { get; } + string Name { get; } - /// - /// Gets the description of the extension. - /// - string Description { get; } + /// + /// Gets the description of the extension. + /// + string Description { get; } - /// - /// Gets the URL of the extension. - /// - string Url { get; } + /// + /// Gets the URL of the extension. + /// + string Url { get; } - /// - /// Gets the version of the extension. - /// - string Version { get; } + /// + /// Gets the version of the extension. + /// + string Version { get; } - /// - /// Gets the authors of the extension (separated by commas). - /// - string Authors { get; } - } + /// + /// Gets the authors of the extension (separated by commas). + /// + string Authors { get; } } \ No newline at end of file diff --git a/src/ExtCore.Mvc.Infrastructure/Actions/IAddMvcAction.cs b/src/ExtCore.Mvc.Infrastructure/Actions/IAddMvcAction.cs index e38a3ea..a84006e 100644 --- a/src/ExtCore.Mvc.Infrastructure/Actions/IAddMvcAction.cs +++ b/src/ExtCore.Mvc.Infrastructure/Actions/IAddMvcAction.cs @@ -4,28 +4,27 @@ using System; using Microsoft.Extensions.DependencyInjection; -namespace ExtCore.Mvc.Infrastructure.Actions +namespace ExtCore.Mvc.Infrastructure.Actions; + +/// +/// Describes an action that must be executed inside the AddMvc method and might be used by the extensions +/// to configure the MVC. +/// +public interface IAddMvcAction { /// - /// Describes an action that must be executed inside the AddMvc method and might be used by the extensions - /// to configure the MVC. + /// Priority of the action. The actions will be executed in the order specified by the priority (from smallest to largest). /// - public interface IAddMvcAction - { - /// - /// Priority of the action. The actions will be executed in the order specified by the priority (from smallest to largest). - /// - int Priority { get; } + int Priority { get; } - /// - /// Contains any code that must be executed inside the AddMvc method. - /// - /// - /// Will be provided by the ExtCore.Mvc and might be used to configure the MVC. - /// - /// - /// Will be provided by the ExtCore.Mvc and might be used to get any service that is registered inside the DI at this moment. - /// - void Execute(IMvcBuilder mvcBuilder, IServiceProvider serviceProvider); - } + /// + /// Contains any code that must be executed inside the AddMvc method. + /// + /// + /// Will be provided by the ExtCore.Mvc and might be used to configure the MVC. + /// + /// + /// Will be provided by the ExtCore.Mvc and might be used to get any service that is registered inside the DI at this moment. + /// + void Execute(IMvcBuilder mvcBuilder, IServiceProvider serviceProvider); } \ No newline at end of file diff --git a/src/ExtCore.Mvc.Infrastructure/Actions/IUseEndpointsAction.cs b/src/ExtCore.Mvc.Infrastructure/Actions/IUseEndpointsAction.cs index b456e58..9c815b9 100644 --- a/src/ExtCore.Mvc.Infrastructure/Actions/IUseEndpointsAction.cs +++ b/src/ExtCore.Mvc.Infrastructure/Actions/IUseEndpointsAction.cs @@ -4,28 +4,27 @@ using System; using Microsoft.AspNetCore.Routing; -namespace ExtCore.Mvc.Infrastructure.Actions +namespace ExtCore.Mvc.Infrastructure.Actions; + +/// +/// Describes an action that must be executed inside the UseEndpoints method and might be used by the extensions +/// to configure the endpoints. +/// +public interface IUseEndpointsAction { /// - /// Describes an action that must be executed inside the UseEndpoints method and might be used by the extensions - /// to configure the endpoints. + /// Priority of the action. The actions will be executed in the order specified by the priority (from smallest to largest). /// - public interface IUseEndpointsAction - { - /// - /// Priority of the action. The actions will be executed in the order specified by the priority (from smallest to largest). - /// - int Priority { get; } + int Priority { get; } - /// - /// Contains any code that must be executed inside the UseEndpoints method. - /// - /// - /// Will be provided by the ExtCore.Mvc and might be used to configure the endpoints. - /// - /// - /// Will be provided by the ExtCore.Mvc and might be used to get any service that is registered inside the DI at this moment. - /// - void Execute(IEndpointRouteBuilder endpointRouteBuilder, IServiceProvider serviceProvider); - } + /// + /// Contains any code that must be executed inside the UseEndpoints method. + /// + /// + /// Will be provided by the ExtCore.Mvc and might be used to configure the endpoints. + /// + /// + /// Will be provided by the ExtCore.Mvc and might be used to get any service that is registered inside the DI at this moment. + /// + void Execute(IEndpointRouteBuilder endpointRouteBuilder, IServiceProvider serviceProvider); } \ No newline at end of file diff --git a/src/ExtCore.Mvc/Actions/AddMvcAction.cs b/src/ExtCore.Mvc/Actions/AddMvcAction.cs index 3150516..7d29d22 100644 --- a/src/ExtCore.Mvc/Actions/AddMvcAction.cs +++ b/src/ExtCore.Mvc/Actions/AddMvcAction.cs @@ -10,42 +10,41 @@ using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; -namespace ExtCore.Mvc.Actions +namespace ExtCore.Mvc.Actions; + +/// +/// Implements the IConfigureServicesAction interface and +/// registers the MVC services inside the DI. +/// +public class AddMvcAction : IConfigureServicesAction { /// - /// Implements the IConfigureServicesAction interface and - /// registers the MVC services inside the DI. + /// Priority of the action. The actions will be executed in the order specified by the priority (from smallest to largest). /// - public class AddMvcAction : IConfigureServicesAction - { - /// - /// Priority of the action. The actions will be executed in the order specified by the priority (from smallest to largest). - /// - public int Priority => 10000; + public int Priority => 10000; - /// - /// Registers the MVC services inside the DI. - /// - /// - /// Will be provided by the ExtCore and might be used to register any service inside the DI. - /// - /// - /// Will be provided by the ExtCore and might be used to get any service that is registered inside the DI at this moment. - /// - public void Execute(IServiceCollection services, IServiceProvider serviceProvider) - { - IMvcBuilder mvcBuilder = services.AddMvc(); + /// + /// Registers the MVC services inside the DI. + /// + /// + /// Will be provided by the ExtCore and might be used to register any service inside the DI. + /// + /// + /// Will be provided by the ExtCore and might be used to get any service that is registered inside the DI at this moment. + /// + public void Execute(IServiceCollection services, IServiceProvider serviceProvider) + { + IMvcBuilder mvcBuilder = services.AddMvc(); - foreach (Assembly assembly in ExtensionManager.Assemblies) - mvcBuilder.AddApplicationPart(assembly); + foreach (Assembly assembly in ExtensionManager.Assemblies) + mvcBuilder.AddApplicationPart(assembly); - foreach (IAddMvcAction action in ExtensionManager.GetInstances().OrderBy(a => a.Priority)) - { - ILogger logger = serviceProvider.GetService().CreateLogger("ExtCore.Mvc"); + foreach (IAddMvcAction action in ExtensionManager.GetInstances().OrderBy(a => a.Priority)) + { + ILogger logger = serviceProvider.GetService().CreateLogger("ExtCore.Mvc"); - logger.LogInformation("Executing AddMvc action '{0}'", action.GetType().FullName); - action.Execute(mvcBuilder, serviceProvider); - } + logger.LogInformation("Executing AddMvc action '{0}'", action.GetType().FullName); + action.Execute(mvcBuilder, serviceProvider); } } } \ No newline at end of file diff --git a/src/ExtCore.Mvc/Actions/AddStaticFilesAction.cs b/src/ExtCore.Mvc/Actions/AddStaticFilesAction.cs index e10fd7c..d058e7d 100644 --- a/src/ExtCore.Mvc/Actions/AddStaticFilesAction.cs +++ b/src/ExtCore.Mvc/Actions/AddStaticFilesAction.cs @@ -9,44 +9,43 @@ using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.FileProviders; -namespace ExtCore.Mvc.Actions +namespace ExtCore.Mvc.Actions; + +/// +/// Implements the IConfigureServicesAction interface and +/// creates and registers the composite file provider that contains resources from all the extensions. +/// +public class AddStaticFilesAction : IConfigureServicesAction { /// - /// Implements the IConfigureServicesAction interface and - /// creates and registers the composite file provider that contains resources from all the extensions. + /// Priority of the action. The actions will be executed in the order specified by the priority (from smallest to largest). /// - public class AddStaticFilesAction : IConfigureServicesAction - { - /// - /// Priority of the action. The actions will be executed in the order specified by the priority (from smallest to largest). - /// - public int Priority => 1000; + public int Priority => 1000; - /// - /// Creates and registers the composite file provider that contains resources from all the extensions. - /// - /// - /// Will be provided by the ExtCore and might be used to register any service inside the DI. - /// - /// - /// Will be provided by the ExtCore and might be used to get any service that is registered inside the DI at this moment. - /// - public void Execute(IServiceCollection services, IServiceProvider serviceProvider) - { - serviceProvider.GetService().WebRootFileProvider = this.CreateCompositeFileProvider(serviceProvider); - } + /// + /// Creates and registers the composite file provider that contains resources from all the extensions. + /// + /// + /// Will be provided by the ExtCore and might be used to register any service inside the DI. + /// + /// + /// Will be provided by the ExtCore and might be used to get any service that is registered inside the DI at this moment. + /// + public void Execute(IServiceCollection services, IServiceProvider serviceProvider) + { + serviceProvider.GetService().WebRootFileProvider = this.CreateCompositeFileProvider(serviceProvider); + } - private IFileProvider CreateCompositeFileProvider(IServiceProvider serviceProvider) - { - IFileProvider[] fileProviders = new IFileProvider[] { - serviceProvider.GetService().WebRootFileProvider - }; + private IFileProvider CreateCompositeFileProvider(IServiceProvider serviceProvider) + { + IFileProvider[] fileProviders = new IFileProvider[] { + serviceProvider.GetService().WebRootFileProvider + }; - return new CompositeFileProvider( - fileProviders.Concat( - ExtensionManager.Assemblies.Select(a => new EmbeddedFileProvider(a, a.GetName().Name)) - ) - ); - } + return new CompositeFileProvider( + fileProviders.Concat( + ExtensionManager.Assemblies.Select(a => new EmbeddedFileProvider(a, a.GetName().Name)) + ) + ); } } \ No newline at end of file diff --git a/src/ExtCore.Mvc/Actions/UseEndpointsAction.cs b/src/ExtCore.Mvc/Actions/UseEndpointsAction.cs index 4b0d176..3eb5c8b 100644 --- a/src/ExtCore.Mvc/Actions/UseEndpointsAction.cs +++ b/src/ExtCore.Mvc/Actions/UseEndpointsAction.cs @@ -10,42 +10,41 @@ using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; -namespace ExtCore.Mvc.Actions +namespace ExtCore.Mvc.Actions; + +/// +/// Implements the IConfigureAction interface and registers the +/// endpoints middleware inside a web application's request pipeline. +/// +public class UseEndpointsAction : IConfigureAction { /// - /// Implements the IConfigureAction interface and registers the - /// endpoints middleware inside a web application's request pipeline. + /// Priority of the action. The actions will be executed in the order specified by the priority (from smallest to largest). /// - public class UseEndpointsAction : IConfigureAction - { - /// - /// Priority of the action. The actions will be executed in the order specified by the priority (from smallest to largest). - /// - public int Priority => 11000; + public int Priority => 11000; - /// - /// Registers the endpoints middleware inside a web application's request pipeline. - /// - /// - /// Will be provided by the ExtCore and might be used to configure a web application's request pipeline. - /// - /// - /// Will be provided by the ExtCore and might be used to get any service that is registered inside the DI at this moment. - /// - public void Execute(IApplicationBuilder applicationBuilder, IServiceProvider serviceProvider) - { - applicationBuilder.UseEndpoints( - endpointRouteBuilder => + /// + /// Registers the endpoints middleware inside a web application's request pipeline. + /// + /// + /// Will be provided by the ExtCore and might be used to configure a web application's request pipeline. + /// + /// + /// Will be provided by the ExtCore and might be used to get any service that is registered inside the DI at this moment. + /// + public void Execute(IApplicationBuilder applicationBuilder, IServiceProvider serviceProvider) + { + applicationBuilder.UseEndpoints( + endpointRouteBuilder => + { + foreach (IUseEndpointsAction action in ExtensionManager.GetInstances().OrderBy(a => a.Priority)) { - foreach (IUseEndpointsAction action in ExtensionManager.GetInstances().OrderBy(a => a.Priority)) - { - ILogger logger = serviceProvider.GetService().CreateLogger("ExtCore.Mvc"); + ILogger logger = serviceProvider.GetService().CreateLogger("ExtCore.Mvc"); - logger.LogInformation("Executing UseEndpoints action '{0}'", action.GetType().FullName); - action.Execute(endpointRouteBuilder, serviceProvider); - } + logger.LogInformation("Executing UseEndpoints action '{0}'", action.GetType().FullName); + action.Execute(endpointRouteBuilder, serviceProvider); } - ); - } + } + ); } } \ No newline at end of file diff --git a/src/ExtCore.Mvc/Actions/UseRoutingAction.cs b/src/ExtCore.Mvc/Actions/UseRoutingAction.cs index 3cf552b..89b3318 100644 --- a/src/ExtCore.Mvc/Actions/UseRoutingAction.cs +++ b/src/ExtCore.Mvc/Actions/UseRoutingAction.cs @@ -5,31 +5,30 @@ using ExtCore.Infrastructure.Actions; using Microsoft.AspNetCore.Builder; -namespace ExtCore.Mvc.Actions +namespace ExtCore.Mvc.Actions; + +/// +/// Implements the IConfigureAction interface and registers the +/// routing middleware inside a web application's request pipeline. +/// +public class UseRoutingAction : IConfigureAction { /// - /// Implements the IConfigureAction interface and registers the - /// routing middleware inside a web application's request pipeline. + /// Priority of the action. The actions will be executed in the order specified by the priority (from smallest to largest). /// - public class UseRoutingAction : IConfigureAction - { - /// - /// Priority of the action. The actions will be executed in the order specified by the priority (from smallest to largest). - /// - public int Priority => 10000; + public int Priority => 10000; - /// - /// Registers the routing middleware inside a web application's request pipeline. - /// - /// - /// Will be provided by the ExtCore and might be used to configure a web application's request pipeline. - /// - /// - /// Will be provided by the ExtCore and might be used to get any service that is registered inside the DI at this moment. - /// - public void Execute(IApplicationBuilder applicationBuilder, IServiceProvider serviceProvider) - { - applicationBuilder.UseRouting(); - } + /// + /// Registers the routing middleware inside a web application's request pipeline. + /// + /// + /// Will be provided by the ExtCore and might be used to configure a web application's request pipeline. + /// + /// + /// Will be provided by the ExtCore and might be used to get any service that is registered inside the DI at this moment. + /// + public void Execute(IApplicationBuilder applicationBuilder, IServiceProvider serviceProvider) + { + applicationBuilder.UseRouting(); } } \ No newline at end of file diff --git a/src/ExtCore.Mvc/Actions/UseStaticFilesAction.cs b/src/ExtCore.Mvc/Actions/UseStaticFilesAction.cs index 035d751..d675ffa 100644 --- a/src/ExtCore.Mvc/Actions/UseStaticFilesAction.cs +++ b/src/ExtCore.Mvc/Actions/UseStaticFilesAction.cs @@ -7,34 +7,33 @@ using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; -namespace ExtCore.Mvc.Actions +namespace ExtCore.Mvc.Actions; + +/// +/// Implements the IConfigureAction interface and registers the +/// static files middleware inside a web application's request pipeline. +/// +public class UseStaticFilesAction : IConfigureAction { /// - /// Implements the IConfigureAction interface and registers the - /// static files middleware inside a web application's request pipeline. + /// Priority of the action. The actions will be executed in the order specified by the priority (from smallest to largest). /// - public class UseStaticFilesAction : IConfigureAction - { - /// - /// Priority of the action. The actions will be executed in the order specified by the priority (from smallest to largest). - /// - public int Priority => 1000; + public int Priority => 1000; - /// - /// Registers the static files middleware inside a web application's request pipeline. - /// - /// - /// - /// Will be provided by the ExtCore and might be used to configure a web application's request pipeline. - /// - /// - /// Will be provided by the ExtCore and might be used to get any service that is registered inside the DI at this moment. - /// - public void Execute(IApplicationBuilder applicationBuilder, IServiceProvider serviceProvider) - { - IOptions options = serviceProvider.GetService>(); + /// + /// Registers the static files middleware inside a web application's request pipeline. + /// + /// + /// + /// Will be provided by the ExtCore and might be used to configure a web application's request pipeline. + /// + /// + /// Will be provided by the ExtCore and might be used to get any service that is registered inside the DI at this moment. + /// + public void Execute(IApplicationBuilder applicationBuilder, IServiceProvider serviceProvider) + { + IOptions options = serviceProvider.GetService>(); - applicationBuilder.UseStaticFiles(options?.Value); - } + applicationBuilder.UseStaticFiles(options?.Value); } } \ No newline at end of file diff --git a/src/ExtCore.Mvc/Extension.cs b/src/ExtCore.Mvc/Extension.cs index 932b886..5feb9f0 100644 --- a/src/ExtCore.Mvc/Extension.cs +++ b/src/ExtCore.Mvc/Extension.cs @@ -3,31 +3,30 @@ using ExtCore.Infrastructure; -namespace ExtCore.Mvc +namespace ExtCore.Mvc; + +/// +/// Overrides the ExtensionBase class and provides the ExtCore.Mvc extension information. +/// +public class Extension : ExtensionBase { /// - /// Overrides the ExtensionBase class and provides the ExtCore.Mvc extension information. + /// Gets the name of the extension. /// - public class Extension : ExtensionBase - { - /// - /// Gets the name of the extension. - /// - public override string Name => "ExtCore.Mvc"; + public override string Name => "ExtCore.Mvc"; - /// - /// Gets the URL of the extension. - /// - public override string Url => "https://extcore.net/"; + /// + /// Gets the URL of the extension. + /// + public override string Url => "https://extcore.net/"; - /// - /// Gets the version of the extension. - /// - public override string Version => "8.1.0"; + /// + /// Gets the version of the extension. + /// + public override string Version => "8.1.0"; - /// - /// Gets the authors of the extension (separated by commas). - /// - public override string Authors => "Dmitry Sikorsky"; - } + /// + /// Gets the authors of the extension (separated by commas). + /// + public override string Authors => "Dmitry Sikorsky"; } \ No newline at end of file diff --git a/src/ExtCore.WebApplication/DefaultAssemblyProvider.cs b/src/ExtCore.WebApplication/DefaultAssemblyProvider.cs index bdb0009..b16a244 100644 --- a/src/ExtCore.WebApplication/DefaultAssemblyProvider.cs +++ b/src/ExtCore.WebApplication/DefaultAssemblyProvider.cs @@ -11,137 +11,136 @@ using Microsoft.Extensions.DependencyModel; using Microsoft.Extensions.Logging; -namespace ExtCore.WebApplication +namespace ExtCore.WebApplication; + +/// +/// Implements the IAssemblyProvider interface and represents +/// default assembly provider that gets assemblies from a specific path and web application dependencies +/// with the ability to filter the discovered assemblies with the IsCandidateAssembly and +/// IsCandidateCompilationLibrary predicates. +/// +public class DefaultAssemblyProvider : IAssemblyProvider { + protected ILogger logger; + + /// + /// Gets or sets the predicate that is used to filter discovered assemblies from a specific folder + /// before thay have been added to the resulting assemblies set. + /// + public Func IsCandidateAssembly { get; set; } + + /// + /// Gets or sets the predicate that is used to filter discovered libraries from a web application dependencies + /// before thay have been added to the resulting assemblies set. + /// + public Func IsCandidateCompilationLibrary { get; set; } + /// - /// Implements the IAssemblyProvider interface and represents - /// default assembly provider that gets assemblies from a specific path and web application dependencies - /// with the ability to filter the discovered assemblies with the IsCandidateAssembly and - /// IsCandidateCompilationLibrary predicates. + /// Initializes a new instance of the AssemblyProvider class. /// - public class DefaultAssemblyProvider : IAssemblyProvider + /// The service provider that is used to create a logger. + public DefaultAssemblyProvider(IServiceProvider serviceProvider) { - protected ILogger logger; - - /// - /// Gets or sets the predicate that is used to filter discovered assemblies from a specific folder - /// before thay have been added to the resulting assemblies set. - /// - public Func IsCandidateAssembly { get; set; } - - /// - /// Gets or sets the predicate that is used to filter discovered libraries from a web application dependencies - /// before thay have been added to the resulting assemblies set. - /// - public Func IsCandidateCompilationLibrary { get; set; } - - /// - /// Initializes a new instance of the AssemblyProvider class. - /// - /// The service provider that is used to create a logger. - public DefaultAssemblyProvider(IServiceProvider serviceProvider) - { - this.logger = serviceProvider.GetService().CreateLogger("ExtCore.WebApplication"); - this.IsCandidateAssembly = assembly => - !assembly.FullName.StartsWith("System", StringComparison.OrdinalIgnoreCase) && - !assembly.FullName.StartsWith("Microsoft", StringComparison.OrdinalIgnoreCase); - - this.IsCandidateCompilationLibrary = library => - !library.Name.StartsWith("mscorlib", StringComparison.OrdinalIgnoreCase) && - !library.Name.StartsWith("netstandard", StringComparison.OrdinalIgnoreCase) && - !library.Name.StartsWith("System", StringComparison.OrdinalIgnoreCase) && - !library.Name.StartsWith("Microsoft", StringComparison.OrdinalIgnoreCase) && - !library.Name.StartsWith("WindowsBase", StringComparison.OrdinalIgnoreCase); - } + this.logger = serviceProvider.GetService().CreateLogger("ExtCore.WebApplication"); + this.IsCandidateAssembly = assembly => + !assembly.FullName.StartsWith("System", StringComparison.OrdinalIgnoreCase) && + !assembly.FullName.StartsWith("Microsoft", StringComparison.OrdinalIgnoreCase); + + this.IsCandidateCompilationLibrary = library => + !library.Name.StartsWith("mscorlib", StringComparison.OrdinalIgnoreCase) && + !library.Name.StartsWith("netstandard", StringComparison.OrdinalIgnoreCase) && + !library.Name.StartsWith("System", StringComparison.OrdinalIgnoreCase) && + !library.Name.StartsWith("Microsoft", StringComparison.OrdinalIgnoreCase) && + !library.Name.StartsWith("WindowsBase", StringComparison.OrdinalIgnoreCase); + } - /// - /// Discovers and then gets the discovered assemblies from a specific folder and web application dependencies. - /// - /// The extensions path of a web application. - /// - /// Determines whether a web application will discover and then get the discovered assemblies from the subfolders - /// of a specific folder recursively. - /// - /// The discovered and loaded assemblies. - public IEnumerable GetAssemblies(string path, bool includingSubpaths) - { - List assemblies = new List(); + /// + /// Discovers and then gets the discovered assemblies from a specific folder and web application dependencies. + /// + /// The extensions path of a web application. + /// + /// Determines whether a web application will discover and then get the discovered assemblies from the subfolders + /// of a specific folder recursively. + /// + /// The discovered and loaded assemblies. + public IEnumerable GetAssemblies(string path, bool includingSubpaths) + { + List assemblies = new List(); - this.GetAssembliesFromDependencyContext(assemblies); - this.GetAssembliesFromPath(assemblies, path, includingSubpaths); - return assemblies; - } + this.GetAssembliesFromDependencyContext(assemblies); + this.GetAssembliesFromPath(assemblies, path, includingSubpaths); + return assemblies; + } - private void GetAssembliesFromDependencyContext(List assemblies) - { - this.logger.LogInformation("Discovering and loading assemblies from DependencyContext"); + private void GetAssembliesFromDependencyContext(List assemblies) + { + this.logger.LogInformation("Discovering and loading assemblies from DependencyContext"); - foreach (CompilationLibrary compilationLibrary in DependencyContext.Default.CompileLibraries) + foreach (CompilationLibrary compilationLibrary in DependencyContext.Default.CompileLibraries) + { + if (this.IsCandidateCompilationLibrary(compilationLibrary)) { - if (this.IsCandidateCompilationLibrary(compilationLibrary)) + Assembly assembly = null; + + try { - Assembly assembly = null; + assembly = AssemblyLoadContext.Default.LoadFromAssemblyName(new AssemblyName(compilationLibrary.Name)); - try + if (!assemblies.Any(a => string.Equals(a.FullName, assembly.FullName, StringComparison.OrdinalIgnoreCase))) { - assembly = AssemblyLoadContext.Default.LoadFromAssemblyName(new AssemblyName(compilationLibrary.Name)); - - if (!assemblies.Any(a => string.Equals(a.FullName, assembly.FullName, StringComparison.OrdinalIgnoreCase))) - { - assemblies.Add(assembly); - this.logger.LogInformation("Assembly '{0}' is discovered and loaded", assembly.FullName); - } + assemblies.Add(assembly); + this.logger.LogInformation("Assembly '{0}' is discovered and loaded", assembly.FullName); } + } - catch (Exception e) - { - this.logger.LogWarning("Error loading assembly '{0}'", compilationLibrary.Name); - this.logger.LogWarning(e.ToString()); - } + catch (Exception e) + { + this.logger.LogWarning("Error loading assembly '{0}'", compilationLibrary.Name); + this.logger.LogWarning(e.ToString()); } } } + } - private void GetAssembliesFromPath(List assemblies, string path, bool includingSubpaths) + private void GetAssembliesFromPath(List assemblies, string path, bool includingSubpaths) + { + if (!string.IsNullOrEmpty(path) && Directory.Exists(path)) { - if (!string.IsNullOrEmpty(path) && Directory.Exists(path)) + this.logger.LogInformation("Discovering and loading assemblies from path '{0}'", path); + + foreach (string extensionPath in Directory.EnumerateFiles(path, "*.dll")) { - this.logger.LogInformation("Discovering and loading assemblies from path '{0}'", path); + Assembly assembly = null; - foreach (string extensionPath in Directory.EnumerateFiles(path, "*.dll")) + try { - Assembly assembly = null; + assembly = AssemblyLoadContext.Default.LoadFromAssemblyPath(extensionPath); - try + if (this.IsCandidateAssembly(assembly) && !assemblies.Any(a => string.Equals(a.FullName, assembly.FullName, StringComparison.OrdinalIgnoreCase))) { - assembly = AssemblyLoadContext.Default.LoadFromAssemblyPath(extensionPath); - - if (this.IsCandidateAssembly(assembly) && !assemblies.Any(a => string.Equals(a.FullName, assembly.FullName, StringComparison.OrdinalIgnoreCase))) - { - assemblies.Add(assembly); - this.logger.LogInformation("Assembly '{0}' is discovered and loaded", assembly.FullName); - } - } - - catch (Exception e) - { - this.logger.LogWarning("Error loading assembly '{0}'", extensionPath); - this.logger.LogWarning(e.ToString()); + assemblies.Add(assembly); + this.logger.LogInformation("Assembly '{0}' is discovered and loaded", assembly.FullName); } } - if (includingSubpaths) - foreach (string subpath in Directory.GetDirectories(path)) - this.GetAssembliesFromPath(assemblies, subpath, includingSubpaths); + catch (Exception e) + { + this.logger.LogWarning("Error loading assembly '{0}'", extensionPath); + this.logger.LogWarning(e.ToString()); + } } - else - { - if (string.IsNullOrEmpty(path)) - this.logger.LogWarning("Discovering and loading assemblies from path skipped: path not provided", path); + if (includingSubpaths) + foreach (string subpath in Directory.GetDirectories(path)) + this.GetAssembliesFromPath(assemblies, subpath, includingSubpaths); + } - else this.logger.LogWarning("Discovering and loading assemblies from path '{0}' skipped: path not found", path); - } + else + { + if (string.IsNullOrEmpty(path)) + this.logger.LogWarning("Discovering and loading assemblies from path skipped: path not provided", path); + + else this.logger.LogWarning("Discovering and loading assemblies from path '{0}' skipped: path not found", path); } } } \ No newline at end of file diff --git a/src/ExtCore.WebApplication/Extensions/ApplicationBuilderExtensions.cs b/src/ExtCore.WebApplication/Extensions/ApplicationBuilderExtensions.cs index 59d9ba9..e8ba63f 100644 --- a/src/ExtCore.WebApplication/Extensions/ApplicationBuilderExtensions.cs +++ b/src/ExtCore.WebApplication/Extensions/ApplicationBuilderExtensions.cs @@ -8,29 +8,28 @@ using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; -namespace ExtCore.WebApplication.Extensions +namespace ExtCore.WebApplication.Extensions; + +/// +/// Contains the extension methods of the IApplicationBuilder interface. +/// +public static class ApplicationBuilderExtensions { /// - /// Contains the extension methods of the IApplicationBuilder interface. + /// Executes the Configure actions from all the extensions. It must be called inside the Configure method + /// of the web application's Startup class in order ExtCore to work properly. /// - public static class ApplicationBuilderExtensions + /// + /// The application builder passed to the Configure method of the web application's Startup class. + /// + public static void UseExtCore(this IApplicationBuilder applicationBuilder) { - /// - /// Executes the Configure actions from all the extensions. It must be called inside the Configure method - /// of the web application's Startup class in order ExtCore to work properly. - /// - /// - /// The application builder passed to the Configure method of the web application's Startup class. - /// - public static void UseExtCore(this IApplicationBuilder applicationBuilder) - { - ILogger logger = applicationBuilder.ApplicationServices.GetService().CreateLogger("ExtCore.WebApplication"); + ILogger logger = applicationBuilder.ApplicationServices.GetService().CreateLogger("ExtCore.WebApplication"); - foreach (IConfigureAction action in ExtensionManager.GetInstances().OrderBy(a => a.Priority)) - { - logger.LogInformation("Executing Configure action '{0}'", action.GetType().FullName); - action.Execute(applicationBuilder, applicationBuilder.ApplicationServices); - } + foreach (IConfigureAction action in ExtensionManager.GetInstances().OrderBy(a => a.Priority)) + { + logger.LogInformation("Executing Configure action '{0}'", action.GetType().FullName); + action.Execute(applicationBuilder, applicationBuilder.ApplicationServices); } } } \ No newline at end of file diff --git a/src/ExtCore.WebApplication/IAssemblyProvider.cs b/src/ExtCore.WebApplication/IAssemblyProvider.cs index 450cadf..e2187dd 100644 --- a/src/ExtCore.WebApplication/IAssemblyProvider.cs +++ b/src/ExtCore.WebApplication/IAssemblyProvider.cs @@ -4,25 +4,24 @@ using System.Collections.Generic; using System.Reflection; -namespace ExtCore.WebApplication +namespace ExtCore.WebApplication; + +/// +/// Describes an assembly provider with the mechanism of getting assemblies that should be involved +/// in the ExtCore types discovering process. +/// +public interface IAssemblyProvider { /// - /// Describes an assembly provider with the mechanism of getting assemblies that should be involved - /// in the ExtCore types discovering process. + /// Discovers and then gets the discovered assemblies. /// - public interface IAssemblyProvider - { - /// - /// Discovers and then gets the discovered assemblies. - /// - /// The extensions path of a web application. Might be used or ignored - /// by an implementation of the IAssemblyProvider interface. - /// - /// Determines whether a web application will discover and then get the discovered assemblies from the subfolders - /// of a specific folder recursively. Might be used or ignored by an implementation of the - /// IAssemblyProvider interface. - /// - /// The discovered and loaded assemblies. - IEnumerable GetAssemblies(string path, bool includingSubpaths); - } + /// The extensions path of a web application. Might be used or ignored + /// by an implementation of the IAssemblyProvider interface. + /// + /// Determines whether a web application will discover and then get the discovered assemblies from the subfolders + /// of a specific folder recursively. Might be used or ignored by an implementation of the + /// IAssemblyProvider interface. + /// + /// The discovered and loaded assemblies. + IEnumerable GetAssemblies(string path, bool includingSubpaths); } \ No newline at end of file From e39b856c33acbfc196c4b81408a4bddaf23cee1b Mon Sep 17 00:00:00 2001 From: Gorbach Oleksii Date: Wed, 22 Feb 2023 12:34:54 +0100 Subject: [PATCH 79/81] fix spelling --- src/ExtCore.WebApplication/DefaultAssemblyProvider.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/ExtCore.WebApplication/DefaultAssemblyProvider.cs b/src/ExtCore.WebApplication/DefaultAssemblyProvider.cs index b16a244..df3d3f7 100644 --- a/src/ExtCore.WebApplication/DefaultAssemblyProvider.cs +++ b/src/ExtCore.WebApplication/DefaultAssemblyProvider.cs @@ -25,13 +25,13 @@ public class DefaultAssemblyProvider : IAssemblyProvider /// /// Gets or sets the predicate that is used to filter discovered assemblies from a specific folder - /// before thay have been added to the resulting assemblies set. + /// before they have been added to the resulting assemblies set. /// public Func IsCandidateAssembly { get; set; } /// /// Gets or sets the predicate that is used to filter discovered libraries from a web application dependencies - /// before thay have been added to the resulting assemblies set. + /// before they have been added to the resulting assemblies set. /// public Func IsCandidateCompilationLibrary { get; set; } @@ -143,4 +143,4 @@ private void GetAssembliesFromPath(List assemblies, string path, bool else this.logger.LogWarning("Discovering and loading assemblies from path '{0}' skipped: path not found", path); } } -} \ No newline at end of file +} From e32da7fc935e39a3d9f717ff48aa87e19dd2ddde Mon Sep 17 00:00:00 2001 From: Dmitry Sikorsky Date: Sat, 25 Feb 2023 18:28:47 +0200 Subject: [PATCH 80/81] Moved common.props file to src directory --- src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj | 2 +- src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj | 2 +- .../ExtCore.Data.Dapper.PostgreSql.csproj | 2 +- .../ExtCore.Data.Dapper.SqlServer.csproj | 2 +- .../ExtCore.Data.Dapper.Sqlite.csproj | 2 +- src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj | 2 +- .../ExtCore.Data.Entities.Abstractions.csproj | 2 +- .../ExtCore.Data.EntityFramework.MySql.csproj | 2 +- .../ExtCore.Data.EntityFramework.PostgreSql.csproj | 2 +- .../ExtCore.Data.EntityFramework.SqlServer.csproj | 2 +- .../ExtCore.Data.EntityFramework.Sqlite.csproj | 2 +- .../ExtCore.Data.EntityFramework.csproj | 2 +- src/ExtCore.Data/ExtCore.Data.csproj | 2 +- src/ExtCore.Events/ExtCore.Events.csproj | 2 +- .../ExtCore.FileStorage.Abstractions.csproj | 2 +- src/ExtCore.FileStorage.Azure/ExtCore.FileStorage.Azure.csproj | 2 +- .../ExtCore.FileStorage.Dropbox.csproj | 2 +- .../ExtCore.FileStorage.FileSystem.csproj | 2 +- src/ExtCore.FileStorage/ExtCore.FileStorage.csproj | 2 +- src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj | 2 +- .../ExtCore.Mvc.Infrastructure.csproj | 2 +- src/ExtCore.Mvc/ExtCore.Mvc.csproj | 2 +- src/ExtCore.WebApplication/ExtCore.WebApplication.csproj | 2 +- common.props => src/common.props | 0 24 files changed, 23 insertions(+), 23 deletions(-) rename common.props => src/common.props (100%) diff --git a/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj b/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj index b16ff48..186297d 100644 --- a/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj +++ b/src/ExtCore.Data.Abstractions/ExtCore.Data.Abstractions.csproj @@ -1,5 +1,5 @@  - + The ExtCore.Data extension component. Based on the ExtCore framework. diff --git a/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj b/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj index 5d40a97..dff35c5 100644 --- a/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj +++ b/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj @@ -1,5 +1,5 @@  - + The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. diff --git a/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj b/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj index dc16eff..a7bed26 100644 --- a/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj +++ b/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj @@ -1,5 +1,5 @@  - + The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. diff --git a/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj b/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj index b63d7f9..2c540ee 100644 --- a/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj +++ b/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj @@ -1,5 +1,5 @@  - + The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. diff --git a/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj b/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj index 6d6e2da..eaa8645 100644 --- a/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj +++ b/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj @@ -1,5 +1,5 @@  - + The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. diff --git a/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj b/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj index ebdce7c..6d5adaf 100644 --- a/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj +++ b/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj @@ -1,5 +1,5 @@  - + The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. diff --git a/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj b/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj index 4cf297d..023a3dd 100644 --- a/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj +++ b/src/ExtCore.Data.Entities.Abstractions/ExtCore.Data.Entities.Abstractions.csproj @@ -1,5 +1,5 @@  - + The ExtCore.Data extension component. Based on the ExtCore framework. diff --git a/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj b/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj index 750c8f0..b6d3d21 100644 --- a/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj +++ b/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj @@ -1,5 +1,5 @@  - + The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. diff --git a/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj b/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj index 94a7c08..d2bb199 100644 --- a/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj +++ b/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj @@ -1,5 +1,5 @@  - + The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. diff --git a/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj b/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj index 88c0cfd..5df755b 100644 --- a/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj +++ b/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj @@ -1,5 +1,5 @@  - + The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. diff --git a/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj b/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj index 0d593c2..dfae20f 100644 --- a/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj +++ b/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj @@ -1,5 +1,5 @@  - + The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. diff --git a/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj b/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj index 948ae05..8337f83 100644 --- a/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj +++ b/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj @@ -1,5 +1,5 @@  - + The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. diff --git a/src/ExtCore.Data/ExtCore.Data.csproj b/src/ExtCore.Data/ExtCore.Data.csproj index e9f4774..7f1ab9f 100644 --- a/src/ExtCore.Data/ExtCore.Data.csproj +++ b/src/ExtCore.Data/ExtCore.Data.csproj @@ -1,5 +1,5 @@  - + The ExtCore.Data extension component. Based on the ExtCore framework. diff --git a/src/ExtCore.Events/ExtCore.Events.csproj b/src/ExtCore.Events/ExtCore.Events.csproj index 3036ba1..5372116 100644 --- a/src/ExtCore.Events/ExtCore.Events.csproj +++ b/src/ExtCore.Events/ExtCore.Events.csproj @@ -1,5 +1,5 @@  - + The ExtCore.Events extension component. Based on the ExtCore framework. diff --git a/src/ExtCore.FileStorage.Abstractions/ExtCore.FileStorage.Abstractions.csproj b/src/ExtCore.FileStorage.Abstractions/ExtCore.FileStorage.Abstractions.csproj index b85c805..84dc73d 100644 --- a/src/ExtCore.FileStorage.Abstractions/ExtCore.FileStorage.Abstractions.csproj +++ b/src/ExtCore.FileStorage.Abstractions/ExtCore.FileStorage.Abstractions.csproj @@ -1,5 +1,5 @@  - + The ExtCore.FileStorage extension component. Based on the ExtCore framework. diff --git a/src/ExtCore.FileStorage.Azure/ExtCore.FileStorage.Azure.csproj b/src/ExtCore.FileStorage.Azure/ExtCore.FileStorage.Azure.csproj index 0440247..02392ad 100644 --- a/src/ExtCore.FileStorage.Azure/ExtCore.FileStorage.Azure.csproj +++ b/src/ExtCore.FileStorage.Azure/ExtCore.FileStorage.Azure.csproj @@ -1,5 +1,5 @@ - + The ExtCore.FileStorage extension component. Based on the ExtCore framework. diff --git a/src/ExtCore.FileStorage.Dropbox/ExtCore.FileStorage.Dropbox.csproj b/src/ExtCore.FileStorage.Dropbox/ExtCore.FileStorage.Dropbox.csproj index 3c64647..33dc972 100644 --- a/src/ExtCore.FileStorage.Dropbox/ExtCore.FileStorage.Dropbox.csproj +++ b/src/ExtCore.FileStorage.Dropbox/ExtCore.FileStorage.Dropbox.csproj @@ -1,5 +1,5 @@  - + The ExtCore.FileStorage extension component. Based on the ExtCore framework. diff --git a/src/ExtCore.FileStorage.FileSystem/ExtCore.FileStorage.FileSystem.csproj b/src/ExtCore.FileStorage.FileSystem/ExtCore.FileStorage.FileSystem.csproj index 53580b0..6bb85d1 100644 --- a/src/ExtCore.FileStorage.FileSystem/ExtCore.FileStorage.FileSystem.csproj +++ b/src/ExtCore.FileStorage.FileSystem/ExtCore.FileStorage.FileSystem.csproj @@ -1,5 +1,5 @@  - + The ExtCore.FileStorage extension component. Based on the ExtCore framework. diff --git a/src/ExtCore.FileStorage/ExtCore.FileStorage.csproj b/src/ExtCore.FileStorage/ExtCore.FileStorage.csproj index 3762844..6d7fa8a 100644 --- a/src/ExtCore.FileStorage/ExtCore.FileStorage.csproj +++ b/src/ExtCore.FileStorage/ExtCore.FileStorage.csproj @@ -1,5 +1,5 @@  - + The ExtCore.FileStorage extension component. Based on the ExtCore framework. diff --git a/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj b/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj index eb3e27c..df4a81a 100644 --- a/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj +++ b/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj @@ -1,5 +1,5 @@  - + Free, open source and cross-platform framework for creating modular and extendable web applications based on ASP.NET Core. diff --git a/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj b/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj index 0eb7813..f12133d 100644 --- a/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj +++ b/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj @@ -1,5 +1,5 @@  - + The ExtCore.Mvc extension component. Based on the ExtCore framework. diff --git a/src/ExtCore.Mvc/ExtCore.Mvc.csproj b/src/ExtCore.Mvc/ExtCore.Mvc.csproj index 3ff78c1..c86aa82 100644 --- a/src/ExtCore.Mvc/ExtCore.Mvc.csproj +++ b/src/ExtCore.Mvc/ExtCore.Mvc.csproj @@ -1,5 +1,5 @@  - + The ExtCore.Mvc extension component. Based on the ExtCore framework. diff --git a/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj b/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj index af8bc5c..1bd4106 100644 --- a/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj +++ b/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj @@ -1,5 +1,5 @@  - + Free, open source and cross-platform framework for creating modular and extendable web applications based on ASP.NET Core. diff --git a/common.props b/src/common.props similarity index 100% rename from common.props rename to src/common.props From 3d10fcb358e3828b42e138fbbc942ef14fd2fe2a Mon Sep 17 00:00:00 2001 From: Dmitry Sikorsky Date: Thu, 6 Jun 2024 14:10:17 +0300 Subject: [PATCH 81/81] Updated to .NET 8 --- README.md | 30 +++++++++---------- .../ExtCore.Data.Dapper.MySql.csproj | 4 +-- .../ExtCore.Data.Dapper.PostgreSql.csproj | 4 +-- .../ExtCore.Data.Dapper.SqlServer.csproj | 2 +- .../ExtCore.Data.Dapper.Sqlite.csproj | 4 +-- .../ExtCore.Data.Dapper.csproj | 4 +-- .../ExtCore.Data.EntityFramework.MySql.csproj | 4 +-- ...ore.Data.EntityFramework.PostgreSql.csproj | 4 +-- ...Core.Data.EntityFramework.SqlServer.csproj | 4 +-- ...ExtCore.Data.EntityFramework.Sqlite.csproj | 4 +-- .../ExtCore.Data.EntityFramework.csproj | 4 +-- src/ExtCore.Data/ExtCore.Data.csproj | 2 +- src/ExtCore.Events/ExtCore.Events.csproj | 2 +- .../ExtCore.FileStorage.Azure.csproj | 6 ++-- .../ExtCore.FileStorage.Dropbox.csproj | 4 +-- .../ExtCore.FileStorage.FileSystem.csproj | 2 +- .../ExtCore.FileStorage.csproj | 2 +- .../ExtCore.Infrastructure.csproj | 2 +- .../ExtCore.Mvc.Infrastructure.csproj | 2 +- src/ExtCore.Mvc/ExtCore.Mvc.csproj | 4 +-- .../ExtCore.WebApplication.csproj | 4 +-- src/common.props | 2 +- 22 files changed, 50 insertions(+), 50 deletions(-) diff --git a/README.md b/README.md index 19134b1..6588949 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# ExtCore 8.1.0 +# ExtCore 9.0.0 [![Join the chat at https://gitter.im/ExtCore/ExtCore](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/ExtCore/ExtCore?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) @@ -93,20 +93,20 @@ in order to execute some code inside the ConfigureServices and Configure methods Please take a look at our samples on GitHub: -* [Full-featured ExtCore 7.0.0 framework sample web application](https://github.com/ExtCore/ExtCore-Sample); -* [ExtCore framework 7.0.0 sample simplest web application](https://github.com/ExtCore/ExtCore-Sample-Simplest); -* [ExtCore framework 7.0.0 sample MVC web application](https://github.com/ExtCore/ExtCore-Sample-Mvc); -* [ExtCore framework 7.0.0 sample web application that uses file storage](https://github.com/ExtCore/ExtCore-Sample-FileStorage); -* [ExtCore framework 7.0.0 sample web application that uses a database](https://github.com/ExtCore/ExtCore-Sample-Data); -* [ExtCore framework 7.0.0 sample web application that uses Identity](https://github.com/ExtCore/ExtCore-Sample-Identity); -* [ExtCore framework 7.0.0 sample web application with modular UI](https://github.com/ExtCore/ExtCore-Sample-Modular-Ui); -* [ExtCore framework 7.0.0 advanced sample web application with modular UI](https://github.com/ExtCore/ExtCore-Sample-Modular-Ui-Adv); -* [ExtCore framework 7.0.0 advanced sample accounting web application](https://github.com/ExtCore/ExtCore-Sample-Accounting); -* [ExtCore framework 7.0.0 sample web application that registers a service inside the extension](https://github.com/ExtCore/ExtCore-Sample-Service); -* [ExtCore framework 7.0.0 sample web application that uses the events](https://github.com/ExtCore/ExtCore-Sample-Events); -* [ExtCore framework 7.0.0 sample API web application](https://github.com/ExtCore/ExtCore-Sample-Api). - -You can also download our [ready to use full-featured sample](http://extcore.net/files/ExtCore-Sample-7.0.0.zip). +* [Full-featured ExtCore 9.0.0 framework sample web application](https://github.com/ExtCore/ExtCore-Sample); +* [ExtCore framework 9.0.0 sample simplest web application](https://github.com/ExtCore/ExtCore-Sample-Simplest); +* [ExtCore framework 9.0.0 sample MVC web application](https://github.com/ExtCore/ExtCore-Sample-Mvc); +* [ExtCore framework 9.0.0 sample web application that uses file storage](https://github.com/ExtCore/ExtCore-Sample-FileStorage); +* [ExtCore framework 9.0.0 sample web application that uses a database](https://github.com/ExtCore/ExtCore-Sample-Data); +* [ExtCore framework 9.0.0 sample web application that uses Identity](https://github.com/ExtCore/ExtCore-Sample-Identity); +* [ExtCore framework 9.0.0 sample web application with modular UI](https://github.com/ExtCore/ExtCore-Sample-Modular-Ui); +* [ExtCore framework 9.0.0 advanced sample web application with modular UI](https://github.com/ExtCore/ExtCore-Sample-Modular-Ui-Adv); +* [ExtCore framework 9.0.0 advanced sample accounting web application](https://github.com/ExtCore/ExtCore-Sample-Accounting); +* [ExtCore framework 9.0.0 sample web application that registers a service inside the extension](https://github.com/ExtCore/ExtCore-Sample-Service); +* [ExtCore framework 9.0.0 sample web application that uses the events](https://github.com/ExtCore/ExtCore-Sample-Events); +* [ExtCore framework 9.0.0 sample API web application](https://github.com/ExtCore/ExtCore-Sample-Api). + +You can also download our [ready to use full-featured sample](http://extcore.net/files/ExtCore-Sample-9.0.0.zip). It contains everything you need to run ExtCore-based web application from Visual Studio 2022, including SQLite database with the test data. diff --git a/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj b/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj index dff35c5..874a62b 100644 --- a/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj +++ b/src/ExtCore.Data.Dapper.MySql/ExtCore.Data.Dapper.MySql.csproj @@ -3,13 +3,13 @@ The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - net7.0 + net8.0 ExtCore.Data.Dapper.MySql ExtCore.Data.Dapper.MySql - + diff --git a/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj b/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj index a7bed26..1796e32 100644 --- a/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj +++ b/src/ExtCore.Data.Dapper.PostgreSql/ExtCore.Data.Dapper.PostgreSql.csproj @@ -3,13 +3,13 @@ The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - net7.0 + net8.0 ExtCore.Data.Dapper.PostgreSql ExtCore.Data.Dapper.PostgreSql - + diff --git a/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj b/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj index 2c540ee..87694c6 100644 --- a/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj +++ b/src/ExtCore.Data.Dapper.SqlServer/ExtCore.Data.Dapper.SqlServer.csproj @@ -3,7 +3,7 @@ The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - net7.0 + net8.0 ExtCore.Data.Dapper.SqlServer ExtCore.Data.Dapper.SqlServer diff --git a/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj b/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj index eaa8645..bb9ba4b 100644 --- a/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj +++ b/src/ExtCore.Data.Dapper.Sqlite/ExtCore.Data.Dapper.Sqlite.csproj @@ -3,13 +3,13 @@ The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - net7.0 + net8.0 ExtCore.Data.Dapper.Sqlite ExtCore.Data.Dapper.Sqlite - + diff --git a/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj b/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj index 6d5adaf..367721d 100644 --- a/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj +++ b/src/ExtCore.Data.Dapper/ExtCore.Data.Dapper.csproj @@ -3,13 +3,13 @@ The ExtCore.Data.Dapper extension component. Based on the ExtCore framework. - net7.0 + net8.0 ExtCore.Data.Dapper ExtCore.Data.Dapper - + diff --git a/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj b/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj index b6d3d21..41554ce 100644 --- a/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj +++ b/src/ExtCore.Data.EntityFramework.MySql/ExtCore.Data.EntityFramework.MySql.csproj @@ -3,13 +3,13 @@ The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - net7.0 + net8.0 ExtCore.Data.EntityFramework.MySql ExtCore.Data.EntityFramework.MySql - + diff --git a/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj b/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj index d2bb199..a0f4bbf 100644 --- a/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj +++ b/src/ExtCore.Data.EntityFramework.PostgreSql/ExtCore.Data.EntityFramework.PostgreSql.csproj @@ -3,13 +3,13 @@ The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - net7.0 + net8.0 ExtCore.Data.EntityFramework.PostgreSql ExtCore.Data.EntityFramework.PostgreSql - + diff --git a/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj b/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj index 5df755b..b9a464a 100644 --- a/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj +++ b/src/ExtCore.Data.EntityFramework.SqlServer/ExtCore.Data.EntityFramework.SqlServer.csproj @@ -3,13 +3,13 @@ The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - net7.0 + net8.0 ExtCore.Data.EntityFramework.SqlServer ExtCore.Data.EntityFramework.SqlServer - + diff --git a/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj b/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj index dfae20f..ec6bad0 100644 --- a/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj +++ b/src/ExtCore.Data.EntityFramework.Sqlite/ExtCore.Data.EntityFramework.Sqlite.csproj @@ -3,13 +3,13 @@ The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - net7.0 + net8.0 ExtCore.Data.EntityFramework.Sqlite ExtCore.Data.EntityFramework.Sqlite - + diff --git a/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj b/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj index 8337f83..40f1857 100644 --- a/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj +++ b/src/ExtCore.Data.EntityFramework/ExtCore.Data.EntityFramework.csproj @@ -3,13 +3,13 @@ The ExtCore.Data.EntityFramework extension component. Based on the ExtCore framework. - net7.0 + net8.0 ExtCore.Data.EntityFramework ExtCore.Data.EntityFramework - + diff --git a/src/ExtCore.Data/ExtCore.Data.csproj b/src/ExtCore.Data/ExtCore.Data.csproj index 7f1ab9f..dcd0e80 100644 --- a/src/ExtCore.Data/ExtCore.Data.csproj +++ b/src/ExtCore.Data/ExtCore.Data.csproj @@ -3,7 +3,7 @@ The ExtCore.Data extension component. Based on the ExtCore framework. - net7.0 + net8.0 ExtCore.Data ExtCore.Data diff --git a/src/ExtCore.Events/ExtCore.Events.csproj b/src/ExtCore.Events/ExtCore.Events.csproj index 5372116..6a91583 100644 --- a/src/ExtCore.Events/ExtCore.Events.csproj +++ b/src/ExtCore.Events/ExtCore.Events.csproj @@ -3,7 +3,7 @@ The ExtCore.Events extension component. Based on the ExtCore framework. - net7.0 + net8.0 ExtCore.Events ExtCore.Events diff --git a/src/ExtCore.FileStorage.Azure/ExtCore.FileStorage.Azure.csproj b/src/ExtCore.FileStorage.Azure/ExtCore.FileStorage.Azure.csproj index 02392ad..07eb781 100644 --- a/src/ExtCore.FileStorage.Azure/ExtCore.FileStorage.Azure.csproj +++ b/src/ExtCore.FileStorage.Azure/ExtCore.FileStorage.Azure.csproj @@ -9,9 +9,9 @@ - - - + + + diff --git a/src/ExtCore.FileStorage.Dropbox/ExtCore.FileStorage.Dropbox.csproj b/src/ExtCore.FileStorage.Dropbox/ExtCore.FileStorage.Dropbox.csproj index 33dc972..46dcec9 100644 --- a/src/ExtCore.FileStorage.Dropbox/ExtCore.FileStorage.Dropbox.csproj +++ b/src/ExtCore.FileStorage.Dropbox/ExtCore.FileStorage.Dropbox.csproj @@ -9,8 +9,8 @@ - - + + diff --git a/src/ExtCore.FileStorage.FileSystem/ExtCore.FileStorage.FileSystem.csproj b/src/ExtCore.FileStorage.FileSystem/ExtCore.FileStorage.FileSystem.csproj index 6bb85d1..a5e0087 100644 --- a/src/ExtCore.FileStorage.FileSystem/ExtCore.FileStorage.FileSystem.csproj +++ b/src/ExtCore.FileStorage.FileSystem/ExtCore.FileStorage.FileSystem.csproj @@ -9,7 +9,7 @@ - + diff --git a/src/ExtCore.FileStorage/ExtCore.FileStorage.csproj b/src/ExtCore.FileStorage/ExtCore.FileStorage.csproj index 6d7fa8a..69afbe7 100644 --- a/src/ExtCore.FileStorage/ExtCore.FileStorage.csproj +++ b/src/ExtCore.FileStorage/ExtCore.FileStorage.csproj @@ -3,7 +3,7 @@ The ExtCore.FileStorage extension component. Based on the ExtCore framework. - net7.0 + net8.0 ExtCore.FileStorage ExtCore.FileStorage diff --git a/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj b/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj index df4a81a..3fe4246 100644 --- a/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj +++ b/src/ExtCore.Infrastructure/ExtCore.Infrastructure.csproj @@ -3,7 +3,7 @@ Free, open source and cross-platform framework for creating modular and extendable web applications based on ASP.NET Core. - net7.0 + net8.0 ExtCore.Infrastructure ExtCore.Infrastructure diff --git a/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj b/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj index f12133d..37932e2 100644 --- a/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj +++ b/src/ExtCore.Mvc.Infrastructure/ExtCore.Mvc.Infrastructure.csproj @@ -3,7 +3,7 @@ The ExtCore.Mvc extension component. Based on the ExtCore framework. - net7.0 + net8.0 ExtCore.Mvc.Infrastructure ExtCore.Mvc.Infrastructure diff --git a/src/ExtCore.Mvc/ExtCore.Mvc.csproj b/src/ExtCore.Mvc/ExtCore.Mvc.csproj index c86aa82..3a59bef 100644 --- a/src/ExtCore.Mvc/ExtCore.Mvc.csproj +++ b/src/ExtCore.Mvc/ExtCore.Mvc.csproj @@ -3,13 +3,13 @@ The ExtCore.Mvc extension component. Based on the ExtCore framework. - net7.0 + net8.0 ExtCore.Mvc ExtCore.Mvc - + diff --git a/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj b/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj index 1bd4106..e3f1638 100644 --- a/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj +++ b/src/ExtCore.WebApplication/ExtCore.WebApplication.csproj @@ -3,13 +3,13 @@ Free, open source and cross-platform framework for creating modular and extendable web applications based on ASP.NET Core. - net7.0 + net8.0 ExtCore.WebApplication ExtCore.WebApplication - + diff --git a/src/common.props b/src/common.props index ba9fe54..6c58c1a 100644 --- a/src/common.props +++ b/src/common.props @@ -3,7 +3,7 @@ Dmitry Sikorsky Copyright © 2015 Dmitry Sikorsky - 8.1.0 + 9.0.0 latest icon.png https://extcore.net