Well had to do something productive today so looked further into this.
Removed this....
Public Sub TrapWSCurrentChange(ByVal sender As Object, _
ByVal e As cadAppSrvs.SystemVariableChangedEventArgs)
If e.Name.Equals("WSCURRENT") Then createRibbon()
End Sub
Added this instead.....
Overridable Sub Initialize() Implements IExtensionApplication.Initialize
If Autodesk.Windows.ComponentManager.Ribbon Is Nothing Then
'load the custom Ribbon on startup, but at this point
'the Ribbon control is not available, so register for
'an event and wait
AddHandler Autodesk.Windows.ComponentManager.ItemInitialized, AddressOf ComponentManager_ItemInitialized
Else
'the assembly was loaded using NETLOAD, so the ribbon
'is available and we just create the ribbon
createRibbon()
End If
End Sub
Overridable Sub Terminate() Implements IExtensionApplication.Terminate
End Sub
Private Sub ComponentManager_ItemInitialized(ByVal sender As Object, ByVal e As RibbonItemEventArgs)
'now one Ribbon item is initialized, but the Ribbon control
'may not be available yet, so check if before
If Autodesk.Windows.ComponentManager.Ribbon IsNot Nothing Then
'ok, create Ribbon
createRibbon()
'and remove the event handler
RemoveHandler Autodesk.Windows.ComponentManager.ItemInitialized, AddressOf ComponentManager_ItemInitialized
End If
End Sub
Did that and worked like a charm. It will only load on the workspace that is currently open but if you change to a new workspace and close/reopen the program it will be there. So really for most purposes it works as intended. That document helped out lots Alex thanks.