diff --git a/Library/Library.csproj b/Library/Library.csproj
index 7049824..38a1727 100644
--- a/Library/Library.csproj
+++ b/Library/Library.csproj
@@ -25,6 +25,15 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Library/PluginsConvention.cs b/Library/PluginsConvention.cs
new file mode 100644
index 0000000..2bf640a
--- /dev/null
+++ b/Library/PluginsConvention.cs
@@ -0,0 +1,213 @@
+using BusinessLogic;
+using ComponentsLibraryNet60.DocumentWithChart;
+using ComponentsLibraryNet60.DocumentWithTable;
+using ComponentsLibraryNet60.Models;
+using Contracts.BindingModels;
+using Contracts.BusinessLogicContracts;
+using Contracts.SearchModels;
+using Contracts.ViewModels;
+using CustomComponents;
+using DatabaseImplement.Implements;
+using KOP_Labs;
+using KOP_Labs.Classes;
+using KOP_Labs.NonVisualComponents;
+using PluginsConventionLibrary;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using ViewComponents.NotVisualComponents;
+
+namespace Library
+{
+ public class PluginsConvention : IPluginsConvention
+ {
+ private readonly IBookLogic _bookLogic;
+ private readonly IAuthorLogic _authorLogic;
+ private readonly KOP_Labs.TableComponent _controlDataTable;
+ private readonly PdfImages _pdfImagesComponent;
+ private readonly ComponentDocumentWithTableHeaderRowExcel _excelTableComponent;
+ private readonly WordHistogramm _chartBar;
+ public string PluginName { get; set; } = "LabWork_03_plugin";
+
+ public UserControl GetControl
+ {
+ get { return _controlDataTable; }
+ }
+
+ public PluginsConvention()
+ {
+ _bookLogic = new BookLogic(new BookStorage());
+ _authorLogic = new AuthorLogic(new AuthorStorage());
+ _pdfImagesComponent = new();
+ _excelTableComponent = new();
+ _chartBar = new();
+ _controlDataTable = new();
+ }
+
+ public PluginsConventionElement GetElement
+ {
+ get
+ {
+ int Id = _controlDataTable.GetSelectedObject()!.Id;
+ byte[] bytes = new byte[16];
+ BitConverter.GetBytes(Id).CopyTo(bytes, 0);
+ Guid guid = new Guid(bytes);
+ return new PluginsConventionElement() { Id = guid };
+ }
+ }
+
+ public Form GetForm(PluginsConventionElement element)
+ {
+ if (element == null)
+ {
+ return new FormBook(_bookLogic, _authorLogic);
+ }
+ else
+ {
+ FormBook form = new FormBook(_bookLogic, _authorLogic);
+ form.Id = element.Id.GetHashCode();
+ return form;
+ }
+ }
+
+ public Form GetThesaurus()
+ {
+ return new FormAuthor(_authorLogic);
+ }
+
+ public bool DeleteElement(PluginsConventionElement element)
+ {
+ _bookLogic.Delete(
+ new BookBindingModel { Id = element.Id.GetHashCode() }
+ );
+ return true;
+ }
+
+ public void ReloadData()
+ {
+ try
+ {
+ var list = _bookLogic.Read(null);
+ if (list != null)
+ {
+ _controlDataTable.ClearRows();
+
+ _controlDataTable.TableConfiguration(5, new List
+ {
+ new TableParameters("Id", 80, false, "Id"),
+ new TableParameters("Название", 100, true, "Name"),
+ new TableParameters("Автор", 180, true, "Author"),
+ new TableParameters("Обложка", 80, false, "PicturePath"),
+ new TableParameters("Дата издания", 150, true, "PublicationDate")
+ });
+
+ foreach (var row in list)
+ {
+ _controlDataTable.AddRow(row);
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageBox.Show(
+ ex.Message,
+ "Ошибка",
+ MessageBoxButtons.OK,
+ MessageBoxIcon.Error
+ );
+ }
+ }
+
+ public bool CreateSimpleDocument(PluginsConventionSaveDocument saveDocument)
+ {
+ List images = new List();
+ var list = _bookLogic.Read(null);
+
+ try
+ {
+ if (list != null)
+ {
+ foreach (var item in list)
+ {
+ images.Add(item.PicturePath);
+ }
+ string[] imagesArray = images.ToArray();
+
+ _pdfImagesComponent.CreatePdfDoc(new ImagesForPDF(saveDocument.FileName, "Иллюстрации книг", imagesArray));
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageBox.Show(ex.Message, "Ошибка");
+ }
+ MessageBox.Show("Документ создан");
+ return true;
+ }
+
+ public bool CreateTableDocument(PluginsConventionSaveDocument saveDocument)
+ {
+ List<(int Column, int Row)> width = new List<(int, int)>() { (30, 0), (30, 0), (30, 0), (30, 0) };
+ List<(int StartIndex, int Count)> column_union = new List<(int, int)>() { (1, 2) };
+ List<(int ColumnIndex, int RowIndex, string Header, string PropertyName)> headers =
+ new List<(int ColumnIndex, int RowIndex, string Header, string PropertyName)> {
+ (0,0, "Идентификатор", "Id"),
+ (1,0,"Книга", ""),
+ (1,1,"Название", "Name"),
+ (2,1,"Автор","Author"),
+ (3,0,"Дата публикации", "PublicationDate")
+ };
+
+ var list = _bookLogic.Read(null);
+
+ try
+ {
+ _excelTableComponent.CreateDoc(new ComponentDocumentWithTableHeaderDataConfig()
+ {
+ Data = list,
+ UseUnion = true,
+ ColumnsRowsWidth = width,
+ ColumnUnion = column_union,
+ Headers = headers,
+ FilePath = saveDocument.FileName,
+ Header = "Отчёт по книгам"
+ });
+ }
+ catch (Exception ex)
+ {
+ MessageBox.Show(ex.Message, "Ошибка");
+ }
+ MessageBox.Show("Документ создан");
+ return true;
+ }
+
+ public bool CreateChartDocument(PluginsConventionSaveDocument saveDocument)
+ {
+ System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance);
+
+ List dataHistogramms = new List();
+
+ var list_author = _authorLogic.Read(null);
+ var list_book = _bookLogic.Read(null);
+ foreach (var nm in list_author)
+ {
+ int bk_count = 0;
+ foreach (var bk in list_book)
+ if (bk.Author.Contains(nm.FIO)) bk_count++;
+ dataHistogramms.Add(new DataHistogramm(nm.FIO, bk_count));
+ }
+ try
+ {
+ _chartBar.CreateHistogramm(new MyHistogramm(saveDocument.FileName, "Гистограмма", "Авторы и их книги", EnumLegends.Top, dataHistogramms));
+ }
+ catch (Exception ex)
+ {
+ MessageBox.Show(ex.Message, "Ошибка");
+ }
+
+ MessageBox.Show("Документ создан");
+ return true;
+ }
+ }
+}
diff --git a/LibraryByPlugins/FormMain.Designer.cs b/LibraryByPlugins/FormMain.Designer.cs
new file mode 100644
index 0000000..3cc1b71
--- /dev/null
+++ b/LibraryByPlugins/FormMain.Designer.cs
@@ -0,0 +1,233 @@
+namespace LibraryByPlugins
+{
+ partial class FormMain
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ this.menuStrip = new System.Windows.Forms.MenuStrip();
+ this.ControlsStripMenuItem = new
+ System.Windows.Forms.ToolStripMenuItem();
+ this.ActionsToolStripMenuItem = new
+ System.Windows.Forms.ToolStripMenuItem();
+ this.DocsToolStripMenuItem = new
+ System.Windows.Forms.ToolStripMenuItem();
+ this.SimpleDocToolStripMenuItem = new
+ System.Windows.Forms.ToolStripMenuItem();
+ this.TableDocToolStripMenuItem = new
+ System.Windows.Forms.ToolStripMenuItem();
+ this.ChartDocToolStripMenuItem = new
+ System.Windows.Forms.ToolStripMenuItem();
+ this.panelControl = new System.Windows.Forms.Panel();
+ this.ThesaurusToolStripMenuItem = new
+ System.Windows.Forms.ToolStripMenuItem();
+ this.AddElementToolStripMenuItem = new
+ System.Windows.Forms.ToolStripMenuItem();
+ this.UpdElementToolStripMenuItem = new
+ System.Windows.Forms.ToolStripMenuItem();
+ this.DelElementToolStripMenuItem = new
+ System.Windows.Forms.ToolStripMenuItem();
+ this.menuStrip.SuspendLayout();
+ this.SuspendLayout();
+ //
+ // menuStrip
+ //
+ this.menuStrip.Items.AddRange(new
+ System.Windows.Forms.ToolStripItem[] {
+ this.ControlsStripMenuItem,
+ this.ActionsToolStripMenuItem,
+ this.DocsToolStripMenuItem});
+ this.menuStrip.Location = new System.Drawing.Point(0, 0);
+ this.menuStrip.Name = "menuStrip";
+ this.menuStrip.Size = new System.Drawing.Size(800, 24);
+ this.menuStrip.TabIndex = 0;
+ this.menuStrip.Text = "Меню";
+ //
+ // ControlsStripMenuItem
+ //
+ this.ControlsStripMenuItem.Name = "ControlsStripMenuItem";
+ this.ControlsStripMenuItem.Size = new System.Drawing.Size(94,
+ 20);
+ this.ControlsStripMenuItem.Text = "Компоненты";
+ //
+ // ActionsToolStripMenuItem
+ //
+ this.ActionsToolStripMenuItem.DropDownItems.AddRange(new
+ System.Windows.Forms.ToolStripItem[] {
+ this.ThesaurusToolStripMenuItem,
+ this.AddElementToolStripMenuItem,
+ this.UpdElementToolStripMenuItem,
+ this.DelElementToolStripMenuItem});
+ this.ActionsToolStripMenuItem.Name =
+ "ActionsToolStripMenuItem";
+ this.ActionsToolStripMenuItem.Size = new
+ System.Drawing.Size(70, 20);
+ this.ActionsToolStripMenuItem.Text = "Действия";
+ //
+ // DocsToolStripMenuItem
+ //
+ this.DocsToolStripMenuItem.DropDownItems.AddRange(new
+ System.Windows.Forms.ToolStripItem[] {
+ this.SimpleDocToolStripMenuItem,
+ this.TableDocToolStripMenuItem,
+ this.ChartDocToolStripMenuItem});
+ this.DocsToolStripMenuItem.Name = "DocsToolStripMenuItem";
+ this.DocsToolStripMenuItem.Size = new System.Drawing.Size(82, 20);
+ this.DocsToolStripMenuItem.Text = "Документы";
+ //
+ // SimpleDocToolStripMenuItem
+ //
+ this.SimpleDocToolStripMenuItem.Name = "SimpleDocToolStripMenuItem";
+ this.SimpleDocToolStripMenuItem.ShortcutKeys =
+ ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control |
+ System.Windows.Forms.Keys.S)));
+ this.SimpleDocToolStripMenuItem.Size = new
+ System.Drawing.Size(233, 22);
+ this.SimpleDocToolStripMenuItem.Text = "Простой документ";
+ this.SimpleDocToolStripMenuItem.Click += new
+ System.EventHandler(this.SimpleDocToolStripMenuItem_Click);
+ //
+ // TableDocToolStripMenuItem
+ //
+ this.TableDocToolStripMenuItem.Name =
+ "TableDocToolStripMenuItem";
+ this.TableDocToolStripMenuItem.ShortcutKeys =
+ ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control |
+ System.Windows.Forms.Keys.T)));
+ this.TableDocToolStripMenuItem.Size = new
+ System.Drawing.Size(233, 22);
+ this.TableDocToolStripMenuItem.Text = "Документ с таблицой";
+ this.TableDocToolStripMenuItem.Click += new
+ System.EventHandler(this.TableDocToolStripMenuItem_Click);
+ //
+ // ChartDocToolStripMenuItem
+ //
+ this.ChartDocToolStripMenuItem.Name =
+ "ChartDocToolStripMenuItem";
+ this.ChartDocToolStripMenuItem.ShortcutKeys =
+ ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control |
+ System.Windows.Forms.Keys.C)));
+ this.ChartDocToolStripMenuItem.Size = new
+ System.Drawing.Size(233, 22);
+ this.ChartDocToolStripMenuItem.Text = "Диаграмма";
+ this.ChartDocToolStripMenuItem.Click += new
+ System.EventHandler(this.ChartDocToolStripMenuItem_Click);
+ //
+ // panelControl
+ //
+ this.panelControl.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.panelControl.Location = new System.Drawing.Point(0, 24);
+ this.panelControl.Name = "panelControl";
+ this.panelControl.Size = new System.Drawing.Size(800, 426);
+ this.panelControl.TabIndex = 1;
+ //
+ // ThesaurusToolStripMenuItem
+ //
+ this.ThesaurusToolStripMenuItem.Name =
+ "ThesaurusToolStripMenuItem";
+ this.ThesaurusToolStripMenuItem.ShortcutKeys =
+ ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control |
+ System.Windows.Forms.Keys.I)));
+ this.ThesaurusToolStripMenuItem.Size = new
+ System.Drawing.Size(180, 22);
+ this.ThesaurusToolStripMenuItem.Text = "Справочник";
+ this.ThesaurusToolStripMenuItem.Click += new
+ System.EventHandler(this.ThesaurusToolStripMenuItem_Click);
+ //
+ // AddElementToolStripMenuItem
+ //
+ this.AddElementToolStripMenuItem.Name =
+ "AddElementToolStripMenuItem";
+ this.AddElementToolStripMenuItem.ShortcutKeys =
+ ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control |
+ System.Windows.Forms.Keys.A)));
+ this.AddElementToolStripMenuItem.Size = new
+ System.Drawing.Size(180, 22);
+ this.AddElementToolStripMenuItem.Text = "Добавить";
+ this.AddElementToolStripMenuItem.Click += new
+ System.EventHandler(this.AddElementToolStripMenuItem_Click);
+ //
+ // UpdElementToolStripMenuItem
+ //
+ this.UpdElementToolStripMenuItem.Name = "UpdElementToolStripMenuItem";
+ this.UpdElementToolStripMenuItem.ShortcutKeys =
+ ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control |
+ System.Windows.Forms.Keys.U)));
+ this.UpdElementToolStripMenuItem.Size = new
+ System.Drawing.Size(180, 22);
+ this.UpdElementToolStripMenuItem.Text = "Изменить";
+ this.UpdElementToolStripMenuItem.Click += new
+ System.EventHandler(this.UpdElementToolStripMenuItem_Click);
+ //
+ // DelElementToolStripMenuItem
+ //
+ this.DelElementToolStripMenuItem.Name =
+ "DelElementToolStripMenuItem";
+ this.DelElementToolStripMenuItem.ShortcutKeys =
+ ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control |
+ System.Windows.Forms.Keys.D)));
+ this.DelElementToolStripMenuItem.Size = new
+ System.Drawing.Size(180, 22);
+ this.DelElementToolStripMenuItem.Text = "Удалить";
+ this.DelElementToolStripMenuItem.Click += new
+ System.EventHandler(this.DelElementToolStripMenuItem_Click);
+ //
+ // FormMain
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(800, 450);
+ this.Controls.Add(this.panelControl);
+ this.Controls.Add(this.menuStrip);
+ this.MainMenuStrip = this.menuStrip;
+ this.Name = "FormMain";
+ this.StartPosition =
+ System.Windows.Forms.FormStartPosition.CenterScreen;
+ this.Text = "Главная форма";
+ this.WindowState =
+ System.Windows.Forms.FormWindowState.Maximized;
+ this.KeyDown += new
+ System.Windows.Forms.KeyEventHandler(this.FormMain_KeyDown);
+ this.menuStrip.ResumeLayout(false);
+ this.menuStrip.PerformLayout();
+ this.ResumeLayout(false);
+ this.PerformLayout();
+ }
+ #endregion
+ private System.Windows.Forms.MenuStrip menuStrip;
+ private System.Windows.Forms.ToolStripMenuItem ControlsStripMenuItem;
+ private System.Windows.Forms.ToolStripMenuItem DocsToolStripMenuItem;
+ private System.Windows.Forms.ToolStripMenuItem SimpleDocToolStripMenuItem;
+ private System.Windows.Forms.ToolStripMenuItem TableDocToolStripMenuItem;
+ private System.Windows.Forms.ToolStripMenuItem ChartDocToolStripMenuItem;
+ private System.Windows.Forms.Panel panelControl;
+ private System.Windows.Forms.ToolStripMenuItem ActionsToolStripMenuItem;
+ private System.Windows.Forms.ToolStripMenuItem ThesaurusToolStripMenuItem;
+ private System.Windows.Forms.ToolStripMenuItem AddElementToolStripMenuItem;
+ private System.Windows.Forms.ToolStripMenuItem UpdElementToolStripMenuItem;
+ private System.Windows.Forms.ToolStripMenuItem DelElementToolStripMenuItem;
+ }
+}
diff --git a/LibraryByPlugins/FormMain.cs b/LibraryByPlugins/FormMain.cs
new file mode 100644
index 0000000..436dba6
--- /dev/null
+++ b/LibraryByPlugins/FormMain.cs
@@ -0,0 +1,221 @@
+using PluginsConventionLibrary;
+using System.Reflection;
+
+namespace LibraryByPlugins
+{
+ public partial class FormMain : Form
+ {
+ private readonly Dictionary _plugins;
+ private string _selectedPlugin;
+ public FormMain()
+ {
+ InitializeComponent();
+ _plugins = new();
+ LoadPlugins();
+ _selectedPlugin = string.Empty;
+ }
+
+ private void LoadPlugins()
+ {
+ List pluginsList = GetPlugins();
+
+ foreach (var plugin in pluginsList)
+ {
+ _plugins[plugin.PluginName] = plugin;
+ CreateMenuItem(plugin.PluginName);
+ }
+ }
+ private List GetPlugins()
+ {
+ string currentDir = Environment.CurrentDirectory;
+ string pluginsDir = Directory.GetParent(currentDir).Parent.Parent.Parent.FullName + "\\Plugins";
+ string[] dllFiles = Directory.GetFiles(
+ pluginsDir,
+ "*.dll",
+ SearchOption.AllDirectories
+ );
+ List plugins = new();
+ foreach (string dllFile in dllFiles)
+ {
+ try
+ {
+ Assembly assembly = Assembly.LoadFrom(dllFile);
+ Type[] types = assembly.GetTypes();
+ foreach (Type type in types)
+ {
+ if (typeof(IPluginsConvention).IsAssignableFrom(type) && !type.IsInterface)
+ {
+ if (Activator.CreateInstance(type) is IPluginsConvention plugin)
+ {
+ plugins.Add(plugin);
+ }
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageBox.Show(
+ ex.Message
+ );
+ }
+ }
+ return plugins;
+ }
+ private void CreateMenuItem(string pluginName)
+ {
+ ToolStripMenuItem menuItem = new ToolStripMenuItem(pluginName);
+ menuItem.Click += (object? sender, EventArgs a) =>
+ {
+ _selectedPlugin = pluginName;
+ IPluginsConvention plugin = _plugins[pluginName];
+ UserControl userControl = plugin.GetControl;
+ if (userControl != null)
+ {
+ panelControl.Controls.Clear();
+ plugin.ReloadData();
+ userControl.Dock = DockStyle.Fill;
+ panelControl.Controls.Add(userControl);
+ }
+ };
+ ControlsStripMenuItem.DropDownItems.Add(menuItem);
+ }
+ private void FormMain_KeyDown(object sender, KeyEventArgs e)
+ {
+ if (string.IsNullOrEmpty(_selectedPlugin) ||
+ !_plugins.ContainsKey(_selectedPlugin))
+ {
+ return;
+ }
+ if (!e.Control)
+ {
+ return;
+ }
+ switch (e.KeyCode)
+ {
+ case Keys.I:
+ ShowThesaurus();
+ break;
+ case Keys.A:
+ AddNewElement();
+ break;
+ case Keys.U:
+ UpdateElement();
+ break;
+ case Keys.D:
+ DeleteElement();
+ break;
+ case Keys.S:
+ CreateSimpleDoc();
+ break;
+ case Keys.T:
+ CreateTableDoc();
+ break;
+ case Keys.C:
+ CreateChartDoc();
+ break;
+ }
+ }
+ private void ShowThesaurus()
+ {
+ _plugins[_selectedPlugin].GetThesaurus()?.Show();
+ }
+ private void AddNewElement()
+ {
+ var form = _plugins[_selectedPlugin].GetForm(null);
+ if (form != null && form.ShowDialog() == DialogResult.OK)
+ {
+ _plugins[_selectedPlugin].ReloadData();
+ }
+ }
+ private void UpdateElement()
+ {
+ var element = _plugins[_selectedPlugin].GetElement;
+ if (element == null)
+ {
+ MessageBox.Show("Не выбран элемент для обновления",
+ "Ошибка",
+ MessageBoxButtons.OK, MessageBoxIcon.Error);
+ return;
+ }
+ var form = _plugins[_selectedPlugin].GetForm(element);
+ if (form != null && form.ShowDialog() == DialogResult.OK)
+ {
+ _plugins[_selectedPlugin].ReloadData();
+ }
+ }
+ private void DeleteElement()
+ {
+ if (MessageBox.Show("Удалить выбранный элемент?",
+ "Удаление",
+ MessageBoxButtons.YesNo, MessageBoxIcon.Question) != DialogResult.Yes)
+ {
+ return;
+ }
+ var element = _plugins[_selectedPlugin].GetElement;
+ if (element == null)
+ {
+ MessageBox.Show("Не выбран элемент для удаления",
+ "Ошибка",
+ MessageBoxButtons.OK, MessageBoxIcon.Error);
+ return;
+ }
+ if (_plugins[_selectedPlugin].DeleteElement(element))
+ {
+ _plugins[_selectedPlugin].ReloadData();
+ }
+ }
+ private void CreateSimpleDoc()
+ {
+ SaveFileDialog saveFileDialog = new()
+ {
+ Filter = "PDF Files|*.pdf"
+ };
+ if (saveFileDialog.ShowDialog() == DialogResult.OK)
+ {
+ _plugins[_selectedPlugin].CreateSimpleDocument(new PluginsConventionSaveDocument() { FileName = saveFileDialog.FileName });
+
+ }
+ }
+ private void CreateTableDoc()
+ {
+ SaveFileDialog saveFileDialog = new()
+ {
+ Filter = "Excel Files|*.xlsx"
+ };
+ if (saveFileDialog.ShowDialog() == DialogResult.OK)
+ {
+ _plugins[_selectedPlugin].CreateTableDocument(new PluginsConventionSaveDocument() { FileName = saveFileDialog.FileName });
+
+ }
+ }
+ private void CreateChartDoc()
+ {
+ SaveFileDialog saveFileDialog = new()
+ {
+ Filter = "Word Files|*.docx"
+ };
+ if (saveFileDialog.ShowDialog() == DialogResult.OK)
+ {
+ _plugins[_selectedPlugin].CreateChartDocument(new PluginsConventionSaveDocument() { FileName = saveFileDialog.FileName });
+ }
+ }
+ private void ThesaurusToolStripMenuItem_Click(object sender,
+ EventArgs e) => ShowThesaurus();
+ private void AddElementToolStripMenuItem_Click(object sender,
+ EventArgs e) => AddNewElement();
+ private void UpdElementToolStripMenuItem_Click(object sender,
+ EventArgs e) => UpdateElement();
+ private void DelElementToolStripMenuItem_Click(object sender,
+ EventArgs e) => DeleteElement();
+ private void SimpleDocToolStripMenuItem_Click(object sender,
+ EventArgs e) => CreateSimpleDoc();
+ private void TableDocToolStripMenuItem_Click(object sender, EventArgs
+ e) => CreateTableDoc();
+ private void ChartDocToolStripMenuItem_Click(object sender, EventArgs
+ e) => CreateChartDoc();
+ private void FormMain_Load(object sender, EventArgs e)
+ {
+
+ }
+ }
+}
diff --git a/LibraryByPlugins/FormMain.resx b/LibraryByPlugins/FormMain.resx
new file mode 100644
index 0000000..6c82d08
--- /dev/null
+++ b/LibraryByPlugins/FormMain.resx
@@ -0,0 +1,123 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 17, 17
+
+
\ No newline at end of file
diff --git a/LibraryByPlugins/LibraryByPlugins.csproj b/LibraryByPlugins/LibraryByPlugins.csproj
new file mode 100644
index 0000000..fab915d
--- /dev/null
+++ b/LibraryByPlugins/LibraryByPlugins.csproj
@@ -0,0 +1,22 @@
+
+
+
+ WinExe
+ net6.0-windows
+ enable
+ true
+ enable
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/LibraryByPlugins/Program.cs b/LibraryByPlugins/Program.cs
new file mode 100644
index 0000000..b129214
--- /dev/null
+++ b/LibraryByPlugins/Program.cs
@@ -0,0 +1,17 @@
+namespace LibraryByPlugins
+{
+ internal static class Program
+ {
+ ///
+ /// The main entry point for the application.
+ ///
+ [STAThread]
+ static void Main()
+ {
+ // To customize application configuration such as set high DPI settings or default font,
+ // see https://aka.ms/applicationconfiguration.
+ ApplicationConfiguration.Initialize();
+ Application.Run(new FormMain());
+ }
+ }
+}
\ No newline at end of file
diff --git a/Plugins/Aspose.Words.Pdf2Word.dll b/Plugins/Aspose.Words.Pdf2Word.dll
new file mode 100644
index 0000000..72d08f0
Binary files /dev/null and b/Plugins/Aspose.Words.Pdf2Word.dll differ
diff --git a/Plugins/Aspose.Words.dll b/Plugins/Aspose.Words.dll
new file mode 100644
index 0000000..10946f7
Binary files /dev/null and b/Plugins/Aspose.Words.dll differ
diff --git a/Plugins/Azure.Core.dll b/Plugins/Azure.Core.dll
new file mode 100644
index 0000000..aa966ba
Binary files /dev/null and b/Plugins/Azure.Core.dll differ
diff --git a/Plugins/Azure.Identity.dll b/Plugins/Azure.Identity.dll
new file mode 100644
index 0000000..eaab465
Binary files /dev/null and b/Plugins/Azure.Identity.dll differ
diff --git a/Plugins/BusinessLogic.dll b/Plugins/BusinessLogic.dll
new file mode 100644
index 0000000..3f482f1
Binary files /dev/null and b/Plugins/BusinessLogic.dll differ
diff --git a/Plugins/ComponentsLibraryNet60.dll b/Plugins/ComponentsLibraryNet60.dll
new file mode 100644
index 0000000..9807306
Binary files /dev/null and b/Plugins/ComponentsLibraryNet60.dll differ
diff --git a/Plugins/Contracts.dll b/Plugins/Contracts.dll
new file mode 100644
index 0000000..cc94ced
Binary files /dev/null and b/Plugins/Contracts.dll differ
diff --git a/Plugins/CustomComponents.dll b/Plugins/CustomComponents.dll
new file mode 100644
index 0000000..0e60b34
Binary files /dev/null and b/Plugins/CustomComponents.dll differ
diff --git a/Plugins/DatabaseImplement.dll b/Plugins/DatabaseImplement.dll
new file mode 100644
index 0000000..a6b4428
Binary files /dev/null and b/Plugins/DatabaseImplement.dll differ
diff --git a/Plugins/DocumentFormat.OpenXml.dll b/Plugins/DocumentFormat.OpenXml.dll
new file mode 100644
index 0000000..ccdb81c
Binary files /dev/null and b/Plugins/DocumentFormat.OpenXml.dll differ
diff --git a/Plugins/Humanizer.dll b/Plugins/Humanizer.dll
new file mode 100644
index 0000000..c9a7ef8
Binary files /dev/null and b/Plugins/Humanizer.dll differ
diff --git a/Plugins/KOP_Labs.dll b/Plugins/KOP_Labs.dll
new file mode 100644
index 0000000..9db3a21
Binary files /dev/null and b/Plugins/KOP_Labs.dll differ
diff --git a/Plugins/Library.dll b/Plugins/Library.dll
new file mode 100644
index 0000000..f4a63da
Binary files /dev/null and b/Plugins/Library.dll differ
diff --git a/Plugins/Microsoft.Bcl.AsyncInterfaces.dll b/Plugins/Microsoft.Bcl.AsyncInterfaces.dll
new file mode 100644
index 0000000..a5b7ff9
Binary files /dev/null and b/Plugins/Microsoft.Bcl.AsyncInterfaces.dll differ
diff --git a/Plugins/Microsoft.Data.SqlClient.dll b/Plugins/Microsoft.Data.SqlClient.dll
new file mode 100644
index 0000000..57a41ac
Binary files /dev/null and b/Plugins/Microsoft.Data.SqlClient.dll differ
diff --git a/Plugins/Microsoft.EntityFrameworkCore.Abstractions.dll b/Plugins/Microsoft.EntityFrameworkCore.Abstractions.dll
new file mode 100644
index 0000000..eeab7ab
Binary files /dev/null and b/Plugins/Microsoft.EntityFrameworkCore.Abstractions.dll differ
diff --git a/Plugins/Microsoft.EntityFrameworkCore.Design.dll b/Plugins/Microsoft.EntityFrameworkCore.Design.dll
new file mode 100644
index 0000000..36f63a3
Binary files /dev/null and b/Plugins/Microsoft.EntityFrameworkCore.Design.dll differ
diff --git a/Plugins/Microsoft.EntityFrameworkCore.Relational.dll b/Plugins/Microsoft.EntityFrameworkCore.Relational.dll
new file mode 100644
index 0000000..80d8ec6
Binary files /dev/null and b/Plugins/Microsoft.EntityFrameworkCore.Relational.dll differ
diff --git a/Plugins/Microsoft.EntityFrameworkCore.SqlServer.dll b/Plugins/Microsoft.EntityFrameworkCore.SqlServer.dll
new file mode 100644
index 0000000..51077d2
Binary files /dev/null and b/Plugins/Microsoft.EntityFrameworkCore.SqlServer.dll differ
diff --git a/Plugins/Microsoft.EntityFrameworkCore.dll b/Plugins/Microsoft.EntityFrameworkCore.dll
new file mode 100644
index 0000000..7642ffd
Binary files /dev/null and b/Plugins/Microsoft.EntityFrameworkCore.dll differ
diff --git a/Plugins/Microsoft.Extensions.Caching.Abstractions.dll b/Plugins/Microsoft.Extensions.Caching.Abstractions.dll
new file mode 100644
index 0000000..be73869
Binary files /dev/null and b/Plugins/Microsoft.Extensions.Caching.Abstractions.dll differ
diff --git a/Plugins/Microsoft.Extensions.Caching.Memory.dll b/Plugins/Microsoft.Extensions.Caching.Memory.dll
new file mode 100644
index 0000000..561804a
Binary files /dev/null and b/Plugins/Microsoft.Extensions.Caching.Memory.dll differ
diff --git a/Plugins/Microsoft.Extensions.Configuration.Abstractions.dll b/Plugins/Microsoft.Extensions.Configuration.Abstractions.dll
new file mode 100644
index 0000000..3a12ec4
Binary files /dev/null and b/Plugins/Microsoft.Extensions.Configuration.Abstractions.dll differ
diff --git a/Plugins/Microsoft.Extensions.DependencyInjection.Abstractions.dll b/Plugins/Microsoft.Extensions.DependencyInjection.Abstractions.dll
new file mode 100644
index 0000000..11e5f2e
Binary files /dev/null and b/Plugins/Microsoft.Extensions.DependencyInjection.Abstractions.dll differ
diff --git a/Plugins/Microsoft.Extensions.DependencyInjection.dll b/Plugins/Microsoft.Extensions.DependencyInjection.dll
new file mode 100644
index 0000000..2c64257
Binary files /dev/null and b/Plugins/Microsoft.Extensions.DependencyInjection.dll differ
diff --git a/Plugins/Microsoft.Extensions.DependencyModel.dll b/Plugins/Microsoft.Extensions.DependencyModel.dll
new file mode 100644
index 0000000..072af1f
Binary files /dev/null and b/Plugins/Microsoft.Extensions.DependencyModel.dll differ
diff --git a/Plugins/Microsoft.Extensions.Logging.Abstractions.dll b/Plugins/Microsoft.Extensions.Logging.Abstractions.dll
new file mode 100644
index 0000000..03edd8f
Binary files /dev/null and b/Plugins/Microsoft.Extensions.Logging.Abstractions.dll differ
diff --git a/Plugins/Microsoft.Extensions.Logging.dll b/Plugins/Microsoft.Extensions.Logging.dll
new file mode 100644
index 0000000..c53f5d2
Binary files /dev/null and b/Plugins/Microsoft.Extensions.Logging.dll differ
diff --git a/Plugins/Microsoft.Extensions.Options.dll b/Plugins/Microsoft.Extensions.Options.dll
new file mode 100644
index 0000000..3987d66
Binary files /dev/null and b/Plugins/Microsoft.Extensions.Options.dll differ
diff --git a/Plugins/Microsoft.Extensions.Primitives.dll b/Plugins/Microsoft.Extensions.Primitives.dll
new file mode 100644
index 0000000..081abea
Binary files /dev/null and b/Plugins/Microsoft.Extensions.Primitives.dll differ
diff --git a/Plugins/Microsoft.Identity.Client.Extensions.Msal.dll b/Plugins/Microsoft.Identity.Client.Extensions.Msal.dll
new file mode 100644
index 0000000..04be9fc
Binary files /dev/null and b/Plugins/Microsoft.Identity.Client.Extensions.Msal.dll differ
diff --git a/Plugins/Microsoft.Identity.Client.dll b/Plugins/Microsoft.Identity.Client.dll
new file mode 100644
index 0000000..112dd74
Binary files /dev/null and b/Plugins/Microsoft.Identity.Client.dll differ
diff --git a/Plugins/Microsoft.IdentityModel.Abstractions.dll b/Plugins/Microsoft.IdentityModel.Abstractions.dll
new file mode 100644
index 0000000..6a0300a
Binary files /dev/null and b/Plugins/Microsoft.IdentityModel.Abstractions.dll differ
diff --git a/Plugins/Microsoft.IdentityModel.JsonWebTokens.dll b/Plugins/Microsoft.IdentityModel.JsonWebTokens.dll
new file mode 100644
index 0000000..80565a9
Binary files /dev/null and b/Plugins/Microsoft.IdentityModel.JsonWebTokens.dll differ
diff --git a/Plugins/Microsoft.IdentityModel.Logging.dll b/Plugins/Microsoft.IdentityModel.Logging.dll
new file mode 100644
index 0000000..c6427c7
Binary files /dev/null and b/Plugins/Microsoft.IdentityModel.Logging.dll differ
diff --git a/Plugins/Microsoft.IdentityModel.Protocols.OpenIdConnect.dll b/Plugins/Microsoft.IdentityModel.Protocols.OpenIdConnect.dll
new file mode 100644
index 0000000..73cb93e
Binary files /dev/null and b/Plugins/Microsoft.IdentityModel.Protocols.OpenIdConnect.dll differ
diff --git a/Plugins/Microsoft.IdentityModel.Protocols.dll b/Plugins/Microsoft.IdentityModel.Protocols.dll
new file mode 100644
index 0000000..df4b6d0
Binary files /dev/null and b/Plugins/Microsoft.IdentityModel.Protocols.dll differ
diff --git a/Plugins/Microsoft.IdentityModel.Tokens.dll b/Plugins/Microsoft.IdentityModel.Tokens.dll
new file mode 100644
index 0000000..9d9fcdd
Binary files /dev/null and b/Plugins/Microsoft.IdentityModel.Tokens.dll differ
diff --git a/Plugins/Microsoft.Office.Interop.Excel.dll b/Plugins/Microsoft.Office.Interop.Excel.dll
new file mode 100644
index 0000000..4ab081c
Binary files /dev/null and b/Plugins/Microsoft.Office.Interop.Excel.dll differ
diff --git a/Plugins/Microsoft.SqlServer.Server.dll b/Plugins/Microsoft.SqlServer.Server.dll
new file mode 100644
index 0000000..ddeaa86
Binary files /dev/null and b/Plugins/Microsoft.SqlServer.Server.dll differ
diff --git a/Plugins/Microsoft.Vbe.Interop.dll b/Plugins/Microsoft.Vbe.Interop.dll
new file mode 100644
index 0000000..d8c4b64
Binary files /dev/null and b/Plugins/Microsoft.Vbe.Interop.dll differ
diff --git a/Plugins/MigraDoc.DocumentObjectModel.dll b/Plugins/MigraDoc.DocumentObjectModel.dll
new file mode 100644
index 0000000..2bf457c
Binary files /dev/null and b/Plugins/MigraDoc.DocumentObjectModel.dll differ
diff --git a/Plugins/MigraDoc.Rendering.dll b/Plugins/MigraDoc.Rendering.dll
new file mode 100644
index 0000000..9c14fbe
Binary files /dev/null and b/Plugins/MigraDoc.Rendering.dll differ
diff --git a/Plugins/MigraDoc.RtfRendering.dll b/Plugins/MigraDoc.RtfRendering.dll
new file mode 100644
index 0000000..4b49184
Binary files /dev/null and b/Plugins/MigraDoc.RtfRendering.dll differ
diff --git a/Plugins/Mono.TextTemplating.dll b/Plugins/Mono.TextTemplating.dll
new file mode 100644
index 0000000..d5a4b3c
Binary files /dev/null and b/Plugins/Mono.TextTemplating.dll differ
diff --git a/Plugins/Office.dll b/Plugins/Office.dll
new file mode 100644
index 0000000..447c580
Binary files /dev/null and b/Plugins/Office.dll differ
diff --git a/Plugins/PdfSharp.Charting.dll b/Plugins/PdfSharp.Charting.dll
new file mode 100644
index 0000000..f648e4a
Binary files /dev/null and b/Plugins/PdfSharp.Charting.dll differ
diff --git a/Plugins/PdfSharp.dll b/Plugins/PdfSharp.dll
new file mode 100644
index 0000000..aa564e1
Binary files /dev/null and b/Plugins/PdfSharp.dll differ
diff --git a/Plugins/PluginsConventionLibrary.dll b/Plugins/PluginsConventionLibrary.dll
new file mode 100644
index 0000000..236f6b4
Binary files /dev/null and b/Plugins/PluginsConventionLibrary.dll differ
diff --git a/Plugins/SkiaSharp.dll b/Plugins/SkiaSharp.dll
new file mode 100644
index 0000000..518648c
Binary files /dev/null and b/Plugins/SkiaSharp.dll differ
diff --git a/Plugins/System.IdentityModel.Tokens.Jwt.dll b/Plugins/System.IdentityModel.Tokens.Jwt.dll
new file mode 100644
index 0000000..131456c
Binary files /dev/null and b/Plugins/System.IdentityModel.Tokens.Jwt.dll differ
diff --git a/Plugins/System.Memory.Data.dll b/Plugins/System.Memory.Data.dll
new file mode 100644
index 0000000..6f2a3e0
Binary files /dev/null and b/Plugins/System.Memory.Data.dll differ
diff --git a/Plugins/System.Runtime.Caching.dll b/Plugins/System.Runtime.Caching.dll
new file mode 100644
index 0000000..6a6eb85
Binary files /dev/null and b/Plugins/System.Runtime.Caching.dll differ
diff --git a/Plugins/System.Text.Encoding.CodePages.dll b/Plugins/System.Text.Encoding.CodePages.dll
new file mode 100644
index 0000000..e539c5e
Binary files /dev/null and b/Plugins/System.Text.Encoding.CodePages.dll differ
diff --git a/Plugins/System.Text.Encodings.Web.dll b/Plugins/System.Text.Encodings.Web.dll
new file mode 100644
index 0000000..13a219a
Binary files /dev/null and b/Plugins/System.Text.Encodings.Web.dll differ
diff --git a/Plugins/System.Text.Json.dll b/Plugins/System.Text.Json.dll
new file mode 100644
index 0000000..2078226
Binary files /dev/null and b/Plugins/System.Text.Json.dll differ
diff --git a/Plugins/Unity.Abstractions.dll b/Plugins/Unity.Abstractions.dll
new file mode 100644
index 0000000..7584a48
Binary files /dev/null and b/Plugins/Unity.Abstractions.dll differ
diff --git a/Plugins/Unity.Container.dll b/Plugins/Unity.Container.dll
new file mode 100644
index 0000000..9602753
Binary files /dev/null and b/Plugins/Unity.Container.dll differ
diff --git a/Plugins/ViewComponents.dll b/Plugins/ViewComponents.dll
new file mode 100644
index 0000000..acfc5bc
Binary files /dev/null and b/Plugins/ViewComponents.dll differ
diff --git a/PluginsConventionLibrary/IPluginsConvention.cs b/PluginsConventionLibrary/IPluginsConvention.cs
new file mode 100644
index 0000000..2b08ecf
--- /dev/null
+++ b/PluginsConventionLibrary/IPluginsConvention.cs
@@ -0,0 +1,64 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace PluginsConventionLibrary
+{
+ public interface IPluginsConvention
+ {
+ ///
+ /// Название плагина
+ ///
+ string PluginName { get; }
+ ///
+ /// Получение контрола для вывода набора данных
+ ///
+ UserControl GetControl { get; }
+ ///
+ /// Получение элемента, выбранного в контроле
+ ///
+ PluginsConventionElement GetElement { get; }
+ ///
+ /// Получение формы для создания/редактирования объекта
+ ///
+ ///
+ ///
+ Form GetForm(PluginsConventionElement element);
+ ///
+ /// Получение формы для работы со справочником
+ ///
+ ///
+ Form GetThesaurus();
+ ///
+ /// Удаление элемента
+ ///
+ ///
+ ///
+ bool DeleteElement(PluginsConventionElement element);
+ ///
+ /// Обновление набора данных в контроле
+ ///
+ void ReloadData();
+ ///
+ /// Создание простого документа
+ ///
+ ///
+ ///
+ bool CreateSimpleDocument(PluginsConventionSaveDocument
+ saveDocument);
+ ///
+ /// Создание простого документа
+ ///
+ ///
+ ///
+ bool CreateTableDocument(PluginsConventionSaveDocument saveDocument);
+ ///
+ /// Создание документа с диаграммой
+ ///
+ ///
+ ///
+ bool CreateChartDocument(PluginsConventionSaveDocument saveDocument);
+ }
+}
diff --git a/PluginsConventionLibrary/PluginsConventionElement.cs b/PluginsConventionLibrary/PluginsConventionElement.cs
new file mode 100644
index 0000000..259811e
--- /dev/null
+++ b/PluginsConventionLibrary/PluginsConventionElement.cs
@@ -0,0 +1,13 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace PluginsConventionLibrary
+{
+ public class PluginsConventionElement
+ {
+ public Guid Id { get; set; }
+ }
+}
diff --git a/PluginsConventionLibrary/PluginsConventionLibrary.csproj b/PluginsConventionLibrary/PluginsConventionLibrary.csproj
new file mode 100644
index 0000000..060aa1c
--- /dev/null
+++ b/PluginsConventionLibrary/PluginsConventionLibrary.csproj
@@ -0,0 +1,10 @@
+
+
+
+ net6.0-windows
+ enable
+ true
+ enable
+
+
+
diff --git a/PluginsConventionLibrary/PluginsConventionSaveDocument.cs b/PluginsConventionLibrary/PluginsConventionSaveDocument.cs
new file mode 100644
index 0000000..25d580f
--- /dev/null
+++ b/PluginsConventionLibrary/PluginsConventionSaveDocument.cs
@@ -0,0 +1,13 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace PluginsConventionLibrary
+{
+ public class PluginsConventionSaveDocument
+ {
+ public string FileName { get; set; }
+ }
+}
diff --git a/TestView/Plugins/Aspose.Words.Pdf2Word.dll b/TestView/Plugins/Aspose.Words.Pdf2Word.dll
new file mode 100644
index 0000000..72d08f0
Binary files /dev/null and b/TestView/Plugins/Aspose.Words.Pdf2Word.dll differ
diff --git a/TestView/Plugins/Aspose.Words.dll b/TestView/Plugins/Aspose.Words.dll
new file mode 100644
index 0000000..10946f7
Binary files /dev/null and b/TestView/Plugins/Aspose.Words.dll differ
diff --git a/TestView/Plugins/Azure.Core.dll b/TestView/Plugins/Azure.Core.dll
new file mode 100644
index 0000000..aa966ba
Binary files /dev/null and b/TestView/Plugins/Azure.Core.dll differ
diff --git a/TestView/Plugins/Azure.Identity.dll b/TestView/Plugins/Azure.Identity.dll
new file mode 100644
index 0000000..eaab465
Binary files /dev/null and b/TestView/Plugins/Azure.Identity.dll differ
diff --git a/TestView/Plugins/BusinessLogic.dll b/TestView/Plugins/BusinessLogic.dll
new file mode 100644
index 0000000..3f482f1
Binary files /dev/null and b/TestView/Plugins/BusinessLogic.dll differ
diff --git a/TestView/Plugins/ComponentsLibraryNet60.dll b/TestView/Plugins/ComponentsLibraryNet60.dll
new file mode 100644
index 0000000..9807306
Binary files /dev/null and b/TestView/Plugins/ComponentsLibraryNet60.dll differ
diff --git a/TestView/Plugins/Contracts.dll b/TestView/Plugins/Contracts.dll
new file mode 100644
index 0000000..cc94ced
Binary files /dev/null and b/TestView/Plugins/Contracts.dll differ
diff --git a/TestView/Plugins/CustomComponents.dll b/TestView/Plugins/CustomComponents.dll
new file mode 100644
index 0000000..0e60b34
Binary files /dev/null and b/TestView/Plugins/CustomComponents.dll differ
diff --git a/TestView/Plugins/DatabaseImplement.dll b/TestView/Plugins/DatabaseImplement.dll
new file mode 100644
index 0000000..a6b4428
Binary files /dev/null and b/TestView/Plugins/DatabaseImplement.dll differ
diff --git a/TestView/Plugins/DocumentFormat.OpenXml.dll b/TestView/Plugins/DocumentFormat.OpenXml.dll
new file mode 100644
index 0000000..ccdb81c
Binary files /dev/null and b/TestView/Plugins/DocumentFormat.OpenXml.dll differ
diff --git a/TestView/Plugins/Humanizer.dll b/TestView/Plugins/Humanizer.dll
new file mode 100644
index 0000000..c9a7ef8
Binary files /dev/null and b/TestView/Plugins/Humanizer.dll differ
diff --git a/TestView/Plugins/KOP_Labs.dll b/TestView/Plugins/KOP_Labs.dll
new file mode 100644
index 0000000..9db3a21
Binary files /dev/null and b/TestView/Plugins/KOP_Labs.dll differ
diff --git a/TestView/Plugins/Library.dll b/TestView/Plugins/Library.dll
new file mode 100644
index 0000000..f4a63da
Binary files /dev/null and b/TestView/Plugins/Library.dll differ
diff --git a/TestView/Plugins/Microsoft.Bcl.AsyncInterfaces.dll b/TestView/Plugins/Microsoft.Bcl.AsyncInterfaces.dll
new file mode 100644
index 0000000..a5b7ff9
Binary files /dev/null and b/TestView/Plugins/Microsoft.Bcl.AsyncInterfaces.dll differ
diff --git a/TestView/Plugins/Microsoft.Data.SqlClient.dll b/TestView/Plugins/Microsoft.Data.SqlClient.dll
new file mode 100644
index 0000000..57a41ac
Binary files /dev/null and b/TestView/Plugins/Microsoft.Data.SqlClient.dll differ
diff --git a/TestView/Plugins/Microsoft.EntityFrameworkCore.Abstractions.dll b/TestView/Plugins/Microsoft.EntityFrameworkCore.Abstractions.dll
new file mode 100644
index 0000000..eeab7ab
Binary files /dev/null and b/TestView/Plugins/Microsoft.EntityFrameworkCore.Abstractions.dll differ
diff --git a/TestView/Plugins/Microsoft.EntityFrameworkCore.Design.dll b/TestView/Plugins/Microsoft.EntityFrameworkCore.Design.dll
new file mode 100644
index 0000000..36f63a3
Binary files /dev/null and b/TestView/Plugins/Microsoft.EntityFrameworkCore.Design.dll differ
diff --git a/TestView/Plugins/Microsoft.EntityFrameworkCore.Relational.dll b/TestView/Plugins/Microsoft.EntityFrameworkCore.Relational.dll
new file mode 100644
index 0000000..80d8ec6
Binary files /dev/null and b/TestView/Plugins/Microsoft.EntityFrameworkCore.Relational.dll differ
diff --git a/TestView/Plugins/Microsoft.EntityFrameworkCore.SqlServer.dll b/TestView/Plugins/Microsoft.EntityFrameworkCore.SqlServer.dll
new file mode 100644
index 0000000..51077d2
Binary files /dev/null and b/TestView/Plugins/Microsoft.EntityFrameworkCore.SqlServer.dll differ
diff --git a/TestView/Plugins/Microsoft.EntityFrameworkCore.dll b/TestView/Plugins/Microsoft.EntityFrameworkCore.dll
new file mode 100644
index 0000000..7642ffd
Binary files /dev/null and b/TestView/Plugins/Microsoft.EntityFrameworkCore.dll differ
diff --git a/TestView/Plugins/Microsoft.Extensions.Caching.Abstractions.dll b/TestView/Plugins/Microsoft.Extensions.Caching.Abstractions.dll
new file mode 100644
index 0000000..be73869
Binary files /dev/null and b/TestView/Plugins/Microsoft.Extensions.Caching.Abstractions.dll differ
diff --git a/TestView/Plugins/Microsoft.Extensions.Caching.Memory.dll b/TestView/Plugins/Microsoft.Extensions.Caching.Memory.dll
new file mode 100644
index 0000000..561804a
Binary files /dev/null and b/TestView/Plugins/Microsoft.Extensions.Caching.Memory.dll differ
diff --git a/TestView/Plugins/Microsoft.Extensions.Configuration.Abstractions.dll b/TestView/Plugins/Microsoft.Extensions.Configuration.Abstractions.dll
new file mode 100644
index 0000000..3a12ec4
Binary files /dev/null and b/TestView/Plugins/Microsoft.Extensions.Configuration.Abstractions.dll differ
diff --git a/TestView/Plugins/Microsoft.Extensions.DependencyInjection.Abstractions.dll b/TestView/Plugins/Microsoft.Extensions.DependencyInjection.Abstractions.dll
new file mode 100644
index 0000000..11e5f2e
Binary files /dev/null and b/TestView/Plugins/Microsoft.Extensions.DependencyInjection.Abstractions.dll differ
diff --git a/TestView/Plugins/Microsoft.Extensions.DependencyInjection.dll b/TestView/Plugins/Microsoft.Extensions.DependencyInjection.dll
new file mode 100644
index 0000000..2c64257
Binary files /dev/null and b/TestView/Plugins/Microsoft.Extensions.DependencyInjection.dll differ
diff --git a/TestView/Plugins/Microsoft.Extensions.DependencyModel.dll b/TestView/Plugins/Microsoft.Extensions.DependencyModel.dll
new file mode 100644
index 0000000..072af1f
Binary files /dev/null and b/TestView/Plugins/Microsoft.Extensions.DependencyModel.dll differ
diff --git a/TestView/Plugins/Microsoft.Extensions.Logging.Abstractions.dll b/TestView/Plugins/Microsoft.Extensions.Logging.Abstractions.dll
new file mode 100644
index 0000000..03edd8f
Binary files /dev/null and b/TestView/Plugins/Microsoft.Extensions.Logging.Abstractions.dll differ
diff --git a/TestView/Plugins/Microsoft.Extensions.Logging.dll b/TestView/Plugins/Microsoft.Extensions.Logging.dll
new file mode 100644
index 0000000..c53f5d2
Binary files /dev/null and b/TestView/Plugins/Microsoft.Extensions.Logging.dll differ
diff --git a/TestView/Plugins/Microsoft.Extensions.Options.dll b/TestView/Plugins/Microsoft.Extensions.Options.dll
new file mode 100644
index 0000000..3987d66
Binary files /dev/null and b/TestView/Plugins/Microsoft.Extensions.Options.dll differ
diff --git a/TestView/Plugins/Microsoft.Extensions.Primitives.dll b/TestView/Plugins/Microsoft.Extensions.Primitives.dll
new file mode 100644
index 0000000..081abea
Binary files /dev/null and b/TestView/Plugins/Microsoft.Extensions.Primitives.dll differ
diff --git a/TestView/Plugins/Microsoft.Identity.Client.Extensions.Msal.dll b/TestView/Plugins/Microsoft.Identity.Client.Extensions.Msal.dll
new file mode 100644
index 0000000..04be9fc
Binary files /dev/null and b/TestView/Plugins/Microsoft.Identity.Client.Extensions.Msal.dll differ
diff --git a/TestView/Plugins/Microsoft.Identity.Client.dll b/TestView/Plugins/Microsoft.Identity.Client.dll
new file mode 100644
index 0000000..112dd74
Binary files /dev/null and b/TestView/Plugins/Microsoft.Identity.Client.dll differ
diff --git a/TestView/Plugins/Microsoft.IdentityModel.Abstractions.dll b/TestView/Plugins/Microsoft.IdentityModel.Abstractions.dll
new file mode 100644
index 0000000..6a0300a
Binary files /dev/null and b/TestView/Plugins/Microsoft.IdentityModel.Abstractions.dll differ
diff --git a/TestView/Plugins/Microsoft.IdentityModel.JsonWebTokens.dll b/TestView/Plugins/Microsoft.IdentityModel.JsonWebTokens.dll
new file mode 100644
index 0000000..80565a9
Binary files /dev/null and b/TestView/Plugins/Microsoft.IdentityModel.JsonWebTokens.dll differ
diff --git a/TestView/Plugins/Microsoft.IdentityModel.Logging.dll b/TestView/Plugins/Microsoft.IdentityModel.Logging.dll
new file mode 100644
index 0000000..c6427c7
Binary files /dev/null and b/TestView/Plugins/Microsoft.IdentityModel.Logging.dll differ
diff --git a/TestView/Plugins/Microsoft.IdentityModel.Protocols.OpenIdConnect.dll b/TestView/Plugins/Microsoft.IdentityModel.Protocols.OpenIdConnect.dll
new file mode 100644
index 0000000..73cb93e
Binary files /dev/null and b/TestView/Plugins/Microsoft.IdentityModel.Protocols.OpenIdConnect.dll differ
diff --git a/TestView/Plugins/Microsoft.IdentityModel.Protocols.dll b/TestView/Plugins/Microsoft.IdentityModel.Protocols.dll
new file mode 100644
index 0000000..df4b6d0
Binary files /dev/null and b/TestView/Plugins/Microsoft.IdentityModel.Protocols.dll differ
diff --git a/TestView/Plugins/Microsoft.IdentityModel.Tokens.dll b/TestView/Plugins/Microsoft.IdentityModel.Tokens.dll
new file mode 100644
index 0000000..9d9fcdd
Binary files /dev/null and b/TestView/Plugins/Microsoft.IdentityModel.Tokens.dll differ
diff --git a/TestView/Plugins/Microsoft.Office.Interop.Excel.dll b/TestView/Plugins/Microsoft.Office.Interop.Excel.dll
new file mode 100644
index 0000000..4ab081c
Binary files /dev/null and b/TestView/Plugins/Microsoft.Office.Interop.Excel.dll differ
diff --git a/TestView/Plugins/Microsoft.SqlServer.Server.dll b/TestView/Plugins/Microsoft.SqlServer.Server.dll
new file mode 100644
index 0000000..ddeaa86
Binary files /dev/null and b/TestView/Plugins/Microsoft.SqlServer.Server.dll differ
diff --git a/TestView/Plugins/Microsoft.Vbe.Interop.dll b/TestView/Plugins/Microsoft.Vbe.Interop.dll
new file mode 100644
index 0000000..d8c4b64
Binary files /dev/null and b/TestView/Plugins/Microsoft.Vbe.Interop.dll differ
diff --git a/TestView/Plugins/MigraDoc.DocumentObjectModel.dll b/TestView/Plugins/MigraDoc.DocumentObjectModel.dll
new file mode 100644
index 0000000..2bf457c
Binary files /dev/null and b/TestView/Plugins/MigraDoc.DocumentObjectModel.dll differ
diff --git a/TestView/Plugins/MigraDoc.Rendering.dll b/TestView/Plugins/MigraDoc.Rendering.dll
new file mode 100644
index 0000000..9c14fbe
Binary files /dev/null and b/TestView/Plugins/MigraDoc.Rendering.dll differ
diff --git a/TestView/Plugins/MigraDoc.RtfRendering.dll b/TestView/Plugins/MigraDoc.RtfRendering.dll
new file mode 100644
index 0000000..4b49184
Binary files /dev/null and b/TestView/Plugins/MigraDoc.RtfRendering.dll differ
diff --git a/TestView/Plugins/Mono.TextTemplating.dll b/TestView/Plugins/Mono.TextTemplating.dll
new file mode 100644
index 0000000..d5a4b3c
Binary files /dev/null and b/TestView/Plugins/Mono.TextTemplating.dll differ
diff --git a/TestView/Plugins/Office.dll b/TestView/Plugins/Office.dll
new file mode 100644
index 0000000..447c580
Binary files /dev/null and b/TestView/Plugins/Office.dll differ
diff --git a/TestView/Plugins/PdfSharp.Charting.dll b/TestView/Plugins/PdfSharp.Charting.dll
new file mode 100644
index 0000000..f648e4a
Binary files /dev/null and b/TestView/Plugins/PdfSharp.Charting.dll differ
diff --git a/TestView/Plugins/PdfSharp.dll b/TestView/Plugins/PdfSharp.dll
new file mode 100644
index 0000000..aa564e1
Binary files /dev/null and b/TestView/Plugins/PdfSharp.dll differ
diff --git a/TestView/Plugins/PluginsConventionLibrary.dll b/TestView/Plugins/PluginsConventionLibrary.dll
new file mode 100644
index 0000000..236f6b4
Binary files /dev/null and b/TestView/Plugins/PluginsConventionLibrary.dll differ
diff --git a/TestView/Plugins/SkiaSharp.dll b/TestView/Plugins/SkiaSharp.dll
new file mode 100644
index 0000000..518648c
Binary files /dev/null and b/TestView/Plugins/SkiaSharp.dll differ
diff --git a/TestView/Plugins/System.IdentityModel.Tokens.Jwt.dll b/TestView/Plugins/System.IdentityModel.Tokens.Jwt.dll
new file mode 100644
index 0000000..131456c
Binary files /dev/null and b/TestView/Plugins/System.IdentityModel.Tokens.Jwt.dll differ
diff --git a/TestView/Plugins/System.Memory.Data.dll b/TestView/Plugins/System.Memory.Data.dll
new file mode 100644
index 0000000..6f2a3e0
Binary files /dev/null and b/TestView/Plugins/System.Memory.Data.dll differ
diff --git a/TestView/Plugins/System.Runtime.Caching.dll b/TestView/Plugins/System.Runtime.Caching.dll
new file mode 100644
index 0000000..6a6eb85
Binary files /dev/null and b/TestView/Plugins/System.Runtime.Caching.dll differ
diff --git a/TestView/Plugins/System.Text.Encoding.CodePages.dll b/TestView/Plugins/System.Text.Encoding.CodePages.dll
new file mode 100644
index 0000000..e539c5e
Binary files /dev/null and b/TestView/Plugins/System.Text.Encoding.CodePages.dll differ
diff --git a/TestView/Plugins/System.Text.Encodings.Web.dll b/TestView/Plugins/System.Text.Encodings.Web.dll
new file mode 100644
index 0000000..13a219a
Binary files /dev/null and b/TestView/Plugins/System.Text.Encodings.Web.dll differ
diff --git a/TestView/Plugins/System.Text.Json.dll b/TestView/Plugins/System.Text.Json.dll
new file mode 100644
index 0000000..2078226
Binary files /dev/null and b/TestView/Plugins/System.Text.Json.dll differ
diff --git a/TestView/Plugins/Unity.Abstractions.dll b/TestView/Plugins/Unity.Abstractions.dll
new file mode 100644
index 0000000..7584a48
Binary files /dev/null and b/TestView/Plugins/Unity.Abstractions.dll differ
diff --git a/TestView/Plugins/Unity.Container.dll b/TestView/Plugins/Unity.Container.dll
new file mode 100644
index 0000000..9602753
Binary files /dev/null and b/TestView/Plugins/Unity.Container.dll differ
diff --git a/TestView/Plugins/ViewComponents.dll b/TestView/Plugins/ViewComponents.dll
new file mode 100644
index 0000000..acfc5bc
Binary files /dev/null and b/TestView/Plugins/ViewComponents.dll differ
diff --git a/TestView/TestView.sln b/TestView/TestView.sln
index 3f641f1..9600f20 100644
--- a/TestView/TestView.sln
+++ b/TestView/TestView.sln
@@ -7,13 +7,17 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TestView", "TestView.csproj
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ViewComponents", "..\ViewComponents\ViewComponents.csproj", "{45A652EE-B79B-4F5B-BB2A-2A51F5BEA2F1}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Contracts", "..\Contracts\Contracts.csproj", "{088EE607-4CC2-4F8D-8571-BA09A4A6A4B5}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Contracts", "..\Contracts\Contracts.csproj", "{088EE607-4CC2-4F8D-8571-BA09A4A6A4B5}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BusinessLogic", "..\BusinessLogic\BusinessLogic.csproj", "{84504BF2-6F50-435D-B6D4-6A06D48331A0}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BusinessLogic", "..\BusinessLogic\BusinessLogic.csproj", "{84504BF2-6F50-435D-B6D4-6A06D48331A0}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DatabaseImplement", "..\DatabaseImplement\DatabaseImplement.csproj", "{D9EA1B1E-A8A9-4C13-BFC9-579832B878BF}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DatabaseImplement", "..\DatabaseImplement\DatabaseImplement.csproj", "{D9EA1B1E-A8A9-4C13-BFC9-579832B878BF}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Library", "..\Library\Library.csproj", "{B74E170A-9AB6-4A1A-9125-42B479DBFBF4}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Library", "..\Library\Library.csproj", "{B74E170A-9AB6-4A1A-9125-42B479DBFBF4}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PluginsConventionLibrary", "..\PluginsConventionLibrary\PluginsConventionLibrary.csproj", "{C126241E-8DE5-46D8-9E23-B8C37FD50237}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LibraryByPlugins", "..\LibraryByPlugins\LibraryByPlugins.csproj", "{D109128A-54BD-4B11-AD6A-907B5C9C8DE2}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -45,6 +49,14 @@ Global
{B74E170A-9AB6-4A1A-9125-42B479DBFBF4}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B74E170A-9AB6-4A1A-9125-42B479DBFBF4}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B74E170A-9AB6-4A1A-9125-42B479DBFBF4}.Release|Any CPU.Build.0 = Release|Any CPU
+ {C126241E-8DE5-46D8-9E23-B8C37FD50237}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {C126241E-8DE5-46D8-9E23-B8C37FD50237}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {C126241E-8DE5-46D8-9E23-B8C37FD50237}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {C126241E-8DE5-46D8-9E23-B8C37FD50237}.Release|Any CPU.Build.0 = Release|Any CPU
+ {D109128A-54BD-4B11-AD6A-907B5C9C8DE2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {D109128A-54BD-4B11-AD6A-907B5C9C8DE2}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {D109128A-54BD-4B11-AD6A-907B5C9C8DE2}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {D109128A-54BD-4B11-AD6A-907B5C9C8DE2}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE