Revit-Add-ins entwickeln und auf Revit 2027 umstellen

3D-Gebäudemodell mit offenem Dachstuhl und Bauteilschichten auf Bauplänen

CAD/BIM

Revit 2027 ist installiert, aber Ihr Add-in fehlt im Menüband – oder Revit meldet beim Start, dass es nicht geladen werden kann. Der Grund ist fast immer derselbe: Revit 2027 läuft auf .NET 10, und Ihr Add-in wurde für .NET 8 oder das .NET Framework gebaut.

Wie ein Revit-Add-in aufgebaut ist

Ein Revit-Add-in ist eine .NET-DLL mit mindestens einer Klasse, die IExternalCommand (ein Befehl) oder IExternalApplication (Start und Ende, etwa für das Menüband) umsetzt. Welche DLL und welche Klasse Revit laden soll, steht in einer kleinen XML-Datei mit der Endung .addin, dem Manifest. Jede Änderung am Modell braucht eine Revit-Transaktion:

using Autodesk.Revit.Attributes;
using Autodesk.Revit.DB;
using Autodesk.Revit.UI;

[Transaction(TransactionMode.Manual)]
public class KommentarSetzen : IExternalCommand
{
    public Result Execute(ExternalCommandData commandData, ref string message,
        ElementSet elements)
    {
        var uidoc = commandData.Application.ActiveUIDocument;
        var doc = uidoc.Document;
        // Jede Änderung am Modell braucht eine Revit-Transaktion
        using (var t = new Transaction(doc, "Kommentar setzen"))
        {
            t.Start();
            foreach (var id in uidoc.Selection.GetElementIds())
            {
                var parameter = doc.GetElement(id)
                    .get_Parameter(BuiltInParameter.ALL_MODEL_INSTANCE_COMMENTS);
                if (parameter != null && !parameter.IsReadOnly)
                {
                    parameter.Set("geprüft");
                }
            }
            t.Commit();
        }
        return Result.Succeeded;
    }
}

Der Befehl setzt bei allen gewählten Elementen den Kommentar. Mit dem Attribut TransactionMode.Manual verwaltet das Add-in seine Transaktionen selbst. Fehlt das Commit, nimmt Revit die Änderungen beim Verlassen des using-Blocks zurück.

Was sich mit Revit 2027 ändert

Revit 2024 und älter laufen auf dem .NET Framework 4.8, Revit 2025 und 2026 auf .NET 8. Revit 2027 läuft auf .NET 10, und laut Autodesk müssen alle Add-ins mit dem .NET-10-SDK gebaut werden. Microsoft beendet die Unterstützung für .NET 8 am 10. November 2026. Autodesk hat deshalb angekündigt, auch Revit 2025 und 2026 auf .NET 10 umzustellen, und Entwickler gebeten, ihre Add-ins dagegen zu testen.

Laut dem Autodesk-Entwicklerblog zum Revit-2027-SDK kommen weitere Änderungen dazu:

  • Neue Ablageorte: Add-ins für alle Benutzer sucht Revit nicht mehr unter C:\ProgramData\Autodesk\Revit\Addins\2027, sondern unter C:\Program Files\Autodesk\Revit\Addins\2027. Der Ordner je Benutzer funktioniert weiter. Auch Application.AllUsersAddinsLocation liefert einen anderen Wert.
  • Isolation: Seit Revit 2026 kann ein Add-in im Manifest unter ManifestSettings mit UseRevitContext und ContextName einen eigenen Ladekontext bekommen. Revit 2027 ergänzt PublicAssemblies, Dependencies und UseAllContextsForDependencyResolution, damit Add-ins sich ausdrücklich aufeinander beziehen können.
  • Geänderte API: CloudRegionUS und CloudRegionEMEA ersetzt ModelPathUtils.GetAllCloudRegions(). Als veraltet bzw. entfernt nennt Autodesk unter anderem den AXM-Import, Teile von Mechanical.Zone, alte Methoden zum Erzeugen von Bewehrung und einige Eigenschaften von EnergyDataSettings.

Umstellen in vier Schritten

