Receber por email
← Voltar para o catálogo

tia-csharp-common

Internal reference skill — do NOT load directly from user queries.

26estrelas
Atualizado há 5 meses

Ver no GitHub ↗ Licença: MIT

Como adicionar

/plugin marketplace add Czarnak/totally-integrated-claude

O comando exato pode variar conforme o repositório. Confira o README no GitHub.

Para o autor da skill

Cole no README do seu repo

Mostra que sua skill está catalogada na Skillteca, gera backlink e tráfego rastreável.

[![Skillteca](https://www.skillteca.com.br/api/badge/tia-csharp-common/svg)](https://www.skillteca.com.br/skills/tia-csharp-common)

Skills relacionadas

Ver todas de Marketing →

Alerta por categoria

Receba novas skills de Marketing toda segunda

1 email curto, só com as skills novas de Marketing. 4 minutos de leitura, sem spam, cancela com 1 clique.

Você confirma o email no primeiro envio. Sem spam. Cancela com 1 clique.

Ler descrição completa

TIA Portal Openness C# — Common Foundation

Source: TIA Portal Openness General Functions Manual (03/2026, V21); V21 IntelliSense XML documentation files (PublicAPI\V21\net48\*.xml)

V21 modular assembly architecture

V21 splits the API across multiple DLLs instead of a single Siemens.Engineering.dll. Every project needs Siemens.Engineering.Base.dll; add domain DLLs as required. Referencing the wrong DLL (or omitting one) causes TypeLoadException at runtime.

Full mapping: See references/assembly-namespace-map.md for the exhaustive
namespace → DLL → domain skill table, cross-assembly warnings, and csproj patterns.

Namespaces by assembly

Only import what is actually used. The list below covers the most commonly needed namespaces. The mapping file documents all 80+ namespaces across 15 DLLs.

Siemens.Engineering.Base.dll (always required):

using Siemens.Engineering;                          // TiaPortal, Project, ExclusiveAccess, Transaction, events, exceptions
using Siemens.Engineering.Compiler;                 // CompilerResult
using Siemens.Engineering.Compare;                  // CompareResult
using Siemens.Engineering.Connection;               // connection objects between devices
using Siemens.Engineering.CrossReference;            // cross-reference queries
using Siemens.Engineering.Download;                 // DownloadProvider, DownloadConfiguration
using Siemens.Engineering.Download.Configurations;  // device-specific download configs (★ also in Step7 + Startdrive)
using Siemens.Engineering.HW;                       // Device, DeviceItem, Subnet, Node, IoSystem (★ also in Step7)
using Siemens.Engineering.HW.CommunicationConnections; // communication connection configs
using Siemens.Engineering.HW.Extensions;            // extension methods on HW objects
using Siemens.Engineering.HW.Features;              // SoftwareContainer, NetworkInterface (★ also in Step7)
using Siemens.Engineering.HW.HardwareCatalog;       // hardware catalog access
using Siemens.Engineering.HW.Utilities;             // HW utility helpers
using Siemens.Engineering.Library;                  // ProjectLibrary, GlobalLibrary
using Siemens.Engineering.Library.MasterCopies;     // MasterCopy, MasterCopyFolder
using Siemens.Engineering.Library.Types;            // LibraryType, LibraryTypeVersion
using Siemens.Engineering.Multiuser;                // LocalSession, ProjectServer
using Siemens.Engineering.Online;                   // OnlineProvider, OnlineState
using Siemens.Engineering.Online.Configurations;    // GoOnlineConfiguration, GoOfflineConfiguration
using Siemens.Engineering.Security;                 // SecurityController, certificates
using Siemens.Engineering.Settings;                 // TIA Portal settings
using Siemens.Engineering.Umac;                     // UmacRole, UmacUser, UmacFunctionRight
using Siemens.Engineering.Upload;                   // UploadProvider
using Siemens.Engineering.Upload.Configurations;    // upload configs (★ also in Startdrive)
using Siemens.Engineering.VersionControl;           // workspace and version control providers

Siemens.Engineering.Step7.dll (PLC operations):

using Siemens.Engineering.Cax;                      // CAx import/export
using Siemens.Engineering.SW;                       // PlcSoftware
using Siemens.Engineering.SW.Alarm;                 // PlcAlarm, AlarmClass
using Siemens.Engineering.SW.Alarm.TextLists;       // alarm text lists
using Siemens.Engineering.SW.Blocks;                // PlcBlock, OB, FB, FC, GlobalDB, InstanceDB, ArrayDB
using Siemens.Engineering.SW.Blocks.Interface;      // block interface access
using Siemens.Engineering.SW.ExternalSources;       // PlcExternalSource
using Siemens.Engineering.SW.Loader;                // program loader
using Siemens.Engineering.SW.OpcUa;                 // OPC UA server interface
using Siemens.Engineering.SW.Supervision;           // supervision alarms, operator messages
using Siemens.Engineering.SW.Tags;                  // PlcTagTable, PlcTag, PlcConstant
using Siemens.Engineering.SW.TechnologicalObjects;  // technology objects
using Siemens.Engineering.SW.TechnologicalObjects.Motion; // motion axes (★ also in Startdrive)
using Siemens.Engineering.SW.Types;                 // PlcType, PlcStruct
using Siemens.Engineering.SW.Units;                 // SoftwareUnit, CodeBlock, DataBlock
using Siemens.Engineering.SW.WatchAndForceTables;   // PlcWatchTable, PlcForceTable

Siemens.Engineering.WinCC.dll (classic HMI):

using Siemens.Engineering.Hmi;                      // HmiTarget (★ also in WinCC.Extension)
using Siemens.Engineering.Hmi.Alarm;                // DiscreteAlarm, AnalogAlarm
using Siemens.Engineering.Hmi.Communication;        // HmiConnection
using Siemens.Engineering.Hmi.Cycle;                // cycle settings
using Siemens.Engineering.Hmi.Dynamic;              // dynamization
using Siemens.Engineering.Hmi.Faceplate;            // faceplate types
using Siemens.Engineering.Hmi.Globalization;         // language/translation
using Siemens.Engineering.Hmi.Logging;              // DataLog, LoggingTag
using Siemens.Engineering.Hmi.Recipe;               // Recipe, RecipeElement
using Siemens.Engineering.Hmi.RuntimeScripting;     // VBScript
using Siemens.Engineering.Hmi.Screen;               // HmiScreen, ScreenTemplate, ScreenPopup + all elements
using Siemens.Engineering.Hmi.Tag;                  // HmiTag, HmiTagTable
using Siemens.Engineering.Hmi.TextGraphicList;      // text/graphic lists
using Siemens.Engineering.Hmi.Theming;              // HMI themes

Siemens.Engineering.Startdrive.dll (SINAMICS drives):

using Siemens.Engineering.MC.Drives;                // DriveObject, DriveParameter, Telegram
using Siemens.Engineering.MC.Drives.DFI;            // DriveFunctionInterface, Commissioning
using Siemens.Engineering.MC.Drives.Enums;          // drive enumerations
using Siemens.Engineering.MC.Drives.SecurityObjects; // drive encryption, UMAC

Siemens.Engineering.Safety.dll (F-system):

using Siemens.Engineering.Safety;                   // safety operations

Assembly resolver — MANDATORY (standalone Openness apps)

Not needed for Add-Ins. TIA Portal loads Add-In assemblies via its own loader.
This section applies only to standalone console/desktop Openness applications.

V21 installation paths

  • Registry key: HKLM\SOFTWARE\Siemens\Automation\InstalledApps\Totally Integrated Automation Portal V21 → value INSTALLPATH
  • Binary path: C:\Program Files\Siemens\Automation\Portal V21\PublicAPI\V21\net48\
  • Manifest schemas: C:\Program Files\Siemens\Automation\Portal V21\PublicAPI\V21\Schemas\

Resolver pattern

The AssemblyResolve event must be registered before any Openness type is referenced. This includes method parameters, return types, and class properties — not just method bodies.

Recommended pattern: register in a static constructor of Program, then move all Openness code to a separate class so the resolver is active before those classes are loaded.

internal static class Program
{
    // Register resolver at earliest possible point
    static Program()
    {
        AppDomain.CurrentDomain.AssemblyResolve += OnAssemblyResolve;
    }

    public static void Main()
    {
        // All Openness code must be in a separate class
        var app = new OpennessApp();
        app.Run();
    }

    private static Assembly OnAssemblyResolve(object sender, ResolveEventArgs args)
    {
        // Read install path from registry (recommended) or hardcode for simple tools
        string opennessFolder = GetOpennessInstallPath(); // implement per project
        AssemblyName requestedName = new AssemblyName(args.Name);
        string filePath = Path.Combine(opennessFolder,
            string.Concat(requestedName.Name, ".dll"));

        if (!requestedName.Name.StartsWith("Siemens.Engine
Compartilhar X LinkedIn