Starting with the 2025 release, Civil 3D now offers support for modern .NET (formerly ".NET Core"). However, .NET framework-based plugins may encounter compatibility issues if they rely on features specific to the .NET framework. This section serves as a guide for both creating new Civil 3D .NET plugins and migrating existing .NET Framework-based plugin projects to .NET. It also provides debugging instructions within Civil 3D, outlines any known issues, and applies to subsequent .NET Core versions.
Scope & Strategy
- If your applications are
.NET Standard 2.x assemblies, no migration is required.
- If your application runs side by side with Civil 3D and has no runtime interoperability with Civil 3D or AutoCAD, you can continue to use the legacy .NET Framework for as long as it remains supported by the
Microsoft .NET Framework - Microsoft Lifecycle.
- As per claims such as , .NET framework DLLs can continue to work within .NET Core runtime as long as they don't use any API exclusive to .NET Framework. However, you should conduct thorough testing on your own to ensure it functions properly within the .NET Core environment if you choose to stay with .NET framework.
- .NET Framework DLLs can continue to work in the .NET runtime as long as they do not use APIs that are exclusive to .NET Framework. For more information, see
https://github.com/dotnet/runtime/issues/68041. If you choose to stay with .NET Framework, test your application thoroughly to confirm that it functions correctly in the .NET environment.
- To postpone further migration for a significant period, build .NET Standard 2.1 assemblies. Because .NET Standard is designed for cross-platform compatibility, it excludes Windows-specific features such as Windows Forms, WPF, and C++/CLI, which your application may require.
- To use the current .NET version, migrate your project and resolve any
breaking changes that it introduces.
- If migration to .NET is not viable for any reason, you might explore an out-of-process solution. This involves hosting your .NET framework applications in a separate executable with the .NET framework runtime and communicating with Civil 3D through inter-process communication. Keep in mind that this approach may introduce performance overhead and additional interoperability complexities.
Development Environment