Schritt 1: die Projektdatei. Legen Sie eine neue Projektdatei im SDK-Format an. Sollen Revit 2024 und 2027 aus einem Quelltext bedient werden, baut das SDK beide Fassungen nacheinander:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <!-- Ein Quelltext, zwei Bauläufe: Revit 2024 und Revit 2027 -->
    <TargetFrameworks>net48;net10.0-windows</TargetFrameworks>
    <Platforms>x64</Platforms>
    <PlatformTarget>x64</PlatformTarget>
    <UseWPF>true</UseWPF>
    <UseWindowsForms>true</UseWindowsForms>
    <LangVersion>latest</LangVersion>
  </PropertyGroup>
  <PropertyGroup Condition="'$(TargetFramework)' == 'net48'">
    <RevitPfad>C:\Program Files\Autodesk\Revit 2024\</RevitPfad>
  </PropertyGroup>
  <PropertyGroup Condition="'$(TargetFramework)' == 'net10.0-windows'">
    <RevitPfad>C:\Program Files\Autodesk\Revit 2027\</RevitPfad>
  </PropertyGroup>
  <ItemGroup>
    <Reference Include="RevitAPI">
      <HintPath>$(RevitPfad)RevitAPI.dll</HintPath>
      <Private>false</Private>
    </Reference>
    <Reference Include="RevitAPIUI">
      <HintPath>$(RevitPfad)RevitAPIUI.dll</HintPath>
      <Private>false</Private>
    </Reference>
  </ItemGroup>
</Project>

Für Revit 2025 und 2026 kommt bei Bedarf ein weiteres Ziel dazu. Autodesk empfiehlt außerdem eine global.json, die das .NET-10-SDK festlegt, und Visual Studio 2026 als Entwicklungsumgebung.

Schritt 2: bauen und Meldungen abarbeiten. Die Warnung CA1416 beseitigt die Zeile [assembly: SupportedOSPlatform("windows")], die Autodesk für die SDK-Beispiele selbst vorschlägt. Danach folgen die Stellen, an denen Sie entfernte oder geänderte API-Teile nutzen.

Schritt 3: die Fallen von .NET 10. Was für AutoCAD gilt, gilt auch hier: Der BinaryFormatter wirft immer eine Ausnahme, Codepage 1252 braucht eine Anmeldung von CodePagesEncodingProvider, und Process.Start öffnet Dateien nur mit UseShellExecute = true. Das betrifft gerade Add-ins, die Excel- oder CSV-Dateien lesen.

Schritt 4: ausliefern und testen. Passen Sie Ihr Setup an die neuen Ablageorte an, und testen Sie Ihr Add-in in Revit 2027 zusammen mit den anderen Add-ins Ihrer Anwender. Gerade bei geteilten Bibliotheken zeigt sich erst dort, ob die Isolation so greift wie gedacht.

Typische Fehler

  • Das Add-in wird für .NET 8 gebaut und in Revit 2027 abgelegt. Es lädt nicht.
  • Das Setup schreibt das Manifest weiter nach ProgramData. Revit 2027 sucht dort nicht mehr.
  • UseWPF und UseWindowsForms fehlen in der Projektdatei, obwohl die Oberfläche beides braucht.
  • Die Revit-DLLs werden mit Private auf true in den Ausgabeordner kopiert.
  • Esc beim Auswählen löst Autodesk.Revit.Exceptions.OperationCanceledException aus. Wer die gleichnamige Ausnahme aus System fängt, meldet einen Abbruch als Fehler.
  • Zwei Add-ins bringen dieselbe Bibliothek in verschiedenen Versionen mit, und keiner hat es getestet.

So helfen wir

  • Schulung: Unsere Schulung „Revit .NET API mit C#“ arbeitet mit Revit 2027 und .NET 10.
  • Add-in-Check Revit 2027: Wir prüfen Ihr Add-in auf .NET 10, die neuen Ablageorte und die Isolation und sagen Ihnen, was zu tun ist.
  • Projekt: Wir entwickeln Revit-Add-ins, etwa einen Export von Labor-Projektdaten nach XML, JSON und PDF für einen Anbieter aus der Labortechnik, und stellen bestehende um. Vereinbaren Sie ein Erstgespräch.
  • Das Buch: Die .NET-10-Fallen beschreibt Ebi F. Eilbers Fachbuch „AutoCAD .NET API“ ausführlich, es erscheint voraussichtlich 2027.

Quellen: Autodesk Developer Blog, „Revit 2027 SDK: .NET 10, API Changes and Additions“ (10.04.2026) und „Call for Preview Testing: Revit 2026/2025 Migration to .NET 10“ (29.04.2026); Ebi F. Eilber, AutoCAD .NET API (Fachbuch, erscheint voraussichtlich 2027)

KONTAKT

Sprache auswählen

ErstgesprächvereinbarenErstgesprächvereinbaren