Skip to content

Execution Overview

Truong Giang Vu edited this page May 31, 2026 · 1 revision

Execution Overview

Use Execution when you want to run automation code inside the host without a slow rebuild/restart loop.

Execution has two main user-facing paths:

Path Use when
Scripting You want quick iteration from source files without creating a full add-in project
.NET Assembly You want to run compiled commands from an add-in/tool assembly

What You Can Run

Code type Use when
Python 3.13 *script.py Modern Python scripting with PythonNet, packages, debugger support, and samples
IronPython *_ipy_script.py IronPython scripts through pyRevit runtime support, with IronPython 3.4.2 fallback
F# *script.fsx F# scripting and quick functional experiments
C# *script.csx Fast typed C# experiments without a full project
.NET .dll Compiled add-in/tool command development; similar use case to Revit Add-In Manager

Folder Rules

A folder is visible as a script command only if it contains at least one supported entry file:

*script.py
*_ipy_script.py
*script.csx
*script.fsx

Build output, package folders, virtual environments, docs, and tooling folders are ignored.

Choose The Right Mode

Need Recommended mode
Explore model data quickly Python 3.13 scripting
Use pandas/polars/numpy/shapely-style packages Python 3.13 scripting
Debug Python with VSCode Python 3.13 scripting
Reuse IronPython or pyRevit-style code IronPython scripting
Try a small typed snippet C# script
Prototype with F# interactive-style code F# script
Run compiled Revit commands without Add-In Manager .NET assembly
Build a production add-in command .NET assembly

Revit Context Reminder

Revit API calls must happen in valid Revit API context. Commands launched through RevitDevTool are designed for that workflow. Background/modeless UI code still needs to route Revit API work back through the supported Revit execution path.

More Pages

Clone this wiki locally