67 lines
2.6 KiB
Markdown
67 lines
2.6 KiB
Markdown
# StandardProducts — desktop-приложение (C# / .NET 8 / WPF)
|
|
|
|
Каталог стандартных изделий для Windows 11: таблицы ГОСТ, поиск, импорт/экспорт JSON.
|
|
Хранилище — SQLite, та же схема, что в Python-версии проекта.
|
|
|
|
## Требования
|
|
|
|
- Windows 10/11 (для запуска)
|
|
- .NET SDK 8.0+ (для сборки)
|
|
- Visual Studio 2022 не обязательна: достаточно `dotnet` CLI
|
|
|
|
## Сборка и запуск
|
|
|
|
```bash
|
|
cd dotnet
|
|
dotnet build
|
|
dotnet run --project src/StandardProducts.App
|
|
```
|
|
|
|
## Публикация
|
|
|
|
Self-contained один файл (не требует .NET у пользователя):
|
|
|
|
```bash
|
|
dotnet publish src/StandardProducts.App \
|
|
-c Release -r win-x64 --self-contained true \
|
|
-p:PublishSingleFile=true \
|
|
-o publish
|
|
```
|
|
|
|
Результат — `dotnet/publish/StandardProducts.exe` (~150 МБ, включает WPF и SQLite).
|
|
Для MSIX используйте Windows Application Packaging Project или `MakeAppx`; для
|
|
внутреннего распространения достаточно exe.
|
|
|
|
## Возможности
|
|
|
|
- таблица изделий с поиском по обозначению, наименованию, стандарту и атрибутам;
|
|
- загрузка семейства болтов ГОСТ 7805-70 (5 размеров × 9 длин = 45 изделий);
|
|
- импорт/экспорт JSON (формат совместим с Python-версией);
|
|
- удаление изделий, просмотр атрибутов выбранной позиции;
|
|
- регистронезависимый поиск по кириллице (SQLite-функция `ulower`).
|
|
|
|
База создаётся автоматически:
|
|
`%LOCALAPPDATA%\StandardProducts\catalog.db`.
|
|
|
|
## Структура
|
|
|
|
```
|
|
dotnet/
|
|
StandardProducts.sln
|
|
src/StandardProducts.Core/ # модели, SQLite, ГОСТ 7805-70, JSON — net8.0
|
|
src/StandardProducts.App/ # WPF-интерфейс — net8.0-windows
|
|
tests/StandardProducts.Core.Tests/ # xunit
|
|
```
|
|
|
|
Ядро (`Core`) не зависит от WPF и собирается/тестируется на любой ОС:
|
|
|
|
```bash
|
|
dotnet test tests/StandardProducts.Core.Tests
|
|
```
|
|
|
|
## 3D / STEP
|
|
|
|
В текущей версии не реализованы и не нужны. Если появятся:
|
|
отдельная нативная библиотека на OpenCASCADE (C++), вызываемая из C#
|
|
через P/Invoke/C++/CLI; UI и каталог при этом не меняются.
|