.NET applications can be distributed in two deployable builds: debug and release.
You must choose the type of build to distribute your application in, both build types can be loaded into AutoCAD. Debug builds are usually only used when developing and testing an application, while a Release build is built when you are distributing an application for use on many computers inside or outside of your company.
After you have determined the build type of your .NET assembly, you must determine how it will be loaded into AutoCAD. A .NET assembly file can be loaded manually or with demand loading.
The key for the application can contain the following keys:
Demand load a .NET application
The following examples create and remove the required keys in the registry to load a .NET assembly file at the startup of AutoCAD. When the RegisterMyApp command is used, the required registry keys are created that will automatically load the application the next time AutoCAD starts. The UnregisterMyApp command removes the demand loading information from the registry so the application is not loaded the next time AutoCAD starts.
Imports Microsoft.Win32
Imports System.Reflection
Imports Autodesk.AutoCAD.Runtime
Imports Autodesk.AutoCAD.ApplicationServices
<CommandMethod("RegisterMyApp")> _
Public Sub RegisterMyApp()
'' Get the AutoCAD Applications key
Dim sProdKey As String = HostApplicationServices.Current.RegistryProductRootKey
Dim sAppName As String = "MyApp"
Dim regAcadProdKey As RegistryKey = Registry.CurrentUser.OpenSubKey(sProdKey)
Dim regAcadAppKey As RegistryKey = regAcadProdKey.OpenSubKey("Applications", True)
'' Check to see if the "MyApp" key exists
Dim subKeys() As String = regAcadAppKey.GetSubKeyNames()
For Each sSubKey As String In subKeys
'' If the application is already registered, exit
If (sSubKey.Equals(sAppName)) Then
regAcadAppKey.Close()
Exit Sub
End If
Next
'' Get the location of this module
Dim sAssemblyPath As String = Assembly.GetExecutingAssembly().Location
'' Register the application
Dim regAppAddInKey As RegistryKey = regAcadAppKey.CreateSubKey(sAppName)
regAppAddInKey.SetValue("DESCRIPTION", sAppName, RegistryValueKind.String)
regAppAddInKey.SetValue("LOADCTRLS", 14, RegistryValueKind.DWord)
regAppAddInKey.SetValue("LOADER", sAssemblyPath, RegistryValueKind.String)
regAppAddInKey.SetValue("MANAGED", 1, RegistryValueKind.DWord)
regAcadAppKey.Close()
End Sub
<CommandMethod("UnregisterMyApp")> _
Public Sub UnregisterMyApp()
'' Get the AutoCAD Applications key
Dim sProdKey As String = HostApplicationServices.Current.RegistryProductRootKey
Dim sAppName As String = "MyApp"
Dim regAcadProdKey As RegistryKey = Registry.CurrentUser.OpenSubKey(sProdKey)
Dim regAcadAppKey As RegistryKey = regAcadProdKey.OpenSubKey("Applications", True)
'' Delete the key for the application
regAcadAppKey.DeleteSubKeyTree(sAppName)
regAcadAppKey.Close()
End Sub
using Microsoft.Win32;
using System.Reflection;
using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.ApplicationServices;
[CommandMethod("RegisterMyApp")]
public void RegisterMyApp()
{
// Get the AutoCAD Applications key
string sProdKey = HostApplicationServices.Current.RegistryProductRootKey;
string sAppName = "MyApp";
RegistryKey regAcadProdKey = Registry.CurrentUser.OpenSubKey(sProdKey);
RegistryKey regAcadAppKey = regAcadProdKey.OpenSubKey("Applications", true);
// Check to see if the "MyApp" key exists
string[] subKeys = regAcadAppKey.GetSubKeyNames();
foreach (string subKey in subKeys)
{
// If the application is already registered, exit
if (subKey.Equals(sAppName))
{
regAcadAppKey.Close();
return;
}
}
// Get the location of this module
string sAssemblyPath = Assembly.GetExecutingAssembly().Location;
// Register the application
RegistryKey regAppAddInKey = regAcadAppKey.CreateSubKey(sAppName);
regAppAddInKey.SetValue("DESCRIPTION", sAppName, RegistryValueKind.String);
regAppAddInKey.SetValue("LOADCTRLS", 14, RegistryValueKind.DWord);
regAppAddInKey.SetValue("LOADER", sAssemblyPath, RegistryValueKind.String);
regAppAddInKey.SetValue("MANAGED", 1, RegistryValueKind.DWord);
regAcadAppKey.Close();
}
[CommandMethod("UnregisterMyApp")]
public void UnregisterMyApp()
{
// Get the AutoCAD Applications key
string sProdKey = HostApplicationServices.Current.RegistryProductRootKey;
string sAppName = "MyApp";
RegistryKey regAcadProdKey = Registry.CurrentUser.OpenSubKey(sProdKey);
RegistryKey regAcadAppKey = regAcadProdKey.OpenSubKey("Applications", true);
// Delete the key for the application
regAcadAppKey.DeleteSubKeyTree(sAppName);
regAcadAppKey.Close();
}