diff --git a/FileSplitter/FileSplitter.csproj b/FileSplitter/FileSplitter.csproj
new file mode 100644
index 0000000..e052a83
--- /dev/null
+++ b/FileSplitter/FileSplitter.csproj
@@ -0,0 +1,12 @@
+
+
+
+ Exe
+ net7.0
+ enable
+ enable
+ FileSplitter.Console
+ FileSplitter
+
+
+
diff --git a/FileSplitter/Program.cs b/FileSplitter/Program.cs
new file mode 100644
index 0000000..f83987b
--- /dev/null
+++ b/FileSplitter/Program.cs
@@ -0,0 +1,66 @@
+//Приветственное сообщение
+Console.WriteLine("ANB Software Делитель файлов");
+Console.WriteLine("в. 2023.04.08");
+
+//Вывожу помощь
+Help();
+
+//Команда
+string command;
+
+//Начинаю цикл
+do
+{
+ //Запрос команды
+ Console.WriteLine("Введите команду:");
+
+ //Считывание команды
+ command = (Console.ReadLine() ?? "").ToLower();
+
+ //Выбор действия
+ switch (command)
+ {
+ ////Если команда "Шифровка"
+ //case "crypt" or "c":
+ // //Запускаю сценарий шифровки
+ // await CryptAsync();
+ // break;
+ ////Если команда "Дешифровка"
+ //case "delete" or "d":
+ // //Запускаю сценарий дешифровки
+ // await DecryptAsync();
+ // break;
+ ////Если команда "Установочные файлы"
+ //case "ifiles" or "i":
+ // //Запускаю сценарий создания установочных файлов
+ // await CreateInstallFilesInfoAsync();
+ // break;
+ ////Если команда "Помощь"
+ //case "help" or "h":
+ // //Запускаю сценарий помощи
+ // Help();
+ // break;
+ //Если что-то другое
+ default:
+ //Вывожу сообщение об ошибке, если команда не "Выход"
+ if (command is not ("exit" or "e"))
+ Console.WriteLine("Команда не опознана! Повторите попытку ещё раз, введите [h]elp для помощи или введите [e]xit для выхода...");
+ break;
+ }
+} while (command is not ("exit" or "e"));
+
+static void SplitFile(string path)
+{
+
+}
+
+//Информация о работе с программой
+static void Help ()
+{
+ //Публикую сообщение о работе с программой
+ Console.WriteLine("Информация о работе с программой:\n\t" +
+ "[c]rypt - шифровка архива\n\t" +
+ "[d]ecrypt - дешифровка архива\n\t" +
+ "[i]files - создание списка установочных файлов\n\t" +
+ "[e]xit - Выход из программы\n\t[h]elp - Повторный вывод этого сообщения.");
+}
\ No newline at end of file
diff --git a/FileSplitterProj.sln b/FileSplitterProj.sln
new file mode 100644
index 0000000..af78935
--- /dev/null
+++ b/FileSplitterProj.sln
@@ -0,0 +1,31 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+VisualStudioVersion = 17.5.33516.290
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FileSplitter", "FileSplitter\FileSplitter.csproj", "{1FD6DA70-8D93-49A3-AAA3-EFB909AD937F}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FileSplitterShared", "FileSplitterShared\FileSplitterShared.csproj", "{0D7F015B-7E38-4384-A456-3BE07DFE2724}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {1FD6DA70-8D93-49A3-AAA3-EFB909AD937F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {1FD6DA70-8D93-49A3-AAA3-EFB909AD937F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {1FD6DA70-8D93-49A3-AAA3-EFB909AD937F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {1FD6DA70-8D93-49A3-AAA3-EFB909AD937F}.Release|Any CPU.Build.0 = Release|Any CPU
+ {0D7F015B-7E38-4384-A456-3BE07DFE2724}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {0D7F015B-7E38-4384-A456-3BE07DFE2724}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {0D7F015B-7E38-4384-A456-3BE07DFE2724}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {0D7F015B-7E38-4384-A456-3BE07DFE2724}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {66369161-B8DF-4F9E-91A7-5B1D5B111763}
+ EndGlobalSection
+EndGlobal
diff --git a/FileSplitterShared/Classes/FileSplitInfo.cs b/FileSplitterShared/Classes/FileSplitInfo.cs
new file mode 100644
index 0000000..1a9d90b
--- /dev/null
+++ b/FileSplitterShared/Classes/FileSplitInfo.cs
@@ -0,0 +1,24 @@
+using FileSplitter.Shared.Interfaces;
+
+namespace FileSplitter.Shared.Classes;
+
+///
+/// Информация о разбиении
+///
+public class FileSplitInfo
+{
+ ///
+ /// Версия программы, необходимая для сборки файла
+ ///
+ public string? FileSplitterVersion { get; set; }
+
+ ///
+ /// Информация о собираемом файле
+ ///
+ public ITargetFileInfo? TargetFile { get; set; }
+
+ ///
+ /// Информация о частях файла
+ ///
+ public List? SplitFiles { get; set; }
+}
\ No newline at end of file
diff --git a/FileSplitterShared/Classes/SplitFile.cs b/FileSplitterShared/Classes/SplitFile.cs
new file mode 100644
index 0000000..fa68456
--- /dev/null
+++ b/FileSplitterShared/Classes/SplitFile.cs
@@ -0,0 +1,29 @@
+using FileSplitter.Shared.Interfaces;
+
+namespace FileSplitter.Shared.Classes;
+
+///
+/// Разделенный файл
+///
+public class SplitFile: ISplitFile
+{
+ ///
+ /// Порядок части
+ ///
+ public byte Num { get; set; }
+
+ ///
+ /// Размер части
+ ///
+ public long Size { get; set; }
+
+ ///
+ /// Смещение начала части от начала итогового файла
+ ///
+ public long Offset { get; set; }
+
+ ///
+ /// md5-сумма части для проверки
+ ///
+ public byte[]? Hash { get; set; }
+}
\ No newline at end of file
diff --git a/FileSplitterShared/Classes/TargetFileInfo.cs b/FileSplitterShared/Classes/TargetFileInfo.cs
new file mode 100644
index 0000000..2ce6d66
--- /dev/null
+++ b/FileSplitterShared/Classes/TargetFileInfo.cs
@@ -0,0 +1,29 @@
+using FileSplitter.Shared.Interfaces;
+
+namespace FileSplitter.Shared.Classes;
+
+///
+/// Информация о целевом файле
+///
+public class TargetFileInfo: ITargetFileInfo
+{
+ ///
+ /// Имя файла
+ ///
+ public string? FileName { get; set; }
+
+ ///
+ /// Размер файла
+ ///
+ public long FileSize { get; set; }
+
+ ///
+ /// md5-сумма файла для проверки
+ ///
+ public byte[]? FileHash { get; set; }
+
+ ///
+ /// Количество частей
+ ///
+ public byte SplitCount { get; set; }
+}
\ No newline at end of file
diff --git a/FileSplitterShared/FileSplitterShared.csproj b/FileSplitterShared/FileSplitterShared.csproj
new file mode 100644
index 0000000..de61e59
--- /dev/null
+++ b/FileSplitterShared/FileSplitterShared.csproj
@@ -0,0 +1,11 @@
+
+
+
+ net7.0
+ enable
+ enable
+ FileSplitterShared
+ FileSplitter.Shared
+
+
+
diff --git a/FileSplitterShared/Interfaces/ISplitFile.cs b/FileSplitterShared/Interfaces/ISplitFile.cs
new file mode 100644
index 0000000..b59bc7e
--- /dev/null
+++ b/FileSplitterShared/Interfaces/ISplitFile.cs
@@ -0,0 +1,27 @@
+namespace FileSplitter.Shared.Interfaces;
+
+///
+/// Интерфейс разделенного файла
+///
+public interface ISplitFile
+{
+ ///
+ /// Порядок части
+ ///
+ public byte Num { get; set; }
+
+ ///
+ /// Размер части
+ ///
+ public long Size { get; set; }
+
+ ///
+ /// Смещение начала части от начала итогового файла
+ ///
+ public long Offset { get; set; }
+
+ ///
+ /// md5-сумма части для проверки
+ ///
+ public byte[]? Hash { get; set; }
+}
\ No newline at end of file
diff --git a/FileSplitterShared/Interfaces/ITargetFileInfo.cs b/FileSplitterShared/Interfaces/ITargetFileInfo.cs
new file mode 100644
index 0000000..98ad5e7
--- /dev/null
+++ b/FileSplitterShared/Interfaces/ITargetFileInfo.cs
@@ -0,0 +1,27 @@
+namespace FileSplitter.Shared.Interfaces;
+
+///
+/// Информация о целевом файле
+///
+public interface ITargetFileInfo
+{
+ ///
+ /// Имя файла
+ ///
+ public string? FileName { get; set; }
+
+ ///
+ /// Размер файла
+ ///
+ public long FileSize { get; set; }
+
+ ///
+ /// md5-сумма файла для проверки
+ ///
+ public byte[]? FileHash { get; set; }
+
+ ///
+ /// Количество частей
+ ///
+ public byte SplitCount { get; set; }
+}
\ No newline at end of file