AutoCAD 2027 et .NET 10 : ce qui change pour vos add-ins

Weichen im Gleisbett als Bild für die Umstellung von AutoCAD-Add-ins auf .NET 10

CAO

Votre add-in a fonctionné sans broncher pendant des années – et après le passage à AutoCAD 2027, il ne se charge plus. Ou bien il se charge, mais les paramètres enregistrés par vos utilisateurs ont soudain disparu. Les deux ont la même cause : AutoCAD 2027 tourne sous .NET 10.

Ce qui a changé

Un déménagement est la meilleure occasion de faire le tri à la cave. La plupart des meubles suivent, certains ne passent pas par la nouvelle porte. C'est la même chose ici. AutoCAD 2021 à 2024 tournent sous .NET Framework 4.8, AutoCAD 2025 et 2026 sous .NET 8 et AutoCAD 2027 (en interne R26.0, DLL en version 26.0) sous .NET 10.

AutoCAD.NETVisual Studio
2021 à 2024 .NET Framework 4.8 2019 ou 2022
2025 et 2026 .NET 8, .NET 10 à partir des mises à jour 2025.1.4 et 2026.1.2 2022, 2026 à partir de ces mises à jour
2027 .NET 10 2026

Le point essentiel est la rupture de compatibilité binaire : un add-in pour AutoCAD 2025 ou 2026 doit être recompilé pour 2027 – peu importe qu'il ait été créé avec .NET 8 ou .NET 10. À cela s'ajoute une échéance fixe. Microsoft met fin au support de .NET 8 le 10 novembre 2026. C'est pourquoi Autodesk a également fait passer AutoCAD 2025 et 2026 à .NET 10 avec les mises à jour citées, sans modifier l'API.

La bonne nouvelle : l'API AutoCAD elle-même a peu changé. L'essentiel du travail concerne .NET – le fichier de projet, quelques classes disparues et des comportements qui ont changé sans bruit.

Étape 1 : un nouveau fichier de projet plutôt qu'une transformation

Les fichiers de projet de l'époque du .NET Framework atteignent vite 150 lignes. Les transformer n'en vaut pas la peine. Créez un nouveau fichier au format SDK et reprenez les fichiers sources. Pour AutoCAD 2027, ceci suffit :

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>

    <!-- AutoCAD 2027 tourne sous .NET 10, "-windows" apporte WPF et WinForms -->

    <TargetFramework>net10.0-windows</TargetFramework>

    <Platforms>x64</Platforms>

    <PlatformTarget>x64</PlatformTarget>

    <UseWPF>true</UseWPF>

    <UseWindowsForms>true</UseWindowsForms>

    <ImplicitUsings>disable</ImplicitUsings>

    <EnableDynamicLoading>true</EnableDynamicLoading>

    <AcadPfad>C:\Program Files\Autodesk\AutoCAD 2027\</AcadPfad>

  </PropertyGroup>

  <ItemGroup>

    <!-- Private=false : AutoCAD fournit lui-même les DLL -->

    <Reference Include="accoremgd">

      <HintPath>$(AcadPfad)accoremgd.dll</HintPath>

      <Private>false</Private>

    </Reference>

    <Reference Include="acdbmgd">

      <HintPath>$(AcadPfad)acdbmgd.dll</HintPath>

      <Private>false</Private>

    </Reference>

    <Reference Include="acmgd">

      <HintPath>$(AcadPfad)acmgd.dll</HintPath>

      <Private>false</Private>

    </Reference>

  </ItemGroup>

</Project>

Chaque ligne a sa raison d'être. UseWPF et UseWindowsForms sont nécessaires parce que les DLL d'AutoCAD font référence aux deux ; sans eux, la compilation signale l'avertissement MSB3277. ImplicitUsings reste désactivé, sinon Application et Exception sont ambigus (erreur CS0104). Et Private à false évite que la compilation copie les DLL d'AutoCAD avec toutes leurs dépendances dans le dossier de sortie – lors de notre essai, cela représentait 37 DLL pour 61,8 Mo.

Supprimez l'ancien Properties\AssemblyInfo.cs ou mettez GenerateAssemblyInfo à false, sinon vous obtenez l'erreur CS0579. Les redirections de liaison (binding redirects) d'un app.config n'ont plus d'effet sous .NET 10.

