Interop assembly causing incomplete content

Topics: Developer Forum
Jul 29, 2009 at 6:07 PM

I have a COM interop assembly that contains definitions for several interfaces for which I have a created an xml file with the appropriate member tags included to fully document these interfaces.  I have a .NET assembly with several classes that implement these interfaces.  I also have a SHFB project that creates a chm with the documentation from both of these assemblies.  All the generated documentation is correct except for one class in the .NET assembly.  This class implements one of the interfaces from the interop assembly as well as derives from UserControl.  The chm contains the appropriate summary, remarks, etc for the class but only contains the inherited properties and methods from UserControl.  It does not contain any of the method orproperties defined by the class or inherited from the interface.  If I remove the interop assembly from the SHFB project then this class is documented correctly.  There are no errors and the only warnings related to this class are ResolveReferenceLinksComponent2 warnings for topics that reference the properties and methods of the class. 

Any help would be greatly appreciated.

Jul 29, 2009 at 8:43 PM
Edited Jul 29, 2009 at 8:43 PM

Is the interface implemented explicitly?  If so, set the DocumentExplicitInterfaceImplementations project property to true.  Internal and private members are also not documented by default unless the related project properties are set to true too.



Jul 29, 2009 at 9:23 PM

No its not implemented explicitly and the methods and properties are public and I set all SHFB 'visibility' properties to true to see if something was filtering them out.  Also there are methods and properties that have nothing to do with the interface that are not showing up as well.

The weird thing is it documents correctly if the interop dll is not included in the project.

This may be a mrefbuilder issue, if I just run it with these two dlls on the command line, the is missing the properties and methods, but if I just do the one dll all is well.

Thanks Kevin

Jul 29, 2009 at 10:02 PM

Check the interop assembly with Reflector.  Are the interfaces marked with a CompilerGeneratedAttribute?  If so, that would explain it as MRefBuilder automatically filters out stuff that is compiler generated.



Jul 29, 2009 at 10:15 PM

The interface is not marked with that attribute.  Is there anything else mrefbuilder automatically filters out?

Jul 30, 2009 at 1:13 AM

Nothing I can think of off-hand.  Do you have an example that you can e-mail me that I can take a look at?  My e-mail address is in the About box in the GUI and in the footer of the pages in the help file.