Member list fix for SHFB Version Builder compatibility

Topics: References, VS2005 Transform
Sep 8 2010 at 11:53 AM

The latest builds of Sandcastle and SHFB cause the output to break when the Version Builder SHFB plug-in is used. Essentially, the frameworks filter is enabled and the member list can be filtered by this.

However, the version info is never actually applied onto the TR tag's data attribute in the member list during the transformation process; therefore, the framework filter always filters out every member. Thus, the member lists are always empty.

This is my first encounter with Sandcastle internals, so I am not sure if I fixed this the right way, but this works for me. I'll post the fix here so others can see it and so it or a better alternative can be included in the future patches. Here is my fix to VS2005 utilities_reference.xsl:

	  <xsl:if test=".//memberdata/@static='true' or not(/document/reference/typedata[@abstract='true' and @sealed='true'])">
		  <tr>
			  <xsl:attribute name="data">
				  <!-- ... existing stuff here ... -->
				  <!-- ... existing stuff here ... -->

				  <xsl:if test=".//versions">
					  <xsl:for-each select=".//versions/versions">
						  <!-- If we have at least one version in this framework, we list this framework. -->
						  <xsl:if test=".//version">
							  <xsl:value-of select="@name" />
							  <xsl:text>;</xsl:text>
						  </xsl:if>
					  </xsl:for-each>
				  </xsl:if>
			  </xsl:attribute>

Sep 8 2010 at 11:59 AM
Edited Sep 8 2010 at 11:59 AM

It just struck me that I not seeing inherited framework members in the same scenario, either.

Essentially, the issue appears to be similar but in the opposite way - since the framework filter is on and I do not have a checkbox there for .NET Framework, just my custom versions, the FilterMembersByFramework JavaScript method thinks I do not want to show .NET Framework members. Sigh.

Still, I do not want to show them in my scenario, so I do not need to find a fix for that issue. Let it be known that an issue exists, however.