ISBuilder 8.7.0
See the version list below for details.
dotnet add package ISBuilder --version 8.7.0
NuGet\Install-Package ISBuilder -Version 8.7.0
<PackageReference Include="ISBuilder" Version="8.7.0" />
<PackageVersion Include="ISBuilder" Version="8.7.0" />
<PackageReference Include="ISBuilder" />
paket add ISBuilder --version 8.7.0
#r "nuget: ISBuilder, 8.7.0"
#:package ISBuilder@8.7.0
#addin nuget:?package=ISBuilder&version=8.7.0
#tool nuget:?package=ISBuilder&version=8.7.0
ISBuilder
Information System Builder — конструктор информационных систем на .NET 8.
Один пакет — все инструменты для разработки WinForms + EF Core + SQL Server приложений.
Установка
dotnet add package ISBuilder
Подтягивает все 27 пакетов автоматически. Ничего дополнительно устанавливать не нужно.
Состав пакетов
| Пакет | Пространство имен | Описание |
|---|---|---|
| AppBuilder | AppBuilder |
Конструктор CRUD-приложений за 15 строк |
| ExportKit | UniversalExport |
Экспорт/импорт в 11 форматов (JSON, XML, CSV, TXT, Excel, PDF, HTML, YAML, Markdown, Word, SQL) |
| EFQueryKit | EFQueryKit |
Запросы EF без лямбд, CRUD, агрегации |
| AutoFormsKit | AutoForms |
Автогенерация диалогов с валидацией [Required], [StringLength], [DataType] |
| SeedKit | SeedKit |
Генератор тестовых данных (русские ФИО, адреса, телефоны) |
| TestCaseKit | TestCaseKit |
Генератор тест-кейсов для тестирования ИС |
| ISBuilder | — | Мета-пакет, подтягивает все 27 пакетов |
| ConnectKit | ConnectKit |
Визуальный диалог подключения к SQL Server |
| NotifyKit | NotifyKit |
Всплывающие уведомления (тосты) |
| AppSettingsKit | SettingsKit |
Хранение настроек приложения в JSON с секциями |
| ValidationKit | ValidationKit |
Валидация данных без лямбд |
| MenuKit | MenuKit |
Генератор меню WinForms |
| DashboardKit | DashboardKit |
Панель статистики с цветными карточками |
| MigrationKit | MigrationKit |
Управление БД (создание, бэкап, восстановление, сид) |
| HelpKit | HelpKit |
Автоматическая справка по модели данных |
| DataDictKit | DataDictKit |
Словарь данных в Word |
| SearchKit | SearchKit |
Панель поиска для DataGridView |
| StatusBarKit | StatusBarKit |
Статусная строка с часами и счетчиком записей |
| AuthKit | AuthKit |
Авторизация (логин, роли, хеширование паролей) |
| UmlKit | UmlKit |
UML/ER-диаграммы (PlantUML, Mermaid, Draw.io) |
| PrintKit | PrintKit |
Печать таблиц с предпросмотром |
| ThemeKit | ThemeKit |
6 тем оформления (Dark, Light, Blue, Green, Purple, Orange) + сохранение выбора |
| ChartKit | ChartKit |
Диаграммы (столбчатая, круговая, линейная) |
| AuditKit | AuditKit |
Журнал действий пользователей |
| SchedulerKit | SchedulerKit |
Планировщик фоновых задач |
| ReportKit | ReportKit |
Генерация PDF-отчетов с таблицами и сводкой |
| CalcKit | CalcKit |
Бизнес-калькуляторы (кредит, депозит, пособие, доставка и др.) |
| MatchKit | MatchKit |
Движок подбора записей по критериям с оценкой совпадения |
Полный рабочий пример: ИС "Служба занятости"
Один файл Program.cs -- полноценная информационная система с дашбордом, CRUD,
поиском, экспортом в 9 форматов, словарём данных и тест-кейсами.
Установка: dotnet add package ISBuilder + dotnet add package Microsoft.EntityFrameworkCore.SqlServer.
// Полный рабочий пример — один файл Program.cs
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using Microsoft.EntityFrameworkCore;
using AppBuilder;
using SeedKit;
using AuditKit;
using DataDictKit;
using TestCaseKit;
var db = new EmploymentDb();
db.Database.EnsureCreated();
if (!db.Enterprises.Any())
{
var enterprises = Seeder.Generate<Enterprise>(10);
foreach (var e in enterprises) e.Id = 0;
db.Enterprises.AddRange(enterprises);
db.SaveChanges();
var vacancies = Seeder.GenerateLinked<Vacancy, Enterprise>(50, enterprises.ToList(), "EnterpriseId");
foreach (var v in vacancies) v.Id = 0;
db.Vacancies.AddRange(vacancies);
db.SaveChanges();
var applicants = Seeder.Generate<Applicant>(30);
foreach (var a in applicants) a.Id = 0;
db.Applicants.AddRange(applicants);
db.SaveChanges();
// Отклики
var rnd = new Random();
var vacList = db.Vacancies.ToList();
var appList = db.Applicants.ToList();
for (int i = 0; i < 20; i++)
{
db.Applications.Add(new VacancyApplication
{
ApplicantId = appList[rnd.Next(appList.Count)].Id,
VacancyId = vacList[rnd.Next(vacList.Count)].Id
});
}
db.SaveChanges();
// Словарь данных
DataDictionary.GenerateDocx(db, "Словарь_данных.docx");
DataDictionary.GenerateJson(db, "Словарь_данных.json");
// Тест-кейсы
var cases = new List<TestCase>();
cases.AddRange(TestCaseGenerator.GenerateCrud<Vacancy>("Вакансии"));
cases.AddRange(TestCaseGenerator.GenerateCrud<Applicant>("Соискатели"));
cases.AddRange(TestCaseGenerator.GenerateCrud<Enterprise>("Предприятия"));
UniversalExport.ExportManager.Export(
TestCaseGenerator.ToDataTable(cases, "Тест-кейсы"), "Тест_кейсы.xlsx");
Audit.Log(db, "БД создана, словарь и тест-кейсы сгенерированы", "system");
}
App.Create<EmploymentDb>("ИС «Городская служба занятости»")
.WithMenu()
.WithDashboard(d => new[]
{
("Предприятий", (object)d.Enterprises.Count(), Color.FromArgb(52, 152, 219)),
("Вакансий", (object)d.Vacancies.Count(), Color.FromArgb(46, 204, 113)),
("Соискателей", (object)d.Applicants.Count(), Color.FromArgb(155, 89, 182)),
("Откликов", (object)d.Applications.Count(), Color.FromArgb(230, 126, 34))
})
.AddTab<Enterprise>("Предприятия")
.AddTab<Vacancy>("Вакансии")
.AddTab<Applicant>("Соискатели")
.AddTab<VacancyApplication>("Отклики")
.WithExport()
.WithSearch()
.WithStatusBar()
.Size(1280, 800)
.Run();
// --- Перечисления ---
public enum EmploymentType
{
[Display(Name = "Полная")] Полная,
[Display(Name = "Частичная")] Частичная,
[Display(Name = "Удалённая")] Удалённая,
[Display(Name = "Стажировка")] Стажировка
}
public enum EducationLevel
{
[Display(Name = "Среднее")] Среднее,
[Display(Name = "Среднее специальное")] СреднееСпециальное,
[Display(Name = "Незаконченное высшее")] НезаконченноеВысшее,
[Display(Name = "Высшее")] Высшее,
[Display(Name = "Магистратура")] Магистратура,
[Display(Name = "Аспирантура")] Аспирантура
}
public enum ApplicationStatus
{
[Display(Name = "На рассмотрении")] НаРассмотрении,
[Display(Name = "Приглашён на собеседование")] Собеседование,
[Display(Name = "Принят")] Принят,
[Display(Name = "Отклонён")] Отклонён
}
// --- Модели ---
public class Enterprise
{
public int Id { get; set; }
[Display(Name = "Название"), Required, StringLength(100)]
public string Name { get; set; } = "";
[Display(Name = "Юридический адрес")] public string LegalAddress { get; set; } = "";
[Display(Name = "Фактический адрес")] public string ActualAddress { get; set; } = "";
[Display(Name = "Телефон")] public string Phone { get; set; } = "";
[Display(Name = "Контактное лицо")] public string ContactPerson { get; set; } = "";
public List<Vacancy> Vacancies { get; set; } = new();
public override string ToString() => Name;
}
public class Vacancy
{
public int Id { get; set; }
[Display(Name = "Должность"), Required] public string Position { get; set; } = "";
[Display(Name = "Оклад")] public decimal Salary { get; set; }
[Display(Name = "Занятость")] public EmploymentType EmploymentType { get; set; } = EmploymentType.Полная;
[Display(Name = "Требуемое образование")] public EducationLevel RequiredEducation { get; set; } = EducationLevel.Среднее;
[Display(Name = "Мин. возраст")] public int MinAge { get; set; }
[Display(Name = "Макс. возраст")] public int MaxAge { get; set; }
[Display(Name = "Требуемый стаж (лет)")] public int RequiredExperience { get; set; }
[Display(Name = "Дата публикации")] public DateTime PublishedDate { get; set; } = DateTime.Now;
[Display(Name = "Активна")] public bool IsActive { get; set; } = true;
[Display(Name = "Предприятие")] public int EnterpriseId { get; set; }
[ForeignKey("EnterpriseId")] public Enterprise? Enterprise { get; set; }
public override string ToString() => $"{Position} ({Salary:N0} руб.)";
}
public class Applicant
{
public int Id { get; set; }
[Display(Name = "ФИО"), Required] public string FullName { get; set; } = "";
[Display(Name = "Адрес регистрации")] public string RegistrationAddress { get; set; } = "";
[Display(Name = "Адрес проживания")] public string ActualAddress { get; set; } = "";
[Display(Name = "Телефон")] public string Phone { get; set; } = "";
[Display(Name = "Образование")] public EducationLevel Education { get; set; } = EducationLevel.Среднее;
[Display(Name = "Стаж (лет)")] public int Experience { get; set; }
[Display(Name = "Прежняя зарплата")] public decimal PreviousSalary { get; set; }
[Display(Name = "Прежняя должность")] public string PreviousPosition { get; set; } = "";
[Display(Name = "Желаемая должность")] public string DesiredPosition { get; set; } = "";
[Display(Name = "Мин. желаемая зарплата")] public decimal MinDesiredSalary { get; set; }
[Display(Name = "Дата постановки на учёт")] public DateTime RegistrationDate { get; set; } = DateTime.Now;
[Display(Name = "Семейное положение")] public string MaritalStatus { get; set; } = "";
public override string ToString() => FullName;
}
public class VacancyApplication
{
public int Id { get; set; }
[Display(Name = "Соискатель")] public int ApplicantId { get; set; }
[ForeignKey("ApplicantId")] public Applicant? Applicant { get; set; }
[Display(Name = "Вакансия")] public int VacancyId { get; set; }
[ForeignKey("VacancyId")] public Vacancy? Vacancy { get; set; }
[Display(Name = "Дата отклика")] public DateTime ApplicationDate { get; set; } = DateTime.Now;
[Display(Name = "Статус")] public ApplicationStatus Status { get; set; } = ApplicationStatus.НаРассмотрении;
}
// --- Контекст БД ---
public class EmploymentDb : DbContext
{
public DbSet<Enterprise> Enterprises { get; set; }
public DbSet<Vacancy> Vacancies { get; set; }
public DbSet<Applicant> Applicants { get; set; }
public DbSet<VacancyApplication> Applications { get; set; }
public DbSet<AuditLog> AuditLogs { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder options)
=> options.UseSqlServer(
"Server=SERVER;Database=EmploymentDb;Trusted_Connection=true;TrustServerCertificate=true");
}
Покрываемые предметные области (25+)
ISBuilder содержит инструменты для разработки информационных систем по любой предметной области:
| Область | Примеры сущностей |
|---|---|
| Служба занятости | Вакансии, Соискатели, Предприятия, Отклики |
| Банк | Клиенты, Кредиты, Вклады, Платежи |
| Гостиница | Номера, Гости, Бронирования, Услуги |
| Магазин | Товары, Заказы, Клиенты, Скидки |
| Транспорт | Рейсы, Билеты, Пассажиры, Маршруты |
| Аптека | Лекарства, Рецепты, Поставщики, Продажи |
| Поликлиника | Врачи, Пациенты, Приемы, Диагнозы |
| Автосалон | Автомобили, Клиенты, Продажи, Сервис |
| Библиотека | Книги, Читатели, Выдачи, Авторы |
| Риелторское агентство | Объекты, Клиенты, Сделки, Агенты |
| Турагентство | Туры, Клиенты, Бронирования, Направления |
| Ресторан | Блюда, Заказы, Столики, Официанты |
| Автосервис | Автомобили, Заказ-наряды, Запчасти, Мастера |
| Склад | Товары, Поступления, Отгрузки, Ячейки |
| Учебный центр | Курсы, Студенты, Преподаватели, Оценки |
| Кинотеатр | Фильмы, Сеансы, Залы, Билеты |
| Салон красоты | Услуги, Мастера, Клиенты, Записи |
| Фитнес-клуб | Абонементы, Клиенты, Тренеры, Занятия |
| Страховая компания | Полисы, Клиенты, Выплаты, Агенты |
| Доставка еды | Блюда, Заказы, Курьеры, Рестораны |
| Ветеринарная клиника | Животные, Владельцы, Приемы, Лечение |
| Прокат автомобилей | Автомобили, Клиенты, Аренда, Тарифы |
| Управляющая компания ЖКХ | Дома, Жильцы, Платежи, Заявки |
| Спортивная школа | Секции, Тренеры, Ученики, Соревнования |
| Издательство | Книги, Авторы, Тиражи, Продажи |
Как использовать (How To)
Шаг 1. Создать проект
dotnet new winforms -n MyApp
cd MyApp
Шаг 2. Установить ISBuilder
dotnet add package ISBuilder
Все 27 пакетов установятся автоматически.
Шаг 3. Создать модели данных
Создайте классы сущностей по вашей предметной области:
public class Vacancy
{
public int Id { get; set; }
public string Position { get; set; }
public decimal Salary { get; set; }
public string EmploymentType { get; set; }
public DateTime PublishedDate { get; set; }
public int EnterpriseId { get; set; }
}
Шаг 4. Создать DbContext
using Microsoft.EntityFrameworkCore;
public class MyDbContext : DbContext
{
public DbSet<Vacancy> Vacancies { get; set; }
public DbSet<AuditKit.AuditLog> AuditLogs { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder options)
=> options.UseSqlServer(
"Server=.;Database=MyAppDb;Trusted_Connection=true;TrustServerCertificate=true");
}
Шаг 5. Создать и заполнить БД
using MigrationKit;
using SeedKit;
var db = new MyDbContext();
await DbHelper.EnsureCreatedAsync(db); // создать БД
var data = Seeder.Generate<Vacancy>(50); // сгенерировать тестовые данные
db.Vacancies.AddRange(data);
db.SaveChanges();
Шаг 6. Запустить приложение
using AppBuilder;
App.Create<MyDbContext>("Моя информационная система")
.WithMenu()
.WithDashboard(db => new[] {
("Записей", (object)db.Vacancies.Count(), Color.FromArgb(52,152,219))
})
.AddTab<Vacancy>("Вакансии")
.WithExport()
.WithSearch()
.WithStatusBar()
.Size(1200, 750)
.Run();
Шаг 7. Добавить дополнительные функции
// Отчет в PDF
var vacancies = db.Vacancies.ToList();
var dt = UniversalExport.ExportManager.ToDataTable(vacancies);
Report.Create("Отчет").AddTable(dt).AddSummary("Salary").SavePdf("report.pdf");
// Диаграмма
var chart = SimpleChart.Bar(dt, "Position", "Salary", "Зарплаты");
// Расчет
decimal benefit = BizCalc.UnemploymentBenefit(70000, 4);
// Подбор
var matches = Matcher.FindWithScore(vacancies,
new MatchRule("Salary", ">=", 60000, weight: 3));
// Аудит
Audit.Log(db, "Экспорт данных", "admin");
// Планировщик
TaskScheduler.Daily(new TimeOnly(9, 0), () => CheckStaleRecords());
Лицензия
MIT
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0-windows7.0 is compatible. net9.0-windows was computed. net10.0-windows was computed. |
-
net8.0-windows7.0
- AppBuilderKit (>= 8.6.9)
- AppSettingsKit (>= 8.6.4)
- AuditKit (>= 8.6.4)
- AuthKit (>= 8.6.4)
- AutoFormsKit (>= 8.6.4)
- CalcKit (>= 8.6.4)
- ConnectKit (>= 8.6.4)
- DashboardKit (>= 8.6.4)
- DataDictKit (>= 8.6.9)
- EFQueryKit (>= 8.6.4)
- ExportKit (>= 8.6.4)
- HelpKit (>= 8.6.4)
- MatcherKit (>= 8.6.4)
- MenuKit (>= 8.6.4)
- MigrationKit (>= 8.6.4)
- NotifyKit (>= 8.6.4)
- PrintKit (>= 8.6.4)
- ReportKit (>= 8.6.4)
- SchedulerKit (>= 8.6.4)
- SearchKit (>= 8.6.4)
- SeedKit (>= 8.6.4)
- SimpleChartKit (>= 8.6.4)
- StatusBarKit (>= 8.6.4)
- TestCaseKit (>= 8.6.4)
- ThemeKit (>= 8.6.4)
- UmlKit (>= 8.6.4)
- ValidationKit (>= 8.6.4)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.