7
Vote

Explicitly implemented generic interface member signatures differ between VS.NET compiler and MrefBuilder

description

The signature generated in the xml created by the VS.NET compiler (2008) looks like the following:
<member name="M:Namespace.ClassName.System#Collections#Generic#ICollection{TControl}#Contains(0)">
 
However, the signature generated by MrefBuilder looks like the following:
<member name="M:Namespace.ClassName.System#Collections#Generic#ICollection{T}#Contains(
0)">
 
The signature generated by VS.NET includes the full name of the type parameter. If this is a nested type, it includes the full name of that type. The result is that the documentation for such members cannot be found when generating documentation with Sandcastle.
 
I am using Sandcastle Help File Builder, and I have added some code to work around this issue, similar to what the CppCommentsFixup option does. I'm not sure if it will work in all cases, and would like to see this fixed at a lower level.

comments

cnahr wrote Jul 14, 2010 at 9:44 AM

This is probably the same bug I've been observing in my projects, and it's still present in the latest Sandcastle release. I have a few explicitly implemented members of generic interfaces in my class library that come up with missing summary and remarks sections in the generated Sandcastle documentation. In my case, those were two implementations of IEnumerable<KeyValuePair<TKey, TValue>>.GetEnumerator and two implementation of an interface defined by me. I assume this bug is already known to the Sandcastle team?

tom103 wrote Nov 13, 2011 at 11:18 PM

I just hit this bug too... please fix!
BTW, is there a next release planned? The last one is more than 1 year old...