AutoCAD 2027 y .NET 10: qué cambia en sus add-ins

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

CAD

Su add-in funcionó durante años sin rechistar y, tras pasar a AutoCAD 2027, ya no se carga. O se carga, pero la configuración guardada de sus usuarios ha desaparecido de repente. Ambas cosas tienen la misma causa: AutoCAD 2027 funciona con .NET 10.

Qué ha cambiado

Una mudanza es la mejor ocasión para vaciar el trastero. La mayoría de los muebles se vienen, pero alguno no cabe por la puerta nueva. Aquí ocurre lo mismo. AutoCAD 2021 a 2024 funcionan con .NET Framework 4.8, AutoCAD 2025 y 2026 con .NET 8 y AutoCAD 2027 (internamente R26.0, DLL en la versión 26.0) con .NET 10.

AutoCAD.NETVisual Studio
2021 a 2024 .NET Framework 4.8 2019 o 2022
2025 y 2026 .NET 8; desde la actualización 2025.1.4 o 2026.1.2, .NET 10 2022; desde esas actualizaciones, 2026
2027 .NET 10 2026

Lo importante es la ruptura binaria: un add-in para AutoCAD 2025 o 2026 debe recompilarse para 2027, da igual si se creó con .NET 8 o con .NET 10. A ello se suma una fecha fija. Microsoft pone fin al soporte de .NET 8 el 10 de noviembre de 2026. Por eso Autodesk también ha pasado AutoCAD 2025 y 2026 a .NET 10 con las actualizaciones mencionadas, sin cambiar la API.

La buena noticia: en la propia API de AutoCAD ha cambiado poco. La mayor parte del trabajo está en .NET: en el archivo de proyecto, en unas cuantas clases desaparecidas y en comportamientos que han cambiado sin avisar.

Paso 1: un archivo de proyecto nuevo en lugar de reformarlo

Los archivos de proyecto de la época de .NET Framework alcanzan fácilmente las 150 líneas. No merece la pena reformarlos. Cree un archivo nuevo en formato SDK y añada los archivos fuente. Para AutoCAD 2027 basta con esto:

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

  <PropertyGroup>

    <!-- AutoCAD 2027 funciona con .NET 10, "-windows" aporta WPF y 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 ya trae sus propias 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>

Cada línea tiene su razón. UseWPF y UseWindowsForms son necesarios porque las DLL de AutoCAD hacen referencia a ambos; sin ellos, la compilación muestra la advertencia MSB3277. ImplicitUsings permanece desactivado; de lo contrario, Application y Exception resultan ambiguos (error CS0104). Y Private con el valor false evita que la compilación copie las DLL de AutoCAD con todas sus dependencias en la carpeta de salida: en nuestra prueba fueron 37 DLL con 61,8 MB.

Elimine el antiguo Properties\AssemblyInfo.cs o ponga GenerateAssemblyInfo en false; si no, aparece el error CS0579. Los binding redirects de un app.config ya no tienen efecto en .NET 10.

Paso 2: lo que solo se nota en tiempo de ejecución

Más desagradables son los casos que el compilador deja pasar. Los ejecutamos en un programa de prueba, una vez con .NET Framework 4.8 y otra con .NET 10:

  • BinaryFormatter: desde .NET 9, cada llamada lanza una PlatformNotSupportedException, y AutoCAD 2027 lo desactiva además. Las alternativas son XmlSerializer o System.Text.Json. Piense en los archivos antiguos de sus clientes: la nueva versión ya no puede leerlos.
  • AppDomain.CreateDomain y Thread.Abort ya no existen. Las alternativas son AssemblyLoadContext y CancellationToken.
  • La página de códigos 1252 solo la conoce .NET 10 tras registrarla.
  • Process.Start solo abre archivos y direcciones web con UseShellExecute = true.
  • Marshal.GetActiveObject ya no está. En el add-in se llega a la interfaz COM a través de Application.AcadApplication.
  • Assembly.LoadFile carga en un contexto de carga propio. Utilice Assembly.LoadFrom.
// Windows-1252 (listas de piezas antiguas, archivos CSV): en .NET 10 solo tras registrarla

#if NET

Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);

#endif

var ansi = Encoding.GetEncoding(1252);



// Abrir archivo o dirección web: UseShellExecute es false por defecto en .NET 10

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

Varias versiones de AutoCAD desde un mismo proyecto

Mientras sus clientes trabajen con AutoCAD 2024 y 2027, su add-in necesita dos versiones. No hacen falta dos proyectos. Con TargetFrameworks (en plural) y el valor net48;net10.0-windows, el SDK compila ambas versiones una tras otra. La ruta a las DLL de AutoCAD la define, para cada destino, un PropertyGroup con condición, y un símbolo propio como ACAD2024 separa en el código fuente los pocos puntos que difieren. Para net48 necesita además LangVersion con el valor latest y, si utiliza dynamic, una referencia a Microsoft.CSharp. La entrega se hace en carpetas separadas de un plug-in bundle que, con SeriesMin y SeriesMax, determina qué versión corresponde a cada versión de AutoCAD.

Errores típicos

  • Se sigue arrastrando el archivo de proyecto antiguo. Consecuencia: CS0579 y una lista de advertencias enigmáticas.
  • Faltan UseWPF y UseWindowsForms. Al principio solo aparece MSB3277; como muy tarde con una interfaz propia, un error.
  • Se pretende que una sola DLL sirva para AutoCAD 2026 y 2027. Debido a la ruptura binaria, no es posible.
  • La configuración de los usuarios sigue en formato BinaryFormatter y se pierde sin avisar.
  • Los archivos CSV o listas de piezas antiguos en Windows-1252 lanzan una NotSupportedException.
  • Se compila con Visual Studio 2022. Para AutoCAD 2027, Autodesk indica Visual Studio 2026.

Cómo le ayudamos

  • Formación: en la formación «AutoCAD .NET API con C#» construirá su add-in directamente para AutoCAD 2027 y .NET 10. Para BricsCAD existe la formación «BricsCAD .NET API con C#».
  • Revisión de add-ins AutoCAD 2027: analizamos su add-in y le decimos qué hay que hacer para .NET 10, desde el archivo de proyecto hasta las trampas en tiempo de ejecución.
  • Migración como proyecto: migramos su add-in, lo modernizamos al mismo tiempo o acompañamos a su equipo. Concierte una primera conversación.
  • El libro: todo se explica en detalle en el libro técnico de Ebi F. Eilber «AutoCAD .NET API», cuya publicación está prevista para 2027.

Fuente: Ebi F. Eilber, AutoCAD .NET API (libro técnico, publicación prevista para 2027)

CONTACT

Seleccione su idioma

Primera reuniónconcertarPrimera reuniónconcertar