Compare commits
2 Commits
e9733d991b
...
8c80db4df3
Author | SHA1 | Date | |
---|---|---|---|
|
8c80db4df3 | ||
|
e073e19639 |
2
VisualComponentsForm/Plugins/.gitignore
vendored
Normal file
2
VisualComponentsForm/Plugins/.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
*
|
||||||
|
!.gitignore
|
@ -1,9 +0,0 @@
|
|||||||
<Project Sdk="Microsoft.NET.Sdk">
|
|
||||||
|
|
||||||
<PropertyGroup>
|
|
||||||
<TargetFramework>net7.0</TargetFramework>
|
|
||||||
<ImplicitUsings>enable</ImplicitUsings>
|
|
||||||
<Nullable>enable</Nullable>
|
|
||||||
</PropertyGroup>
|
|
||||||
|
|
||||||
</Project>
|
|
@ -18,9 +18,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DatabaseImplement", "Databa
|
|||||||
EndProject
|
EndProject
|
||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PluginsLib", "PluginsLib\PluginsLib.csproj", "{BB23AF9D-1359-4E2B-9FE4-BA971B3D6F83}"
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PluginsLib", "PluginsLib\PluginsLib.csproj", "{BB23AF9D-1359-4E2B-9FE4-BA971B3D6F83}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PluginsConventionLibraryNet60", "PluginsConventionLibraryNet60\PluginsConventionLibraryNet60.csproj", "{F6851562-4D46-4348-9FFF-8618390C91BC}"
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PluginsConventionLibraryNet60", "PluginsConventionLibraryNet60\PluginsConventionLibraryNet60.csproj", "{F6851562-4D46-4348-9FFF-8618390C91BC}"
|
||||||
EndProject
|
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Plugins", "Plugins\Plugins.csproj", "{F2FCBB98-CFEC-4CBD-B063-6A3E8409E0F2}"
|
|
||||||
EndProject
|
EndProject
|
||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
@ -56,10 +54,6 @@ Global
|
|||||||
{F6851562-4D46-4348-9FFF-8618390C91BC}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{F6851562-4D46-4348-9FFF-8618390C91BC}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{F6851562-4D46-4348-9FFF-8618390C91BC}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{F6851562-4D46-4348-9FFF-8618390C91BC}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{F6851562-4D46-4348-9FFF-8618390C91BC}.Release|Any CPU.Build.0 = Release|Any CPU
|
{F6851562-4D46-4348-9FFF-8618390C91BC}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{F2FCBB98-CFEC-4CBD-B063-6A3E8409E0F2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
|
||||||
{F2FCBB98-CFEC-4CBD-B063-6A3E8409E0F2}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
|
||||||
{F2FCBB98-CFEC-4CBD-B063-6A3E8409E0F2}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
|
||||||
{F2FCBB98-CFEC-4CBD-B063-6A3E8409E0F2}.Release|Any CPU.Build.0 = Release|Any CPU
|
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
HideSolutionNode = FALSE
|
HideSolutionNode = FALSE
|
||||||
|
@ -1,7 +1,10 @@
|
|||||||
using Contracts.ViewModel;
|
using Contracts.BindingModel;
|
||||||
|
using Contracts.StorageContracts;
|
||||||
|
using Contracts.ViewModel;
|
||||||
using DatabaseImplement.Implements;
|
using DatabaseImplement.Implements;
|
||||||
using DataModels.Models;
|
using DataModels.Models;
|
||||||
using DocumentFormat.OpenXml.EMMA;
|
using DocumentFormat.OpenXml.EMMA;
|
||||||
|
using IronPdf;
|
||||||
using NonVisualComponents;
|
using NonVisualComponents;
|
||||||
using NonVisualComponents.Classes;
|
using NonVisualComponents.Classes;
|
||||||
using NonVisualComponents.Enums;
|
using NonVisualComponents.Enums;
|
||||||
@ -12,17 +15,20 @@ using System.Collections.Generic;
|
|||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
using VisualComponentsLib.Components;
|
||||||
using VisualComponentsLib.Components.SupportClasses;
|
using VisualComponentsLib.Components.SupportClasses;
|
||||||
using VisualComponentsLib.CustomListBox;
|
using VisualComponentsLib.CustomListBox;
|
||||||
|
using static System.Windows.Forms.VisualStyles.VisualStyleElement.Window;
|
||||||
|
|
||||||
namespace VisualComponentsForm
|
namespace VisualComponentsForm
|
||||||
{
|
{
|
||||||
public class PluginsConvention : IPluginsConvention
|
public class PluginsConvention : IPluginsConvention
|
||||||
{
|
{
|
||||||
private readonly LabWorkStorage _labWorkStorage;
|
private readonly LabWorkStorage _labWorkStorage;
|
||||||
private readonly IDiscipline _discipline;
|
private readonly IDisciplineStorage _discipline;
|
||||||
private readonly MyListBox listBox;
|
private readonly MyListBox listBox;
|
||||||
private SimpleTable wordTable;
|
private ComponentWord wordTable;
|
||||||
private PdfTable pdfTable;
|
private PdfTable pdfTable;
|
||||||
private ExcelChartInfo excelTable;
|
private ExcelChartInfo excelTable;
|
||||||
|
|
||||||
@ -32,7 +38,7 @@ namespace VisualComponentsForm
|
|||||||
{
|
{
|
||||||
_labWorkStorage = new LabWorkStorage();
|
_labWorkStorage = new LabWorkStorage();
|
||||||
_discipline = new DisciplineStorage();
|
_discipline = new DisciplineStorage();
|
||||||
wordTable = new SimpleTable();
|
wordTable = new ComponentWord();
|
||||||
pdfTable = new PdfTable();
|
pdfTable = new PdfTable();
|
||||||
//excelTable = new ExcelChartInfo();
|
//excelTable = new ExcelChartInfo();
|
||||||
listBox = new MyListBox();
|
listBox = new MyListBox();
|
||||||
@ -47,7 +53,7 @@ namespace VisualComponentsForm
|
|||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
int Id = listBox.GetSelectedRecord<LabWorkViewModel>()!.Id;
|
int Id = GetSelectedId();
|
||||||
byte[] bytes = new byte[16];
|
byte[] bytes = new byte[16];
|
||||||
|
|
||||||
BitConverter.GetBytes(Id).CopyTo(bytes, 0);
|
BitConverter.GetBytes(Id).CopyTo(bytes, 0);
|
||||||
@ -58,6 +64,132 @@ namespace VisualComponentsForm
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//запуск основной формы из лабы
|
||||||
|
public Form GetForm(PluginsConventionElement element)
|
||||||
|
{
|
||||||
|
if (element == null)
|
||||||
|
{
|
||||||
|
return new FormMain(_labWorkStorage, _discipline);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
FormMain form = new FormMain(_labWorkStorage, _discipline);
|
||||||
|
|
||||||
|
return form;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//получаем список дисциплин (мои перечисления по заданию)
|
||||||
|
public Form GetThesaurus()
|
||||||
|
{
|
||||||
|
return new FormCreateDiscipline(_discipline);
|
||||||
|
}
|
||||||
|
|
||||||
|
//создание word табилцы
|
||||||
|
public bool CreateSimpleDocument(PluginsConventionSaveDocument saveDocument)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
//сразу группируем списки по дисциплинам
|
||||||
|
var list = _labWorkStorage.GetFullList().OrderBy(l => l.Discipline).ToList();
|
||||||
|
|
||||||
|
var disciplines = _discipline.GetFullList().OrderBy(d => d.Name).ToList();
|
||||||
|
|
||||||
|
List<string[,]> totalList = new();
|
||||||
|
|
||||||
|
List<LabWorkViewModel> supportList = new();
|
||||||
|
|
||||||
|
foreach (var discipline in disciplines)
|
||||||
|
{
|
||||||
|
|
||||||
|
foreach (var elem in list)
|
||||||
|
{
|
||||||
|
if (elem.Discipline == discipline.Name)
|
||||||
|
{
|
||||||
|
supportList.Add(elem);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
supportList = supportList.OrderBy(sl => sl.Theme).ToList();
|
||||||
|
|
||||||
|
totalList.Add(new string[,] { { "Дисциплина", discipline.Name } });
|
||||||
|
|
||||||
|
foreach (var elem in supportList)
|
||||||
|
{
|
||||||
|
var listFCs = elem.FCs.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries).ToList();
|
||||||
|
|
||||||
|
string[,] newArray = { { elem.Theme, listFCs[listFCs.Count - 1] } };
|
||||||
|
|
||||||
|
totalList.Add(newArray);
|
||||||
|
}
|
||||||
|
|
||||||
|
supportList.Clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
SimpleTable table = new(saveDocument.FileName, "Первое задание", totalList);
|
||||||
|
|
||||||
|
wordTable.CreateDoc(table);
|
||||||
|
|
||||||
|
MessageBox.Show("Выполнено", "Успех", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//создание pdf таблицы
|
||||||
|
public bool CreateTableDocument(PluginsConventionSaveDocument saveDocument)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
//сразу группируем списки по дисциплинам
|
||||||
|
var list = _labWorkStorage.GetFullList().OrderBy(l => l.Discipline).ToList();
|
||||||
|
|
||||||
|
var disciplines = _discipline.GetFullList().OrderBy(d => d.Name).ToList();
|
||||||
|
|
||||||
|
List<string[,]> totalList = new();
|
||||||
|
|
||||||
|
List<LabWorkViewModel> supportList = new();
|
||||||
|
|
||||||
|
string[] headers = new[]
|
||||||
|
{
|
||||||
|
"Id", "Theme", "FCs",
|
||||||
|
"Discipline", "Questions"
|
||||||
|
};
|
||||||
|
|
||||||
|
Dictionary<int, (String, int)> merge = new() { [3] = ("Описание", 2) };
|
||||||
|
|
||||||
|
PdfTable pdfTable = new();
|
||||||
|
|
||||||
|
CreatePDF(new TableData<LabWorkViewModel>
|
||||||
|
{
|
||||||
|
FilePath = saveDocument.FileName,
|
||||||
|
Title = "Второе задание",
|
||||||
|
Merge = merge,
|
||||||
|
Headers = headers,
|
||||||
|
Data = list.ToArray(),
|
||||||
|
RowHeight = new double[] { 50, 50, 50, 50, 50, 50, 50, 50, 50, 50 }
|
||||||
|
});
|
||||||
|
|
||||||
|
MessageBox.Show("Выполнено", "Успех", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//создание диаграммы
|
||||||
public bool CreateChartDocument(PluginsConventionSaveDocument saveDocument)
|
public bool CreateChartDocument(PluginsConventionSaveDocument saveDocument)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
@ -124,160 +256,89 @@ namespace VisualComponentsForm
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool CreateSimpleDocument(PluginsConventionSaveDocument saveDocument)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
var view = new OrderSearchModel
|
|
||||||
{
|
|
||||||
TotalPrice = null
|
|
||||||
};
|
|
||||||
|
|
||||||
var list = _labWorkStorage.GetFilteredList(view);
|
|
||||||
|
|
||||||
string[] data = new string[list.Count];
|
|
||||||
string curStr = "";
|
|
||||||
|
|
||||||
for (int i = 0; i < list.Count; i++)
|
|
||||||
{
|
|
||||||
curStr = "ФИО Заказчика: " + list[i].UserInfo + ". Информация о товарах: " + list[i].ProductsInfo;
|
|
||||||
data[i] = curStr;
|
|
||||||
}
|
|
||||||
|
|
||||||
WordData wd = new WordData
|
|
||||||
{
|
|
||||||
filePath = saveDocument.FileName,
|
|
||||||
title = System.IO.Path.GetFileName(saveDocument.FileName),
|
|
||||||
data = data
|
|
||||||
};
|
|
||||||
|
|
||||||
wordTable.CreateFileWithBigText(wd);
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool CreateTableDocument(PluginsConventionSaveDocument saveDocument)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
var list = _labWorkStorage.GetFullList();
|
|
||||||
|
|
||||||
var ColumnHeaders = new List<string>() {
|
|
||||||
"Идентификатор",
|
|
||||||
"ФИО заказчика",
|
|
||||||
"Статус заказа",
|
|
||||||
"Сумма"
|
|
||||||
};
|
|
||||||
|
|
||||||
var listData = new List<OrderTableViewModel>();
|
|
||||||
|
|
||||||
int id = 0;
|
|
||||||
string UserInfo = "";
|
|
||||||
string TotalPrice = "";
|
|
||||||
string Status = "";
|
|
||||||
|
|
||||||
for (int i = 0; i < list.Count; i++)
|
|
||||||
{
|
|
||||||
id = list[i].Id;
|
|
||||||
UserInfo = list[i].UserInfo;
|
|
||||||
|
|
||||||
if (list[i].TotalPrice == null)
|
|
||||||
{
|
|
||||||
TotalPrice = "Оплачено скидками";
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
TotalPrice = list[i].TotalPrice.ToString()!;
|
|
||||||
}
|
|
||||||
|
|
||||||
Status = list[i].Status;
|
|
||||||
|
|
||||||
var data = new OrderTableViewModel()
|
|
||||||
{
|
|
||||||
Id = id,
|
|
||||||
UserInfo = UserInfo,
|
|
||||||
TotalPrice = TotalPrice,
|
|
||||||
Status = Status
|
|
||||||
};
|
|
||||||
|
|
||||||
listData.Add(data);
|
|
||||||
}
|
|
||||||
|
|
||||||
var props = new List<string>() { "Id", "UserInfo", "Status", "TotalPrice" };
|
|
||||||
|
|
||||||
int[] rowHeight = new int[listData.Count + 1];
|
|
||||||
|
|
||||||
for (int i = 0; i < rowHeight.Length; i++)
|
|
||||||
{
|
|
||||||
rowHeight[i] = 20;
|
|
||||||
}
|
|
||||||
|
|
||||||
pdfTable.SaveToPdfFile(new PdfTableInfo<OrderTableViewModel>
|
|
||||||
{
|
|
||||||
FilePath = saveDocument.FileName,
|
|
||||||
DocumentTitle = "Заголовок",
|
|
||||||
TableData = listData,
|
|
||||||
ColumnWidths = new int[] { 10, 10, 10, 30 },
|
|
||||||
RowHeight = rowHeight,
|
|
||||||
ColumnHeaders = ColumnHeaders,
|
|
||||||
Properties = props
|
|
||||||
});
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool DeleteElement(PluginsConventionElement element)
|
public bool DeleteElement(PluginsConventionElement element)
|
||||||
{
|
{
|
||||||
_labWorkStorage.Delete(new(element.Id.GetHashCode()));
|
_labWorkStorage.Delete(new LabWorkBindingModel
|
||||||
|
{
|
||||||
|
Id = element.Id.GetHashCode()
|
||||||
|
});
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Form GetForm(PluginsConventionElement element)
|
|
||||||
{
|
|
||||||
if (element == null)
|
|
||||||
{
|
|
||||||
return new FormMain(_labWorkStorage, _discipline);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
FormMain form = new FormMain(_labWorkStorage, _discipline);
|
|
||||||
|
|
||||||
return form;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public Form GetThesaurus()
|
|
||||||
{
|
|
||||||
return new FormStatusDirectory(_discipline);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void ReloadData()
|
public void ReloadData()
|
||||||
{
|
{
|
||||||
var labWorks = _labWorkStorage.GetFullList();
|
var labWorks = _labWorkStorage.GetFullList();
|
||||||
|
|
||||||
myListBox.ClearAll();
|
listBox.ClearAll();
|
||||||
|
|
||||||
foreach (var labWork in labWorks)
|
foreach (var labWork in labWorks)
|
||||||
{
|
{
|
||||||
myListBox.AddItem(labWork.Discipline + " | " + labWork.Id.ToString() + " | "
|
listBox.AddItem(labWork.Discipline + " | " + labWork.Id.ToString() + " | "
|
||||||
+ labWork.Theme + " | " + labWork.Questions);
|
+ labWork.Theme + " | " + labWork.Questions);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//иначе для pdf-ки никак :(((
|
||||||
|
public void CreatePDF<T>(TableData<T> data)
|
||||||
|
{
|
||||||
|
|
||||||
|
ChromePdfRenderer renderer = new ChromePdfRenderer();
|
||||||
|
StringBuilder htmlContainer = new StringBuilder();
|
||||||
|
|
||||||
|
htmlContainer.AppendLine("<link href=\"https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css\" rel=\"stylesheet\" integrity=\"sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN\" crossorigin=\"anonymous\">");
|
||||||
|
|
||||||
|
htmlContainer.AppendLine($"<h1>{data.Title}</h1>");
|
||||||
|
|
||||||
|
htmlContainer.AppendLine("<table class=\"table\">");
|
||||||
|
|
||||||
|
int counter = 0;
|
||||||
|
for (int i = 0; i < data.Headers.Length; i++)
|
||||||
|
{
|
||||||
|
htmlContainer.Append($"<tr style=\"height: {data.RowHeight[i]}px\">\r\n");
|
||||||
|
if (data.Merge.Keys.Contains(i))
|
||||||
|
{
|
||||||
|
htmlContainer.Append($"<th rowspan=\"{data.Merge[i].Item2}\">{data.Merge[i].Item1}</th>\r\n");
|
||||||
|
htmlContainer.Append($"<th>{data.Headers[i]}</th>\r\n");
|
||||||
|
counter = data.Merge[i].Item2 - 1;
|
||||||
|
}
|
||||||
|
else if (counter != 0)
|
||||||
|
{
|
||||||
|
htmlContainer.Append($"<th>{data.Headers[i]}</th>\r\n");
|
||||||
|
counter--;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
htmlContainer.Append($"<th colspan=\"2\">{data.Headers[i]}</th>\r\n");
|
||||||
|
}
|
||||||
|
foreach (var elem in data.Data)
|
||||||
|
{
|
||||||
|
Type type = typeof(T);
|
||||||
|
string value = type
|
||||||
|
.GetProperty(data.Headers[i])!
|
||||||
|
.GetValue(elem, null)!.ToString()!;
|
||||||
|
|
||||||
|
htmlContainer.Append($"<td>{value}</th>\r\n");
|
||||||
|
}
|
||||||
|
htmlContainer.Append("</tr>\r\n");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
htmlContainer.AppendLine("</table>");
|
||||||
|
|
||||||
|
PdfDocument pdf = renderer.RenderHtmlAsPdf(htmlContainer.ToString());
|
||||||
|
Console.WriteLine(htmlContainer.ToString());
|
||||||
|
pdf.SaveAs(data.FilePath);
|
||||||
|
}
|
||||||
|
|
||||||
|
//получение Id объекта в выделенной строке
|
||||||
|
public int GetSelectedId()
|
||||||
|
{
|
||||||
|
char dilimiterSimbol = '|';
|
||||||
|
|
||||||
|
var _id = listBox.SelectedString.SkipWhile(z => z != dilimiterSimbol).Skip(1).ToList()[1];
|
||||||
|
|
||||||
|
return int.Parse(_id.ToString());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -28,4 +28,8 @@
|
|||||||
<ProjectReference Include="..\PluginsLib\PluginsLib.csproj" />
|
<ProjectReference Include="..\PluginsLib\PluginsLib.csproj" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
<Target Name="PostBuild" AfterTargets="PostBuildEvent">
|
||||||
|
<Exec Command="copy /Y "$(TargetDir)*.dll" "$(SolutionDir)Plugins\*.dll"" />
|
||||||
|
</Target>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
Loading…
Reference in New Issue
Block a user