3

I have created an Esri Addin toolbar in VS2010 to add layers and search an address file, this works fine. I want to add an extension that will replace text on a template MXD with the current users details. I have all the logic working in a base class and would like to add an extension that listens for the user to switch to layout view and then calls a function in my base class. I have everything working except that when I right click the project and add an extension the extension code never loads. I am probably missing something pretty basic, could someone please point it out to me.

[Guid("ff8f632e-79c3-4168-a591-441bb8f6c2d7")]
[ClassInterface(ClassInterfaceType.None)]
[ProgId("DCC_Toolbar_10.addUserDetailsextension")]
public class addUserDetailsextension : IExtension
{
    #region COM Registration Function(s)
    [ComRegisterFunction()]
    [ComVisible(false)]
    static void RegisterFunction(Type registerType)
    {
        // Required for ArcGIS Component Category Registrar support
        ArcGISCategoryRegistration(registerType);

        //
        // TODO: Add any COM registration code here
        //

    }

    [ComUnregisterFunction()]
    [ComVisible(false)]
    static void UnregisterFunction(Type registerType)
    {
        // Required for ArcGIS Component Category Registrar support
        ArcGISCategoryUnregistration(registerType);

        //
        // TODO: Add any COM unregistration code here
        //
    }

    #region ArcGIS Component Category Registrar generated code
    /// <summary>
    /// Required method for ArcGIS Component Category registration -
    /// Do not modify the contents of this method with the code editor.
    /// </summary>
    private static void ArcGISCategoryRegistration(Type registerType)
    {
        string regKey = string.Format("HKEY_CLASSES_ROOT\\CLSID\\{{{0}}}", registerType.GUID);
        MxExtension.Register(regKey);
    }
    /// <summary>
    /// Required method for ArcGIS Component Category unregistration -
    /// Do not modify the contents of this method with the code editor.
    /// </summary>
    private static void ArcGISCategoryUnregistration(Type registerType)
    {
        string regKey = string.Format("HKEY_CLASSES_ROOT\\CLSID\\{{{0}}}", registerType.GUID);
        MxExtension.Unregister(regKey);
    }

    #endregion
    #endregion
    private IApplication m_application;

    #region IExtension Members

    /// <summary>
    /// Name of extension. Do not exceed 31 characters
    /// </summary>
    public string Name
    {
        get
        {
            //TODO: Modify string to uniquely identify extension
            return "addUserDetailsextension";
        }
    }

    public void Shutdown()
    {
        //TODO: Clean up resources

        m_application = null;
    }

    public void Startup(ref object initializationData)
    {
        m_application = initializationData as IApplication;
        if (m_application == null)
            return;

        //Listening to document events
        SetUpDocumentEvent(m_application.Document);
    }

    #endregion

     #region Document events
    //Event member variable.
    private ESRI.ArcGIS.ArcMapUI.IDocumentEvents_Event m_docEvents = null;

    //Wiring.
    private void SetUpDocumentEvent(ESRI.ArcGIS.Framework.IDocument myDocument)
    {
        m_docEvents = myDocument as ESRI.ArcGIS.ArcMapUI.IDocumentEvents_Event;
        m_docEvents.NewDocument += new ESRI.ArcGIS.ArcMapUI.IDocumentEvents_NewDocumentEventHandler(OnNewDocument);
        m_docEvents.OpenDocument += new ESRI.ArcGIS.ArcMapUI.IDocumentEvents_OpenDocumentEventHandler(OnOpenDocument);
    }

    //Event handler methods.
    void OnNewDocument()
    {
        System.Diagnostics.Debug.WriteLine("New document event (C# Sample)");
    }

    void OnOpenDocument()
    {
        System.Diagnostics.Debug.WriteLine("Open document event (C# Sample)");
    }
    #endregion
}
2

It turns out I was adding the wrong kind of extension.

Correct Way

right click on project -> add -> new item, select ArcGis -> desktop Addins -> Addin Component -> extension.

Wrong Way

right click on project -> add -> new item, select ArcGis -> extending Arc Objects -> application extension. This was not obvious from anything i had read

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.