Help us improve
Share bugs, ideas, or general feedback.
From totally-integrated-claude
Develop TIA Portal Add-Ins in Visual Studio Code using C#. Create projects, add templates, compile, debug, and convert from older versions.
npx claudepluginhub czarnak/totally-integrated-claude --plugin totally-integrated-claudeHow this skill is triggered — by the user, by Claude, or both
Slash command
/totally-integrated-claude:addin-operationsThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Source: TIA Portal Add-In Development Tools Manual (11/2025)
references/api-menus.mdreferences/api-permissions.mdreferences/api-surface.mdreferences/assembly-references.mdreferences/attribute-helper.mdreferences/migrate-from-older-version.mdreferences/package-and-publisher.mdreferences/runtime-gotchas.mdreferences/skeleton.mdreferences/threading-and-callbacks.mdImplements project and portal lifecycle operations (open, create, save, close, archive, compile) via C# Openness. Loads reference files for lifecycle, attributes, language settings, UMAC auth, compile, portal settings, and VCI management.
Adds new Umbraco backoffice extension project reference to main instance .csproj and optionally .sln. Use after dotnet new umbraco-extension or moving extensions.
Guides VS Code extension development from scaffolding to Marketplace publication, covering commands, Webviews, TreeViews, testing, packaging, and troubleshooting.
Share bugs, ideas, or general feedback.
Source: TIA Portal Add-In Development Tools Manual (11/2025)
Add-In development in VS Code using C# and the dotnet Add-In SDK. Do not mix with Python wrapper calls.
Load ONLY the reference file(s) relevant to the task. Do not load all files at once.
| Reference file | Load when the task involves |
|---|---|
references/api-surface.md | Choosing provider/add-in types; VCI or CAx workflow item types; workflow-to-assembly mapping |
references/api-menus.md | Building context menu structures; action items; submenus; selection handling |
references/api-permissions.md | Starting external processes; handling ProcessStartPermission |
references/assembly-references.md | Adding PLC software, block, or tag access to an Add-In csproj |
references/attribute-helper.md | Reading/writing engineering object attributes via GetAttributeInfos or SetAttributes |
references/threading-and-callbacks.md | Showing any WinForms UI from an Add-In; understanding status callback constraints |
references/runtime-gotchas.md | Assembly location resolution failures; NuGet/GAC errors; SplitContainer sizing crashes; WinForms .resx partial-trust failures; package-identity caching; engineering-object field warnings |
references/package-and-publisher.md | .addin package internals; V21 publisher config; PlatformTarget; verifying a published package |
references/migrate-from-older-version.md | Converting a V20 (or earlier) Add-In to V21; decompiling an existing .addin when source is lost |
references/skeleton.md | Starting a new context-menu Add-In from scratch |
For tasks spanning multiple areas, load all relevant reference files before generating code.
dotnet new <template> (see template table below)references/assembly-references.mdBuildContextMenuItems — status callback returns MenuStatus.Enabled, guard logic goes in the action callbackreferences/threading-and-callbacks.mdOpen the Windows command prompt with administrator privileges.
(Optional) Navigate to the desired project location, or use the --output parameter.
Run:
dotnet new addin-project [options]
| Parameter | Long form | Short | Description |
|---|---|---|---|
| output | --output | -o | Project folder. If not specified, project is created in the current directory. |
| name | --name | -n | Project name. If not specified, the parent directory name is used. |
| Namespace | --Namespace | -N | C# namespace. Default is derived from output directory or project name. |
| TIAAccess | --TIAAccess | -TI | Authorization level: ReadWrite (default) or ReadOnly. |
dotnet new addin-project -o C:\MyAddIns\MyFirstAddIn -n MyAddinProject -N MyAddinNamespace -TI ReadWrite
The following parameters can also be set at creation time but are editable later in Config.xml inside the project directory: Author, Description, AddInVersion, ProductName, ProductId, ProductVersion, UnrestrictedAccess, JustificationComment.
A new project is created containing the framework for an empty Add-In that can be built.
The project directory contains Config.xml for changing parameters after creation.
Open the Windows command prompt with administrator privileges.
Navigate to the project directory (or use --output).
Run:
dotnet new <Add-In-Type> [-o <output dir>] [-n <name>] [-N <namespace>]
Replace <Add-In-Type> with the short name from the table below.
addin-project-tree-menu — TIA Portal Project-Tree Context Menu Add-In Adds custom entries to the right-click menu of the project tree. Use cases: automating operations on blocks, tag tables, or devices; batch-exporting selected items; running custom validations on project tree objects.
addin-project-library-tree-menu — TIA Portal Project-Library-Tree Context Menu Add-In Adds custom entries to the right-click menu of the project library tree. Use cases: custom library management operations; automated copying or versioning of library types; bulk operations on library elements.
addin-global-library-tree-menu — TIA Portal Global-Library-Tree Context Menu Add-In Adds custom entries to the right-click menu of a global library. Use cases: synchronizing global library content with external systems; enforcing naming conventions across library elements; automated library maintenance tasks.
addin-devices-and-networks-menu — TIA Portal Devices and Networks Context Menu Add-In Adds custom entries to the right-click menu of the hardware and network editor. Use cases: automated network configuration; bulk device parameter changes; generating device reports or hardware bills of materials.
addin-vci-editor — TIA Portal VCI Editor Add-In Adds entries to the workspace area of the Version Control Interface workspace editor. These entries are always visible and should contain general-purpose functions. For repository-specific operations, use the VCI Import or VCI Export templates instead. Use cases: general version control utilities; workspace status overview; custom reporting on versioned items.
addin-vci-import-workflow — TIA Portal VCI Import Add-In Extends the VCI import workflow with custom shortcut menu entries and enhanced drag-and-drop/synchronization from the workspace area into the project. Can only be used if selected as the import Add-In in the Add-In configuration view. Use cases: custom import validation; automated conflict resolution during import; post-import processing of files and directories.
addin-vci-export-workflow — TIA Portal VCI Repository Export Add-In Extends the VCI export workflow with custom shortcut menu entries and enhanced drag-and-drop/synchronization from the project into the workspace area. Can only be used if selected as the Version Control Add-In in the workspace editor. Use cases: custom export rules and filtering; automated commit operations; pre-export validation and packaging.
addin-cax-export-import-workflow — TIA Portal CAX Export Import Add-In Adds custom functions to be executed after a CAx export or import operation in TIA Portal. Enables further interaction with the TIA Portal based on exported or imported data, or with external applications. Export operations are always write-protected. Must be selected as the default Add-In for the "CAx data exchange" workflow in the Add-In configuration. Use cases: post-export data transformation for external CAx tools; automated validation of imported CAx data; synchronization with external engineering databases.
Examples for icons and multilingual texts can be found in the corresponding templates.
All classes and methods needed for programming the selected Add-In type are inserted into the project. You can directly implement the desired functionalities.
If compilation succeeds, the .addin file is created in the bin directory of the project.
Important: Test your Add-Ins thoroughly before distributing them. You can use the mass rollout mechanism of the TIA Portal to distribute Add-Ins in your organization. Additional information is available in the TIA Portal information system.
You can now step through your program code using the debug functions of Visual Studio Code. The Add-In remains activated until you close the TIA Portal.
Note: It is not necessary to copy the
.addinfile to a specific Add-In folder for debugging.
The Add-In assembly has been split into several segmented assemblies. Automatic conversion of older Add-Ins is therefore not possible — manual adjustments are required.
Update assembly references:
Remove the old reference to Siemens.Engineering.AddIn.dll and add references to the new segmented assemblies.
Update API implementations: If your Add-In uses any of the following APIs, update their implementations according to the current procedure:
For the full step-by-step migration (decompiling a
.addinwhen source is lost, fixing menu delegate syntax,.resxconversion, V21 publisher config), loadreferences/migrate-from-older-version.md.