Purpose
Plugins that survive Revit and Rhino version upgrades.
The standard
.NET version per host: Rhino 8 → .NET 7 (
net7.0-windows); Revit 2025+ → .NET 8; Revit ≤ 2024 → .NET Framework 4.8. Multi-target in one.csprojwithConfigurationsper Revit year..editorconfigcommitted;dotnet formatin CI; nullable enabled; warnings as errors.One command per class; UI in WPF with MVVM; no logic in code-behind.
Revit: every model change inside a
Transactionwith a descriptive name; never holdElementreferences across transactions; useElementId.Rhino: subclass
Command, useRhinoDoc.ActiveDoconly insideRunCommand, undo records for every doc change.Third-party DLLs: prefer none; if needed, ILMerge/
Costurato avoid conflicts with other add-ins.
Anti-patterns
Static caches of document objects; catching Exception silently; blocking the UI thread.
Owner: [TEAM] · Last reviewed: 2026-09