Chris Eargle

Life Student of the Kodefu Arts

Fun with COM Accessibility

by chris 5. January 2008 19:02

If you're registering your .NET assembly for use in COM, there are a couple of traps that you should be aware of.

You create a class library, make your nifty class you want to instantiate from JavaScript, and compile it. Then you open up the bin folder in Visual Studio Command Prompt:

regasm.exe MyControls.dll

But it doesn't seem to do anything.

""RegAsm : warning RA0000 : No registry script will be produced since there are no
 types to register."

There are three things to check if this happens.

  1. Make sure your library marked ComVisible. Open up AssemblyInfo.cs, and make sure you have [assembly: ComVisible(True)]. If you only want a specific class to be visible, put a [ComVisible(True)] attribute above the class.
  2. Make sure your class is public.
  3. This is the one that seems to catch people off guard. You must have a parameterless constructor for your class. If you have added another constructor, be sure to explicitly declare the parameterless constructor.

After you've checked on those three items, the class should register successfully. Unless you set the ProgId attribute, the class by default will be "Namespace.ClassName."

Unfortunately, this may not be the end of it. If you want to use this within Internet Explorer, particularly if it's a nonvisible control, you may receive a warning about running unsafe ActiveX object. Even after you click the yellow bar at the top and tell it to run, it will fail:

"Automation server can't create object".

Searching around the Internet, I discovered that you need to implement the IObjectSafety interface. But the easiest solution is to give your assembly a strong name.

Currently rated 5.0 by 1 people

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

com, regasm, activex

Kodefu

E-mail | Kick it! | DZone it! | del.icio.us
Permalink | Comments (0) | Post RSSRSS comment feed

Related posts

Expression Blend 2 SP1 Preview ReleasedThe Expression Blend team announced the released of of Service Pack 1 for Expression Blend 2 today.Format SolutionA macro to format all the code in a solution.LINQPad BetaJospeh Albahari has released LINQPad, the easy way to LINQ!
Saving the comment

Add comment


(Will show your Gravatar icon)  

  Country flag

[b][/b] - [i][/i] - [u][/u]- [quote][/quote]



Live preview

November 21. 2008 16:20

Powered by BlogEngine.NET 1.3.1.0
Theme by Mads Kristensen

About the author

Chris Eargle Chris Eargle
Enterprise .NET developer in Columbia, SC.

E-mail me Send mail

Pages

  • Presentations

Twitter Updates

    Recent comments

    • Dev InTENsity (3)
      Chris Eargle wrote: Thanks for attending my presentations, Seth! In… [More]
    • Set Operations in MSBuild (1)
      FreeToDev wrote: Very nice post. Makes me wonder why I wrote tasks … [More]
    • Dev InTENsity (3)
      Seth Richards wrote: I saw both your C# 3.0 (I came up with the 'why ex… [More]
    • Dev InTENsity (3)
      Scott Ames wrote: I went to your presentation in Walthan for Code Ca… [More]
    • Generics Don't Make Me Sad (1)
      Matt Sheppard wrote: Cheers, I can't remember if I was aware of either… [More]
    • C# 3.0 Presentation (1)
      vijay wrote: Good post Thanks, Vijay [More]
    • Format Solution (4)
      Joe wrote: I added a couple of lines to FormatProjectItem() t… [More]
    • Sessions Galore (1)
      Lou wrote: I'll have to get you down here soon - I'll e-mail … [More]
    • Redeemed (3)
      Fred Beiderbecke wrote: It wasn't you, it was some of the others in the ro… [More]
    • South Florida Code Camp (1)
      Jason Meridth wrote: You've mentioned the only latest difference betwee… [More]

    Archive

    • 2008
      • November (3)
      • October (7)
      • September (8)
      • August (5)
      • July (1)
      • June (1)
      • April (4)
      • March (1)
      • February (4)
      • January (5)
    • 2007
      • December (5)
      • November (1)
      • October (6)
      • September (3)
      • August (1)
      • June (1)

    Tags

    • activex
    • addin
    • ado.net data services
    • ajax
    • architecture
    • astoria
    • azure
    • beta
    • bug
    • c#
    • code camp
    • com
    • consolas
    • continuous integration
    • conversion
    • ctp
    • database
    • deployment
    • design
    • design principles
    • download
    • ebook
    • entity
    • entlib
    • environment variables
    • expression blend
    • fail
    • font
    • framework
    • gadget
    • generics
    • grid
    • guidelines
    • icon
    • interfaces
    • jacksonville
    • lamdba
    • linq
    • linqtosql
    • list
    • live mesh
    • macro
    • mobile
    • msbuild
    • msdn
    • msi
    • mvc
    • powertoy
    • preview
    • properties
    • ray ozzie
    • refactoring
    • regasm
    • russ fustino
    • security
    • serialization
    • silverlight
    • snippet
    • source code
    • sql server
    • sqlmetal
    • starter kit
    • stream
    • string
    • trial
    • usability
    • ux
    • vbscript
    • vista
    • visual studio
    • vs2008
    • wcf
    • web
    • winforms
    • wpf
    • xml

    Categories

    • RSS feed for Bleeding EdgeBleeding Edge (5)
    • RSS feed for CEDGCEDG (2)
    • RSS feed for GeneralGeneral (1)
    • RSS feed for KodefuKodefu (19)
    • RSS feed for Path NotesPath Notes (7)
    • RSS feed for PresentationPresentation (5)
    • RSS feed for TechniquesTechniques (2)
    • RSS feed for TrainingTraining (5)
    • RSS feed for WeaponsWeapons (4)
    • RSS feed for ZenZen (5)

    Archive

    Blogroll

    • RSS feed for Structure Too BigStructure Too Big
      • Should you buy an exten...
      • WorldMaps Update
      • MSDN Roadshow -- coming...
    • RSS feed for Chris CraftChris Craft
      • Raleigh Code Camp Fall...
      • [PDANUG] Event Reminder...
      • MSDN Southern Fried Roa...
    Download OPML file OPML

    Disclaimer

    The opinions expressed herein are my own personal opinions and do not represent my employer's view in anyway.

    © Copyright 2008

    Sign in