CAO/BIM
Revit 2027 est installé, mais votre add-in n'apparaît pas dans le ruban – ou Revit signale au démarrage qu'il ne peut pas être chargé. La raison est presque toujours la même : Revit 2027 tourne sous .NET 10, et votre add-in a été compilé pour .NET 8 ou pour le .NET Framework.
Comment un add-in Revit est structuré
Un add-in Revit est une DLL .NET comportant au moins une classe qui implémente IExternalCommand (une commande) ou IExternalApplication (démarrage et arrêt, par exemple pour le ruban). La DLL et la classe que Revit doit charger sont indiquées dans un petit fichier XML portant l'extension .addin, le manifeste. Toute modification du modèle nécessite une transaction Revit :
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;
// Toute modification du modèle nécessite une transaction Revit
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;
}
}
La commande définit le commentaire de tous les éléments sélectionnés. Avec l'attribut TransactionMode.Manual, l'add-in gère lui-même ses transactions. Si le Commit manque, Revit annule les modifications à la sortie du bloc using.
Ce qui change avec Revit 2027
Revit 2024 et les versions antérieures tournent sous .NET Framework 4.8, Revit 2025 et 2026 sous .NET 8. Revit 2027 tourne sous .NET 10, et selon Autodesk, tous les add-ins doivent être compilés avec le SDK .NET 10. Microsoft met fin au support de .NET 8 le 10 novembre 2026. Autodesk a donc annoncé faire passer également Revit 2025 et 2026 à .NET 10 et a demandé aux développeurs de tester leurs add-ins dans cet environnement.
D'après le blog des développeurs Autodesk consacré au SDK Revit 2027, d'autres changements s'y ajoutent :
- Nouveaux emplacements : Revit ne cherche plus les add-ins pour tous les utilisateurs sous
C:\ProgramData\Autodesk\Revit\Addins\2027, mais sousC:\Program Files\Autodesk\Revit\Addins\2027. Le dossier par utilisateur continue de fonctionner.Application.AllUsersAddinsLocationrenvoie aussi une autre valeur. - Isolation : depuis Revit 2026, un add-in peut obtenir son propre contexte de chargement dans le manifeste, sous
ManifestSettings, avecUseRevitContextetContextName. Revit 2027 ajoutePublicAssemblies,DependenciesetUseAllContextsForDependencyResolution, afin que les add-ins puissent se référer explicitement les uns aux autres. - API modifiée :
ModelPathUtils.GetAllCloudRegions()remplaceCloudRegionUSetCloudRegionEMEA. Parmi les éléments obsolètes ou supprimés, Autodesk cite notamment l'import AXM, des parties deMechanical.Zone, d'anciennes méthodes de création d'armatures et certaines propriétés deEnergyDataSettings.
Migrer en quatre étapes
Étape 1 : le fichier de projet. Créez un nouveau fichier de projet au format SDK. Si Revit 2024 et 2027 doivent être servis à partir d'un même code source, le SDK compile les deux versions l'une après l'autre :
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<!-- Un code source, deux compilations : Revit 2024 et 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>
Pour Revit 2025 et 2026, une cible supplémentaire s'ajoute si nécessaire. Autodesk recommande en outre un global.json qui fixe le SDK .NET 10, et Visual Studio 2026 comme environnement de développement.
Étape 2 : compiler et traiter les messages. L'avertissement CA1416 disparaît avec la ligne [assembly: SupportedOSPlatform("windows")], qu'Autodesk propose elle-même pour les exemples du SDK. Viennent ensuite les endroits où vous utilisez des parties de l'API supprimées ou modifiées.
Étape 3 : les pièges de .NET 10. Ce qui vaut pour AutoCAD vaut aussi ici : le BinaryFormatter lève toujours une exception, la page de codes 1252 nécessite l'enregistrement de CodePagesEncodingProvider, et Process.Start n'ouvre les fichiers qu'avec UseShellExecute = true. Cela concerne justement les add-ins qui lisent des fichiers Excel ou CSV.
Étape 4 : livrer et tester. Adaptez votre programme d'installation aux nouveaux emplacements et testez votre add-in dans Revit 2027 avec les autres add-ins de vos utilisateurs. C'est surtout avec des bibliothèques partagées qu'on voit seulement à ce moment-là si l'isolation fonctionne comme prévu.
Erreurs typiques
- L'add-in est compilé pour .NET 8 et déposé dans Revit 2027. Il ne se charge pas.
- Le programme d'installation continue d'écrire le manifeste dans
ProgramData. Revit 2027 n'y cherche plus. UseWPFetUseWindowsFormsmanquent dans le fichier de projet, alors que l'interface a besoin des deux.- Les DLL de Revit sont copiées dans le dossier de sortie avec
Privateàtrue. - Échap pendant la sélection déclenche
Autodesk.Revit.Exceptions.OperationCanceledException. Qui intercepte l'exception homonyme deSystemsignale une annulation comme une erreur. - Deux add-ins apportent la même bibliothèque dans des versions différentes, et personne ne l'a testé.
Comment nous vous aidons
- Formation : notre formation « Revit .NET API avec C# » travaille avec Revit 2027 et .NET 10.
- Diagnostic d'add-in Revit 2027 : nous examinons votre add-in sous l'angle de .NET 10, des nouveaux emplacements et de l'isolation, et vous indiquons ce qu'il faut faire.
- Projet : nous développons des add-ins Revit, par exemple un export de données de projets de laboratoire vers XML, JSON et PDF pour un fournisseur de technique de laboratoire, et migrons des add-ins existants. Convenez d'un premier entretien.
- Le livre : l'ouvrage spécialisé d'Ebi F. Eilber « AutoCAD .NET API » décrit en détail les pièges de .NET 10 ; sa parution est prévue en 2027.
Sources : Autodesk Developer Blog, « Revit 2027 SDK: .NET 10, API Changes and Additions » (10/04/2026) et « Call for Preview Testing: Revit 2026/2025 Migration to .NET 10 » (29/04/2026) ; Ebi F. Eilber, AutoCAD .NET API (ouvrage spécialisé, parution prévue en 2027)
