Forge
markdowne8ad0934
1# Fundamentals: сборка, References и vendor API (v1)
2
3**Мир:** `engineering.cad`
4
5---
6
7## Scope
8
9Как в типичном workspace CAD-команды устроены **References**, **снимки DLL**, **HintPath** и **конфигурации** — без конкретных путей диска.
10
11---
12
13## Core concepts
14
15### 1) Два слоя зависимостей
16
17| Слой | Содержимое | Назначение |
18|------|------------|------------|
19| **References (git)** | ObjectArx headers, Autodesk/nanoCAD interop, EPPlus, OpenXml, … | Общие бинарники и заголовки для всех продуктов |
20| **Product References** (напр. Aveva) | `Aveva.*.dll` по папкам версий продукта | API конкретных релизов E3D/ADM/TAGS |
21| **NuGet** (напр. Tekla) | `TeklaOpenAPI` | Версионированный Open API |
22
23### 2) Паттерн HintPath «установка ИЛИ снимок»
24
25```xml
26<HintPath Condition="Exists('C:\Program Files\…\vendor.dll')">…</HintPath>
27<HintPath Condition="Exists('..\..\References\…\vendor.dll')">…</HintPath>
28```
29
30- CI/разработчик **без** установленного САПР собирает по снимку в repo.
31- С установленным продуктом — предпочтение Program Files (актуальнее interop).
32
33### 3) Конфигурации = продукт + TFM
34
35- Имя `Debug_E3D310` / `Release_NC23.1_net48` кодирует **целевой хост**.
36- `DefineConstants` включают тег продукта для `#if` и условных ссылок.
37- Один solution может собирать **десятки** конфигураций — выбирать одну осознанно.
38
39### 4) ObjectARX headers
40
41- Папки по **году SDK** (`inc/`), не по году AutoCAD напрямую — но соответствие таблице Autodesk обязательно проверять по документации.
42
43### 5) SDK / Help (концептуально)
44
45- Папка **SDK** в workspace часто зарезервирована под **CHM/PDF/примеры** вендора.
46- Может быть пустой на share — тогда справка с **установки САПР** или портала вендора.
47- **References ≠ SDK**: References — для **компиляции**; SDK — для **чтения человеком**.
48
49### 6) Что не класть в обобщённый KB
50
51- Строки подключения к корпоративным SQL для телеметрии утилит.
52- UNC-пути, внутренние wiki, имена серверов.
53- Проектные модели заказчика.
54
55---
56
57## Anti-patterns
58
59- Коммитить пароли в `ConnStr.txt` — только шаблон + локальный файл в деплое.
60- Смешивать DLL разных версий Aveva в одну папку output.
61- Ожидать, что пустая папка Autodesk в References заполнится сама — часто DLL копируют с установки один раз.
62
63---
64
65## Links
66
67- [software-dotnet-csharp/kb-dotnet-fundamentals-v1.md](../software-dotnet-csharp/kb-dotnet-fundamentals-v1.md)
68
69**Версия:** v1.0 · 2026-06-04
70
View only · write via MCP/CIDE