Étape 2 : ce qui n'apparaît qu'à l'exécution

Plus désagréables sont les cas que le compilateur laisse passer. Nous les avons exécutés dans un programme de test, une fois sous .NET Framework 4.8 et une fois sous .NET 10 :

  • BinaryFormatter : depuis .NET 9, chaque appel lève une PlatformNotSupportedException, et AutoCAD 2027 le désactive en plus. Les remplaçants sont XmlSerializer ou System.Text.Json. Pensez aux anciens fichiers de vos clients – la nouvelle version ne peut plus les lire.
  • AppDomain.CreateDomain et Thread.Abort n'existent plus. Les remplaçants sont AssemblyLoadContext et CancellationToken.
  • La page de codes 1252 n'est connue de .NET 10 qu'après un enregistrement.
  • Process.Start n'ouvre plus les fichiers et les adresses web qu'avec UseShellExecute = true.
  • Marshal.GetActiveObject a disparu. Dans l'add-in, vous accédez à l'interface COM via Application.AcadApplication.
  • Assembly.LoadFile charge dans son propre contexte de chargement. Utilisez Assembly.LoadFrom.
// Windows-1252 (anciennes nomenclatures, fichiers CSV) : sous .NET 10 seulement après enregistrement

#if NET

Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);

#endif

var ansi = Encoding.GetEncoding(1252);



// Ouvrir un fichier ou une adresse web : UseShellExecute vaut false par défaut sous .NET 10

Process.Start(new ProcessStartInfo(pfad) { UseShellExecute = true });

Plusieurs versions d'AutoCAD à partir d'un seul projet

Tant que vos clients travaillent avec AutoCAD 2024 et 2027, votre add-in a besoin de deux versions. Deux projets ne sont pas nécessaires. Avec TargetFrameworks (au pluriel) et la valeur net48;net10.0-windows, le SDK compile les deux versions l'une après l'autre. Pour chaque cible, un PropertyGroup conditionnel définit le chemin des DLL d'AutoCAD, et un symbole propre comme ACAD2024 isole dans le code source les quelques endroits qui diffèrent. Pour net48, il vous faut en plus LangVersion à latest et, si vous utilisez dynamic, une référence à Microsoft.CSharp. La livraison se fait dans des dossiers séparés d'un bundle de plug-in qui définit avec SeriesMin et SeriesMax quelle version correspond à quelle version d'AutoCAD.

Erreurs typiques

  • L'ancien fichier de projet est conservé – conséquence : CS0579 et une liste d'avertissements énigmatiques.
  • UseWPF et UseWindowsForms manquent. D'abord, il n'y a que MSB3277, puis une erreur au plus tard avec une interface utilisateur propre.
  • Une seule DLL doit suffire pour AutoCAD 2026 et 2027. C'est impossible en raison de la rupture de compatibilité binaire.
  • Les paramètres des utilisateurs sont encore au format BinaryFormatter et se perdent sans bruit.
  • Les anciens fichiers CSV ou de nomenclature en Windows-1252 lèvent une NotSupportedException.
  • La compilation se fait avec Visual Studio 2022. Pour AutoCAD 2027, Autodesk indique Visual Studio 2026.

Comment nous vous aidons

  • Formation : lors de la formation « AutoCAD .NET API avec C# », vous développez votre add-in directement pour AutoCAD 2027 et .NET 10. Pour BricsCAD, il existe la formation « BricsCAD .NET API avec C# ».
  • Diagnostic d'add-in AutoCAD 2027 : nous examinons votre add-in et vous indiquons ce qu'il faut faire pour .NET 10 – du fichier de projet aux pièges à l'exécution.
  • Migration sous forme de projet : nous migrons votre add-in, le modernisons au passage ou accompagnons votre équipe. Convenez d'un premier entretien.
  • Le livre : tout est expliqué en détail dans l'ouvrage spécialisé d'Ebi F. Eilber « AutoCAD .NET API », dont la parution est prévue en 2027.

Source : Ebi F. Eilber, AutoCAD .NET API (ouvrage spécialisé, parution prévue en 2027)

CONTACT

Sélectionnez votre langue

Premier entretienprendre rendez-vousPremier entretienprendre rendez-vous