summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrew Arnott <andrewarnott@gmail.com>2012-03-11 21:16:19 -0700
committerAndrew Arnott <andrewarnott@gmail.com>2012-03-11 21:16:19 -0700
commit6c29eba4701e48222941981d499eb08686788a22 (patch)
tree5e8d9e3b9cc175d3b4e7f214e31d6b0e235467cb
parent4cc2523e6f2c2f9975d3328ae983cc509c449315 (diff)
downloadDotNetOpenAuth-6c29eba4701e48222941981d499eb08686788a22.zip
DotNetOpenAuth-6c29eba4701e48222941981d499eb08686788a22.tar.gz
DotNetOpenAuth-6c29eba4701e48222941981d499eb08686788a22.tar.bz2
Upgraded to Sandcastle June 2010 release (changeset 54478).
-rw-r--r--tools/Sandcastle/Presentation/Prototype/configuration/conceptual.config2
-rw-r--r--tools/Sandcastle/Presentation/Prototype/configuration/reference-core.config2
-rw-r--r--tools/Sandcastle/Presentation/Prototype/configuration/reference.config6
-rw-r--r--tools/Sandcastle/Presentation/Prototype/configuration/sandcastle.config4
-rw-r--r--tools/Sandcastle/Presentation/Prototype/copyOutput.bat2
-rw-r--r--tools/Sandcastle/Presentation/Shared/content/syntax_content.xml17
-rw-r--r--tools/Sandcastle/Presentation/Shared/transforms/utilities_dduexml.xsl7
-rw-r--r--tools/Sandcastle/Presentation/Shared/transforms/utilities_reference.xsl6
-rw-r--r--tools/Sandcastle/Presentation/vs2005/Content/reference_content.xml27
-rw-r--r--tools/Sandcastle/Presentation/vs2005/Content/shared_content.xml9
-rw-r--r--tools/Sandcastle/Presentation/vs2005/Content/shared_content_mshc.xml258
-rw-r--r--tools/Sandcastle/Presentation/vs2005/Scripts/CommonUtilities.js35
-rw-r--r--tools/Sandcastle/Presentation/vs2005/Scripts/Dropdown.js5
-rw-r--r--tools/Sandcastle/Presentation/vs2005/Scripts/SplitScreen.js6
-rw-r--r--tools/Sandcastle/Presentation/vs2005/Scripts/script_manifold.js53
-rw-r--r--tools/Sandcastle/Presentation/vs2005/Styles/Presentation.css41
-rw-r--r--tools/Sandcastle/Presentation/vs2005/configuration/conceptual.config2
-rw-r--r--tools/Sandcastle/Presentation/vs2005/configuration/reference-core.config2
-rw-r--r--tools/Sandcastle/Presentation/vs2005/configuration/reference.config6
-rw-r--r--tools/Sandcastle/Presentation/vs2005/configuration/sandcastle-mshc.config200
-rw-r--r--tools/Sandcastle/Presentation/vs2005/configuration/sandcastle-scbuild.config2
-rw-r--r--tools/Sandcastle/Presentation/vs2005/configuration/sandcastle-webref.config4
-rw-r--r--tools/Sandcastle/Presentation/vs2005/configuration/sandcastle.config2
-rw-r--r--tools/Sandcastle/Presentation/vs2005/copyOutput.bat2
-rw-r--r--tools/Sandcastle/Presentation/vs2005/icons/slMobile.gifbin0 -> 909 bytes
-rw-r--r--tools/Sandcastle/Presentation/vs2005/transforms/conceptualMetadataHelp30.xsl10
-rw-r--r--tools/Sandcastle/Presentation/vs2005/transforms/htmlBody.xsl8
-rw-r--r--tools/Sandcastle/Presentation/vs2005/transforms/main_conceptual.xsl6
-rw-r--r--tools/Sandcastle/Presentation/vs2005/transforms/main_reference.xsl50
-rw-r--r--tools/Sandcastle/Presentation/vs2005/transforms/main_sandcastle.xsl761
-rw-r--r--tools/Sandcastle/Presentation/vs2005/transforms/metadataHelp20.xsl68
-rw-r--r--tools/Sandcastle/Presentation/vs2005/transforms/metadataHelp30.xsl170
-rw-r--r--tools/Sandcastle/Presentation/vs2005/transforms/utilities_dduexml.xsl31
-rw-r--r--tools/Sandcastle/Presentation/vs2005/transforms/utilities_reference.xsl207
-rw-r--r--tools/Sandcastle/Source/BuildAssembler/BuildAssembler/BuildAssemblerConsole.csproj65
-rw-r--r--tools/Sandcastle/Source/BuildAssembler/BuildAssembler/Properties/AssemblyInfo.cs4
-rw-r--r--tools/Sandcastle/Source/BuildAssembler/BuildAssemblerLibrary/Properties/AssemblyInfo.cs4
-rw-r--r--tools/Sandcastle/Source/BuildAssembler/BuildComponents/BuildComponents.csproj1
-rw-r--r--tools/Sandcastle/Source/BuildAssembler/BuildComponents/GlobalSuppressions.cs38
-rw-r--r--tools/Sandcastle/Source/BuildAssembler/BuildComponents/MSHCComponent.cs368
-rw-r--r--tools/Sandcastle/Source/BuildAssembler/BuildComponents/Properties/AssemblyInfo.cs4
-rw-r--r--tools/Sandcastle/Source/BuildAssembler/BuildComponents/ResolveConceptualLinksComponent.cs8
-rw-r--r--tools/Sandcastle/Source/BuildAssembler/BuildComponents/ResolveReferenceLinksComponent2.cs6
-rw-r--r--tools/Sandcastle/Source/BuildAssembler/BuildComponents/SaveComponent.cs35
-rw-r--r--tools/Sandcastle/Source/BuildAssembler/BuildComponents/SnippetComponent.cs3
-rw-r--r--tools/Sandcastle/Source/BuildAssembler/BuildComponents/TargetCollection.cs3
-rw-r--r--tools/Sandcastle/Source/BuildAssembler/CopyComponents/Properties/AssemblyInfo.cs4
-rw-r--r--tools/Sandcastle/Source/BuildAssembler/SyntaxComponents/CPlusPlusDeclarationSyntax.cs10
-rw-r--r--tools/Sandcastle/Source/BuildAssembler/SyntaxComponents/CSharpDeclarationSyntax.cs180
-rw-r--r--tools/Sandcastle/Source/BuildAssembler/SyntaxComponents/FSharpDeclarationSyntax.cs175
-rw-r--r--tools/Sandcastle/Source/BuildAssembler/SyntaxComponents/GlobalSuppressions.cs6
-rw-r--r--tools/Sandcastle/Source/BuildAssembler/SyntaxComponents/JScriptDeclarationSyntax.cs1
-rw-r--r--tools/Sandcastle/Source/BuildAssembler/SyntaxComponents/Properties/AssemblyInfo.cs4
-rw-r--r--tools/Sandcastle/Source/BuildAssembler/SyntaxComponents/SyntaxGenerators.cs18
-rw-r--r--tools/Sandcastle/Source/BuildAssembler/SyntaxComponents/VisualBasicDeclarationSyntax.cs208
-rw-r--r--tools/Sandcastle/Source/BuildAssembler/SyntaxComponents/VisualBasicUsageSyntax.cs259
-rw-r--r--tools/Sandcastle/Source/CCI/ExceptionStrings.cs16
-rw-r--r--tools/Sandcastle/Source/CCI/Properties/AssemblyInfo.cs4
-rw-r--r--tools/Sandcastle/Source/ChmBuilder/Properties/AssemblyInfo.cs4
-rw-r--r--tools/Sandcastle/Source/CommandLine/Properties/AssemblyInfo.cs4
-rw-r--r--tools/Sandcastle/Source/DBCSFix/Properties/AssemblyInfo.cs4
-rw-r--r--tools/Sandcastle/Source/MRefBuilder/MRefBuilder.config3
-rw-r--r--tools/Sandcastle/Source/MRefBuilder/MRefWriter.cs4
-rw-r--r--tools/Sandcastle/Source/MRefBuilder/MrefBuilder.exe.config8
-rw-r--r--tools/Sandcastle/Source/MRefBuilder/Properties/AssemblyInfo.cs4
-rw-r--r--tools/Sandcastle/Source/MRefBuilder/XamlAttachedMembersAddIn.cs4
-rw-r--r--tools/Sandcastle/Source/Reflection/ApiFilter.cs6
-rw-r--r--tools/Sandcastle/Source/Reflection/ExternalDocumentedFilter.cs82
-rw-r--r--tools/Sandcastle/Source/Reflection/GlobalSuppressions.cs4
-rw-r--r--tools/Sandcastle/Source/Reflection/Properties/AssemblyInfo.cs4
-rw-r--r--tools/Sandcastle/Source/Sandcastle.sln155
-rw-r--r--tools/Sandcastle/Source/XmlCat/Properties/AssemblyInfo.cs4
-rw-r--r--tools/Sandcastle/Source/XslTransform/Properties/AssemblyInfo.cs4
-rw-r--r--tools/Sandcastle/Source/build.proj2
74 files changed, 2404 insertions, 1327 deletions
diff --git a/tools/Sandcastle/Presentation/Prototype/configuration/conceptual.config b/tools/Sandcastle/Presentation/Prototype/configuration/conceptual.config
index 36be43c..5783735 100644
--- a/tools/Sandcastle/Presentation/Prototype/configuration/conceptual.config
+++ b/tools/Sandcastle/Presentation/Prototype/configuration/conceptual.config
@@ -97,7 +97,7 @@
<!-- save the result -->
<component type="Microsoft.Ddue.Tools.SaveComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <save base=".\Output\html" path="concat($key,'.htm')" indent="true" omit-xml-declaration="true" />
+ <save base="%OutputHtml%" path="concat($key,'.htm')" indent="true" omit-xml-declaration="true" />
</component>
</components>
diff --git a/tools/Sandcastle/Presentation/Prototype/configuration/reference-core.config b/tools/Sandcastle/Presentation/Prototype/configuration/reference-core.config
index c1a5de2..6868dce 100644
--- a/tools/Sandcastle/Presentation/Prototype/configuration/reference-core.config
+++ b/tools/Sandcastle/Presentation/Prototype/configuration/reference-core.config
@@ -180,7 +180,7 @@
<!-- save the result -->
<component type="Microsoft.Ddue.Tools.SaveComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <save base=".\Output\html" path="concat(/html/head/meta[@name='file']/@content,'.htm')" indent="false" omit-xml-declaration="true" />
+ <save base="%OutputHtml%" path="concat(/html/head/meta[@name='file']/@content,'.htm')" indent="false" omit-xml-declaration="true" />
</component>
</components>
diff --git a/tools/Sandcastle/Presentation/Prototype/configuration/reference.config b/tools/Sandcastle/Presentation/Prototype/configuration/reference.config
index 01371ab..9fe8e4f 100644
--- a/tools/Sandcastle/Presentation/Prototype/configuration/reference.config
+++ b/tools/Sandcastle/Presentation/Prototype/configuration/reference.config
@@ -12,7 +12,7 @@
<!-- Copy in reflection data -->
<component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
<index name="reflection" value="/reflection/apis/api" key="@id" cache="10">
- <data base="%DXROOT%\Data\Reflection" recurse="true" files="*.xml" />
+ <data base="%FxReflectionData%" recurse="true" files="*.xml" />
<data files=".\reflection.xml" />
</index>
<copy name="reflection" source="*" target="/document/reference" />
@@ -142,7 +142,7 @@
<!-- resolve reference links -->
<component type="Microsoft.Ddue.Tools.ResolveReferenceLinksComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <targets base="%DXROOT%\Data\Reflection" recurse="true" files="*.xml" type="index" />
+ <targets base="%FxReflectionData%" recurse="true" files="*.xml" type="index" />
<targets files=".\reflection.xml" type="local" />
</component>
@@ -166,7 +166,7 @@
<!-- save the result -->
<component type="Microsoft.Ddue.Tools.SaveComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <save base=".\Output\html" path="concat(/html/head/meta[@name='file']/@content,'.htm')" indent="false" omit-xml-declaration="true" />
+ <save base="%OutputHtml%" path="concat(/html/head/meta[@name='file']/@content,'.htm')" indent="false" omit-xml-declaration="true" />
</component>
</components>
diff --git a/tools/Sandcastle/Presentation/Prototype/configuration/sandcastle.config b/tools/Sandcastle/Presentation/Prototype/configuration/sandcastle.config
index 255179e..116b427 100644
--- a/tools/Sandcastle/Presentation/Prototype/configuration/sandcastle.config
+++ b/tools/Sandcastle/Presentation/Prototype/configuration/sandcastle.config
@@ -50,7 +50,7 @@
<component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
<index name="comments" value="/doc/members/member" key="@name" cache="100">
<data base="%SystemRoot%\Microsoft.NET\Framework\v2.0.50727\" recurse="false" files="*.xml" />
- <data files=".\comments.xml" />
+ <data files="%DocumentationFile%" />
</index>
<copy name="comments" source="*" target="/document/comments" />
</component>
@@ -106,7 +106,7 @@
<!-- save the result -->
<component type="Microsoft.Ddue.Tools.SaveComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <save base =".\Output\html" path="concat(/html/head/meta[@name='file']/@content,'.htm')" indent="false" omit-xml-declaration="true" />
+ <save base ="%OutputHtml%" path="concat(/html/head/meta[@name='file']/@content,'.htm')" indent="false" omit-xml-declaration="true" />
</component>
</components>
diff --git a/tools/Sandcastle/Presentation/Prototype/copyOutput.bat b/tools/Sandcastle/Presentation/Prototype/copyOutput.bat
index c2458da..ee41193 100644
--- a/tools/Sandcastle/Presentation/Prototype/copyOutput.bat
+++ b/tools/Sandcastle/Presentation/Prototype/copyOutput.bat
@@ -3,7 +3,7 @@ if not exist Output\html mkdir Output\html
if not exist Output\icons mkdir Output\icons
if not exist Output\scripts mkdir Output\scripts
if not exist Output\styles mkdir Output\styles
-if not exist Output\media mkdir Output\media
+REM: if not exist Output\media mkdir Output\media
copy "%DXROOT%\Presentation\Prototype\icons\*" Output\icons
copy "%DXROOT%\Presentation\Prototype\scripts\*" Output\scripts
copy "%DXROOT%\Presentation\Prototype\styles\*" Output\styles
diff --git a/tools/Sandcastle/Presentation/Shared/content/syntax_content.xml b/tools/Sandcastle/Presentation/Shared/content/syntax_content.xml
index 8f92668..71e6196 100644
--- a/tools/Sandcastle/Presentation/Shared/content/syntax_content.xml
+++ b/tools/Sandcastle/Presentation/Shared/content/syntax_content.xml
@@ -1,20 +1,28 @@
<content xml:space="preserve">
+ <!-- Language independent -->
+ <item id="UnsupportedVarargs">does not support methods that use variable length arguments (varargs).
+The compiler automatically resolves calls to this method to the same method that uses a parameter array.</item>
+
<!-- C# messages -->
<item id="UnsupportedOperator_CSharp">C# does not support this operator.</item>
+ <item id="UnsupportedVarargs_CSharp">C# <include item="UnsupportedVarargs" /></item>
<!-- C++ messages -->
<item id="UnsupportedOperator_ManagedCPlusPlus">Visual C++ does not support this operator.</item>
<!-- F# messages -->
<item id="UnsupportedOperator_FSharp">F# does not support this operator.</item>
- <item id="UnsupportedCast_FSharp">F# does not support the declaration of new casting operators.</item>"
+ <item id="UnsupportedCast_FSharp">F# does not support the declaration of new casting operators.</item>
+ <item id="UnsupportedVarargs_FSharp">F# <include item="UnsupportedVarargs" /></item>
<!-- VB messages -->
<item id="UnsupportedUnsafe_VisualBasic">Visual Basic does not support APIs that consume or return unsafe types.</item>
<item id="UnsupportedOperator_VisualBasic">Visual Basic does not support this operator.</item>
<item id="UnsupportedStaticClass_VisualBasic">Visual Basic does not support the declaration of static classes.</item>
-
+ <item id="UnsupportedVarargs_VisualBasic">Visual Basic <include item="UnsupportedVarargs" /></item>
+ <item id="UnsupportedVarargs_VisualBasicUsage">Visual Basic <include item="UnsupportedVarargs" /></item>
+
<!-- J# messages -->
<item id="UnsupportedUnsafe_JSharp">J# does not support APIs that consume or return unsafe types.</item>
<item id="UnsupportedGeneric_JSharp">J# supports the use of generic APIs, but not the declaration of new ones.</item>
@@ -33,6 +41,7 @@
<item id="UnsupportedIndex_JScript">JScript does not support indexed properties.</item>
<item id="UnsupportedCast_JScript">JScript does not support the declaration of new casting operators.</item>
<item id="UnsupportedStaticConstructor_JScript">JScript does not support static constructors.</item>
+ <item id="UnsupportedVarargs_JScript">JScript <include item="UnsupportedVarargs" /></item>
<!-- JavaScript(Script#) messages-->
<item id="UnsupportedType_ScriptSharp">This type supports the Script# infrastructure and cannot be used directly from JavaScript.</item>
@@ -44,8 +53,8 @@
<item id="UnsupportedIndex_JavaScript">JavaScript does not support indexed properties.</item>
<item id="UnsupportedCast_JavaScript">JavaScript does not support the declaration of new casting operators.</item>
<!-- VB usages message -->
- <item id="UnsupportedUnsafe_VisualBasicUsage">Visual basic does not support APIs that consume or return unsafe types.</item>
- <item id="UnsupportedOperator_VisualBasicUsage">Visual basic does not support this operator.</item>
+ <item id="UnsupportedUnsafe_VisualBasicUsage">Visual Basic does not support APIs that consume or return unsafe types.</item>
+ <item id="UnsupportedOperator_VisualBasicUsage">Visual Basic does not support this operator.</item>
<item id="UnsupportedStaticClass_VisualBasicUsage">You do not need to declare an instance of a static class in order to access its members.</item>
<!-- XAML Syntax Boilerplate -->
diff --git a/tools/Sandcastle/Presentation/Shared/transforms/utilities_dduexml.xsl b/tools/Sandcastle/Presentation/Shared/transforms/utilities_dduexml.xsl
index 3825a63..3b9d1d6 100644
--- a/tools/Sandcastle/Presentation/Shared/transforms/utilities_dduexml.xsl
+++ b/tools/Sandcastle/Presentation/Shared/transforms/utilities_dduexml.xsl
@@ -233,8 +233,11 @@
</xsl:template>
<xsl:template match="ddue:codeEntityReference">
- <span sdata="cer" target="{string(.)}">
- <referenceLink target="{string(.)}">
+ <xsl:variable name="codeEntityReference">
+ <xsl:value-of select="translate(., ' ', '')" />
+ </xsl:variable>
+ <span sdata="cer" target="{string($codeEntityReference)}">
+ <referenceLink target="{string($codeEntityReference)}">
<xsl:if test="@qualifyHint">
<xsl:attribute name="show-container">
<xsl:value-of select="@qualifyHint" />
diff --git a/tools/Sandcastle/Presentation/Shared/transforms/utilities_reference.xsl b/tools/Sandcastle/Presentation/Shared/transforms/utilities_reference.xsl
index 1ef5792..c35c8c9 100644
--- a/tools/Sandcastle/Presentation/Shared/transforms/utilities_reference.xsl
+++ b/tools/Sandcastle/Presentation/Shared/transforms/utilities_reference.xsl
@@ -159,6 +159,9 @@
<xsl:text>, </xsl:text>
</xsl:if>
</xsl:for-each>
+ <xsl:if test="proceduredata[@varargs='true']">
+ <xsl:text>, ...</xsl:text>
+ </xsl:if>
<xsl:text>)</xsl:text>
</xsl:if>
</xsl:template>
@@ -247,6 +250,9 @@
<xsl:text>, </xsl:text>
</xsl:if>
</xsl:for-each>
+ <xsl:if test="proceduredata[@varargs='true']">
+ <xsl:text>, ...</xsl:text>
+ </xsl:if>
<xsl:text>)</xsl:text>
</xsl:if>
</xsl:template>
diff --git a/tools/Sandcastle/Presentation/vs2005/Content/reference_content.xml b/tools/Sandcastle/Presentation/vs2005/Content/reference_content.xml
index dfd9de0..60890e5 100644
--- a/tools/Sandcastle/Presentation/vs2005/Content/reference_content.xml
+++ b/tools/Sandcastle/Presentation/vs2005/Content/reference_content.xml
@@ -165,10 +165,6 @@
<item id="exceptionConditionHeader">Condition</item>
<item id="permissionNameHeader">Permission</item>
<item id="permissionDescriptionHeader">Description</item>
- <item id="requiresNameHeader">Requires</item>
- <item id="ensuresNameHeader">Ensures</item>
- <item id="ensuresOnThrowNameHeader">EnsuresOnThrow</item>
- <item id="invariantsNameHeader">Invariants</item>
<!-- filter control text -->
<item id="allTypesFilterLabel">All Types</item>
@@ -253,6 +249,8 @@
<item id="WinXpProfessional"><include item="WinXPPro"/></item>
<item id="Win2003Server"><include item="WinXPSvr"/></item>
<item id="NETCF"><include item="PocketPC"/>, <include item="SmartPhone"/>, <include item="WindowsCE"/></item>
+
+ <item id="XNA"><include item="Xbox360"/>, <include item="Zune" /></item>
<!-- Platform Notes -->
<item id="Platforms">Platforms</item>
@@ -376,11 +374,15 @@
<item id="IncludeNetfwMembers">Include .NET Framework Members</item>
<item id="IncludeNetcfwMembers">Include .NET Compact Framework Members</item>
<item id="IncludeXnafwMembers">Include XNA Framework Members</item>
+ <item id="IncludeSilverlightMembers">Include <include item="silverlight" /> Members</item>
+ <item id="IncludeSilverlight_mobileMembers">Include <include item="silverlight_mobile"/> Members</item>
<item id="memberFrameworksShowAll">Frameworks: Show All</item>
<item id="memberFrameworksMultiple">Frameworks: Multiple</item>
<item id="memberFrameworksNetfw">Frameworks: <include item="netfw"/> Only</item>
<item id="memberFrameworksNetcfw">Frameworks: <include item="netcfw"/> Only</item>
<item id="memberFrameworksXnafw">Frameworks: <include item="xnafw"/> Only</item>
+ <item id="memberFrameworksSilverlight">Frameworks: <include item="silverlight"/> Only</item>
+ <item id="memberFrameworksSilverlight_mobile">Frameworks: <include item="silverlight_mobile"/> Only</item>
<item id="requirementsNamespaceLayout">
<b>Namespace:</b>
@@ -425,6 +427,7 @@
<item id="derivedClasses">Derived Classes</item>
<item id="CompactFrameworkAltText">Supported by the .NET Compact Framework</item>
<item id="XNAFrameworkAltText">Supported by the XNA Framework</item>
+ <item id="SilverlightMobileAltText">Supported by <include item="silverlight_mobile"/></item>
<item id="ExplicitInterfaceImplementation">Explicit Interface Implementations</item>
<item id="ExplicitInterfaceAltText">Explicit interface implemetation</item>
@@ -462,7 +465,7 @@
<item id="outKeyword"><span class="languageSpecificText"><span class="cs"><span class="keyword">out</span> </span><span class="vb"><span class="keyword">Out</span> </span><span class="cpp"><span class="keyword">out</span> </span><span class="nu"><span class="keyword">out</span> </span><span class="fs"></span></span></item>
<item id="covariant">This type parameter is covariant. That is, you can use either the type you specified or any type that is more derived. </item>
- <item id="contravariant">This type parameter is contavariant. That is, you can use either the type you specified or any type that is less derived. </item>
+ <item id="contravariant">This type parameter is contravariant. That is, you can use either the type you specified or any type that is less derived. </item>
<item id="variance">For more information about covariance and contravariance, see <conceptualLink target="2678dc63-c7f9-4590-9ddc-0a4df684d42e" />.</item>
<!-- Non Cls Compliant boilerplate text-->
@@ -473,6 +476,9 @@
<item id="typeSecurityCriticalBoilerplate">This type has a SecurityCriticalAttribute attribute, which restricts it to internal use by the .NET Framework for Silverlight class library. Application code that uses any member of this type throws a MethodAccessException.</item>
<item id="memberSecurityCriticalBoilerplate">This member has a SecurityCriticalAttribute attribute, which restricts it to internal use by the .NET Framework for Silverlight class library. Application code that uses this member throws a MethodAccessException.</item>
<item id="securityCritical">[SECURITY CRITICAL] </item>
+
+ <!-- Overload page boilerplate -->
+ <item id="overloadSummary">This member is overloaded. For complete information about this member, including syntax, usage, and examples, click a name in the overload list.</item>
<!-- platform names that appear in the Platforms section on mref type and member pages
The id values must be in sync with the platform/@name values used in the manifold platformFilters.xml filter files.
@@ -482,7 +488,7 @@
<item id="WinME">Windows Millennium Edition</item>
<item id="WinSvr2000">Windows Server 2000 SP4</item>
<item id="WinXPPro64">Windows XP Professional x64 Edition</item>
- <item id="WinXP">Windows XP SP2</item>
+ <item id="WinXP">Windows XP SP3</item>
<item id="WindowsCE">Windows CE</item>
<item id="PocketPC">Windows Mobile for Pocket PC</item>
<item id="SmartPhone">Windows Mobile for Smartphone</item>
@@ -509,6 +515,7 @@
<item id="netcfw">.NET Compact Framework</item>
<item id="xnafw">XNA Framework</item>
<item id="silverlight">Silverlight</item>
+ <item id="silverlight_mobile">Silverlight for Windows Phone</item>
<!-- framework version ids
These shared content item strings are used in the Version Information section.
@@ -533,8 +540,14 @@
<item id="xnafw10">1.0</item>
<!-- silverlight version ids used in Version Information section. -->
- <item id="silverlight20">2.0</item>
<item id="silverlight10">1.0</item>
+ <item id="silverlight20">2.0</item>
+ <item id="silverlight_v3">3.0</item>
+ <item id="silverlight_v4">4.0</item>
+
+ <item id="silverlight_mobile_v1">Windows Phone OS 7.0</item>
+
+
<!-- Used in the Requirements section to display an xmlns URI for apis that can be used in XAML -->
<item id="xamlXmlnsRequirementsLayout"><b>XMLNS for XAML:</b> {0}</item>
diff --git a/tools/Sandcastle/Presentation/vs2005/Content/shared_content.xml b/tools/Sandcastle/Presentation/vs2005/Content/shared_content.xml
index 75d17fd..be57158 100644
--- a/tools/Sandcastle/Presentation/vs2005/Content/shared_content.xml
+++ b/tools/Sandcastle/Presentation/vs2005/Content/shared_content.xml
@@ -65,9 +65,6 @@
<!-- section titles -->
<item id="exceptionsTitle">Exceptions</item>
- <item id="contractsTitle">Contracts</item>
- <item id="setterTitle">Set</item>
- <item id="getterTitle">Get</item>
<item id="SeeAlso">See&#160;Also</item>
<item id="SeeAlsoTasks">Tasks</item>
<item id="SeeAlsoReference">Reference</item>
@@ -122,7 +119,7 @@
<item id="XAML">XAML</item>
<item id="usage">Usage</item>
<item id="AspNet">ASP.NET</item>
- <item id="VisualBasicDeclaration"><include item="VisualBasic"/> (Declaration)</item>
+ <item id="VisualBasicDeclaration"><include item="VisualBasic"/></item>
<item id="VisualBasicUsage"><include item="VisualBasic"/> (<include item="usage"/>)</item>
<item id="dropdownSeparator"><span>&#160;&#160;&#160;&#160;</span></item>
@@ -180,7 +177,7 @@
</includeAttribute>
comments
</a>
- about this topic to Microsoft.
+ about this topic to the DotNetOpenAuth group.
</span>
</item>
@@ -197,7 +194,7 @@
</includeAttribute>
feedback
</a>
- on this topic to the DotNetOpenAuth group.
+ on this topic to the DotNetOpenAuth team.
</span>
</item>
diff --git a/tools/Sandcastle/Presentation/vs2005/Content/shared_content_mshc.xml b/tools/Sandcastle/Presentation/vs2005/Content/shared_content_mshc.xml
new file mode 100644
index 0000000..a97a86b
--- /dev/null
+++ b/tools/Sandcastle/Presentation/vs2005/Content/shared_content_mshc.xml
@@ -0,0 +1,258 @@
+<content xml:space="preserve"
+ xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
+
+ <!-- paths -->
+ <item id="iconPath">icons/{0}</item>
+ <item id="scriptPath">scripts/{0}</item>
+ <item id="artPath">art/{0}</item>
+ <item id="stylePath">styles/{0}</item>
+
+ <!-- locale -->
+ <item id="locale">en-us</item>
+
+ <item id="desktopTechnologyAttribute">kbNetFramewk</item>
+ <item id="netcfTechnologyAttribute">kbNetCompactFramewk</item>
+ <item id="netcfDocSetAttribute">NetCompactFramework</item>
+ <item id="xnaTechnologyAttribute">kbXNA</item>
+ <item id="xnaDocSetAttribute">XNA</item>
+
+ <!-- header -->
+ <item id="header"><font color="DarkGray"></font><p/> </item>
+
+ <!-- freshness date -->
+ <item id="UpdateTitle"><font color="DarkGray">Updated: {0}</font></item>
+ <!-- if the TransformComponent of the BuildAssembler config file has the argument:
+ argument key="changeHistoryOptions" value="showDefaultFreshnessDate"
+ the "defaultFreshnessDate" item is used as the default freshness date for topics that don't have a Change History table. -->
+ <item id="defaultFreshnessDate"/>
+
+ <!-- change history table section-->
+ <item id="changeHistory">Change History</item>
+
+ <!-- topic title -->
+ <item id="nsrTitle">{0}</item>
+
+ <!-- alert titles -->
+ <item id="tipTitle"><b>Tip</b></item>
+ <item id="cautionTitle"><b>Caution</b></item>
+ <item id="securityTitle"><b>Security Note</b></item>
+ <item id="noteTitle"><b>Note</b></item>
+ <item id="importantTitle"><b>Important</b></item>
+ <item id="visualBasicTitle"><b>Visual Basic Note</b></item>
+ <item id="visualC#Title"><b>C# Note</b></item>
+ <item id="visualC++Title"><b>C++ Note</b></item>
+ <item id="visualJ#Title"><b>J# Note</b></item>
+
+ <!-- alert alt text -->
+ <item id="tipAltText">Tip</item>
+ <item id="cautionAltText">Caution note</item>
+ <item id="securityAltText">Security note</item>
+ <item id="noteAltText">Note</item>
+ <item id="importantAltText">Important note</item>
+ <item id="visualBasicAltText">Visual Basic note</item>
+ <item id="visualC#AltText">C# note</item>
+ <item id="visualC++AltText">C++ note</item>
+ <item id="visualJ#AltText">J# note</item>
+
+ <!-- code labels -->
+ <item id="CSharpLabel">C#</item>
+ <item id="VisualBasicLabel">Visual Basic</item>
+ <item id="ManagedCPlusPlusLabel">Visual C++</item>
+ <item id="JSharpLabel">J#</item>
+ <item id="JScriptLabel">JScript</item>
+ <item id="JavaScriptLabel">JavaScript</item>
+ <item id="XAMLLabel">XAML</item>
+
+ <!-- section titles -->
+ <item id="exceptionsTitle">Exceptions</item>
+ <item id="SeeAlso">See&#160;Also</item>
+ <item id="SeeAlsoTasks">Tasks</item>
+ <item id="SeeAlsoReference">Reference</item>
+ <item id="SeeAlsoConcepts">Concepts</item>
+ <item id="SeeAlsoOtherResources">Other Resources</item>
+
+ <!-- tool tips -->
+ <item id="collapseAllImage">CollapseAll image</item>
+ <item id="expandAllImage">ExpandAll image</item>
+ <item id="dropDownImage">DropDown image</item>
+ <item id="dropDownHoverImage">DropDownHover image</item>
+ <item id="collapseImage">Collapse image</item>
+ <item id="expandImage">Expand Image</item>
+ <item id="copyHoverImage">CopyHover image</item>
+ <item id="copyImage">Copy image</item>
+ <item id="footerImage">Footer image</item>
+
+ <!-- product labels -->
+ <item id="framework">.NET Framework</item>
+ <item id="compact">.NET Compact Framework</item>
+ <item id="everett">1.1</item>
+ <item id="whidbey">2.0</item>
+
+ <item id="copyCode">Copy Code</item>
+
+
+ <!-- dynamic Link Information -->
+ <item id="mshelpKTable"><MSHelp:ktable keywords='{0}' locHeader='Location' topicHeader = 'Topic' disambiguator='table' indexMoniker='!DefaultDynamicLinkIndex' /></item>
+
+ <item id="dynamicLinkInlinePreFixText">For more information, see </item>
+ <item id="dynamicLinkInlinePostFixText">.</item>
+ <item id="dynamicLinkInlineSeperatorText"> and </item>
+
+ <item id="remarksTitle">Remarks</item>
+
+ <!-- devlangs filter -->
+ <item id="devlangsDropdown">Code: {0}</item>
+ <item id="all">All</item>
+ <item id="multiple">Multiple</item>
+ <item id="VisualBasic">Visual Basic</item>
+ <item id="VBScript">Visual Basic Script</item>
+ <item id="CSharp">C#</item>
+ <item id="ManagedCPlusPlus">Visual C++</item>
+ <item id="JSharp">J#</item>
+ <item id="JScript">JScript</item>
+ <item id="xmlLang">Xml</item>
+ <item id="JavaScript">JavaScript</item>
+ <item id="FSharp">F#</item>
+ <item id="html">Html</item>
+ <item id="visualbasicANDcsharp"><include item="VisualBasic"/> and <include item="CSharp"/></item>
+ <item id="other"></item>
+ <item id="XAML">XAML</item>
+ <item id="usage">Usage</item>
+ <item id="AspNet">ASP.NET</item>
+ <item id="VisualBasicDeclaration"><include item="VisualBasic"/> (Declaration)</item>
+ <item id="VisualBasicUsage"><include item="VisualBasic"/> (<include item="usage"/>)</item>
+
+ <item id="dropdownSeparator"><span>&#160;&#160;&#160;&#160;</span></item>
+ <item id="nsrLinkSeparator"> </item>
+
+ <!-- language keywords -->
+ <item id="nullKeyword">a null reference (<span class="keyword">Nothing</span> in Visual Basic)</item>
+ <item id="staticKeyword"><span class="keyword">static</span> (<span class="keyword">Shared</span> in Visual Basic)</item>
+ <item id="virtualKeyword"><span class="keyword">virtual</span> (<span class="keyword">Overridable</span> in Visual Basic)</item>
+ <item id="trueKeyword"><span class="keyword">true</span> (<span class="keyword">True</span> in Visual Basic)</item>
+ <item id="falseKeyword"><span class="keyword">false</span> (<span class="keyword">False</span> in Visual Basic)</item>
+ <item id="abstractKeyword"><span class="keyword">abstract</span> (<span class="keyword">MustInherit</span> in Visual Basic)</item>
+
+ <!-- transforms insert K Index Technology qualifiers based on a conceptual topic's //metadata/attribute[@name='DocSet'] value />-->
+ <!-- If you add new docset values, the item/@id must = "kIndexTechTag_" + the lower-case DocSet name. -->
+ <item id="kIndexTermWithTechQualifier">{0}<include item="kIndexTechTag_{1}" />{2}</item>
+ <item id="kIndexTechTag_avalon"> [WPF]</item>
+ <item id="kIndexTechTag_wpf"> [WPF]</item>
+ <item id="kIndexTechTag_wcf"> [Windows Communication Foundation]</item>
+ <item id="kindextechtag_windowsforms"> [Windows Forms]</item>
+
+ <!-- values for MSHelp:Attr Name="TopicType" -->
+ <item id="TT_developerConceptualDocument">kbArticle</item>
+ <item id="TT_developerErrorMessageDocument">kbRef</item>
+ <item id="TT_developerGlossaryDocument">kbRef</item>
+ <item id="TT_developerHowToDocument">kbHowTo</item>
+ <item id="TT_developerOrientationDocument">kbOrient</item>
+ <item id="TT_developerReferenceWithSyntaxDocument">kbSyntax</item>
+ <item id="TT_developerReferenceWithoutSyntaxDocument">kbRef</item>
+ <item id="TT_developerSampleDocument">kbSampleProd</item>
+ <item id="TT_developerSDKTechnologyOverviewArchitectureDocument">kbArticle</item>
+ <item id="TT_developerSDKTechnologyOverviewCodeDirectoryDocument">kbOrient</item>
+ <item id="TT_developerSDKTechnologyOverviewOrientationDocument">kbOrient</item>
+ <item id="TT_developerSDKTechnologyOverviewScenariosDocument">kbHowTo</item>
+ <item id="TT_developerSDKTechnologyOverviewTechnologySummaryDocument">kbRef</item>
+ <item id="TT_developerTroubleshootingDocument">kbHowTo</item>
+ <item id="TT_developerUIReferenceDocument">kbRef</item>
+ <item id="TT_developerWalkthroughDocument">kbHowTo</item>
+ <item id="TT_developerWhitePaperDocument">kbArticle</item>
+ <item id="TT_developerXmlReference">kbSyntax</item>
+ <item id="TT_ManagedReference">apiref</item>
+
+ <item id="top">Top</item>
+
+ <!-- footer -->
+
+<!-- <item id="footer">
+ <p/>
+ <span>
+ Send
+ <a>
+ <includeAttribute name="href" item="MailToLink">
+ <parameter>{0}</parameter>
+ <parameter>{1}</parameter>
+ </includeAttribute>
+ comments
+ </a>
+ about this topic to Microsoft.
+ </span>
+ </item>
+
+ <item id="MailToLink">javascript:sendfeedback('Documentation Feedback (Sandcastle CTP): ', '{1}', '');</item>
+ -->
+
+<item id="footer">
+<span id="feedbackarea">
+ Send
+ <a>
+ <includeAttribute name="href" item="MailToLink">
+ <parameter>{2}</parameter>
+ <parameter>{3}</parameter>
+ </includeAttribute>
+ feedback
+ </a>
+ on this topic to the DotNetOpenAuth team.
+ </span>
+</item>
+
+<item id="feedbackHeader">
+ <span id="headfeedbackarea" class="feedbackhead">
+ <a>
+ <includeAttribute name="href" item="MailToLink">
+ <parameter>{0}</parameter>
+ <parameter>{1}</parameter>
+ </includeAttribute>
+ <include item="fb_headerFeedBack" />
+ </a>
+ </span>
+</item>
+<item id="MailToLink">javascript:SubmitFeedback('<include item="fb_alias" />','<include item="fb_product" />','<include item="fb_deliverable" />','{0}','{1}','<include item="fb_body" />','<include item="fb_subject" />');</item>
+
+<!-- 5 star rating feedback control in sandcastle scenario-->
+<!--
+<item id="footer">
+ <A NAME="feedback"></A>
+ <span id="fb" class="feedbackcss">
+ <div ID="feedbackarea">
+ <FORM METHOD="post" ENCTYPE="text/plain" NAME="formRating">
+ <H5><include item="fb_Title" /></H5>
+ <P><include item="fb_Introduction" /></P>
+ <table>
+ <tr>
+ <td><include item="fb_Poor" /></td>
+ <td class="fbinputId" align="right">1<BR/><input name="fbRating" type="radio" value="0"></input></td>
+ <td class="fbinputId" align="right">2<BR/><input name="fbRating" type="radio" value="0"></input></td>
+ <td class="fbinputId" align="right">3<BR/><input name="fbRating" type="radio" value="0"></input></td>
+ <td class="fbinputId" align="right">4<BR/><input name="fbRating" type="radio" value="0"></input></td>
+ <td class="fbinputId" align="right">5<BR/><input name="fbRating" type="radio" value="0"></input></td>
+ <td><include item="fb_Excellent" /></td>
+ </tr>
+ </table>
+ <P>
+ <include item="fb_EnterFeedbackText" />
+ <input id="submitFeedback" type="button"><includeAttribute name="value" item="fb_Send"/><includeAttribute name="onclick" item="MailtoLink" /></input>
+ </P>
+ </FORM>
+ </div>
+ </span>
+</item>
+
+<item id="feedbackHeader">
+ <span id="headfeedbackarea" class="feedbackhead">
+ <a href="#feedback" ID="IconFB" Target="_self">
+ <include item="fb_headerFeedBack" />
+ </a>
+ </span>
+</item>
+
+<item id="MailToLink">javascript:SubmitFeedback('<include item="feedback_alias" />','<include item="feedback_product" />','<include item="feedback_deliverable" />','<include item="feedback_fileVersion" />','<include item="feedback_topicVersion" />','<include item="feedback_body" />','<include item="feedback_subject" />');</item>
+-->
+
+<item id="copyrightStatement"><include item="copyrightText"/></item>
+
+<item id="copyrightText">&#169; 2005 Microsoft Corporation. All rights reserved.</item>
+
+</content>
diff --git a/tools/Sandcastle/Presentation/vs2005/Scripts/CommonUtilities.js b/tools/Sandcastle/Presentation/vs2005/Scripts/CommonUtilities.js
index 42a9360..7b4e167 100644
--- a/tools/Sandcastle/Presentation/vs2005/Scripts/CommonUtilities.js
+++ b/tools/Sandcastle/Presentation/vs2005/Scripts/CommonUtilities.js
@@ -312,25 +312,24 @@ function ShowBasedOnInheritance(memberdata)
return false;
}
-function ShowBasedOnFramework(memberdata)
-{
- var isNetfw = (memberdata.indexOf("notNetfw") == -1);
- var isNetcfw = (memberdata.indexOf("netcfw") != -1);
- var isXnafw = (memberdata.indexOf("xnafw") != -1);
-
- var netfwCheck = docSettings["netfwCheckbox"];
- var netcfwCheck = docSettings["netcfwCheckbox"];
- var xnafwCheck = docSettings["xnafwCheckbox"];
-
- // if all the checkboxes are null, it means we have no framework filter; so return true to show member by default
- if (netfwCheck == null && netcfwCheck == null && xnafwCheck == null)
- return true;
+function ShowBasedOnFramework(memberdata) {
- var showNetfw = (netfwCheck == "on");
- var showNetcfw = (netcfwCheck == "on");
- var showXnafw = (xnafwCheck == "on");
-
- if ( (isNetfw && showNetfw) || (isNetcfw && showNetcfw) || (isXnafw && showXnafw) )
+ var splitData = memberdata.split(";");
+ var foundNotNetfw = false;
+ var frameworkFilter = document.getElementById('memberFrameworksMenu') != null;
+
+ for (var i = 0; i < splitData.length; i++) {
+
+ if (splitData[i] == "notNetfw") {
+ foundNotNetfw = true;
+ continue;
+ }
+ if (docSettings[splitData[i] + "Checkbox"] == "on")
+ return true;
+ }
+ if (!foundNotNetfw && docSettings["netfwCheckbox"] == "on")
+ return true;
+ if (foundNotNetfw && docSettings["netfwCheckbox"] == null && !frameworkFilter)
return true;
return false;
diff --git a/tools/Sandcastle/Presentation/vs2005/Scripts/Dropdown.js b/tools/Sandcastle/Presentation/vs2005/Scripts/Dropdown.js
index 34872b7..c52203d 100644
--- a/tools/Sandcastle/Presentation/vs2005/Scripts/Dropdown.js
+++ b/tools/Sandcastle/Presentation/vs2005/Scripts/Dropdown.js
@@ -1,11 +1,12 @@
// Dropdown menu control
-function Dropdown(activatorId, dropdownId) {
+function Dropdown(activatorId, dropdownId, containerId) {
// store activator and dropdown elements
this.activator = document.getElementById(activatorId);
this.dropdown = document.getElementById(dropdownId);
+ this.container = document.getElementById(containerId);
this.activatorImage = document.getElementById(activatorId + "Image");
// wire up show/hide events
@@ -53,7 +54,7 @@ Dropdown.prototype.reposition = function(e) {
var offsetTop = 0;
var offsetElement = this.activator;
- while (offsetElement) {
+ while (offsetElement && offsetElement != this.container) {
offsetLeft += offsetElement.offsetLeft;
offsetTop += offsetElement.offsetTop;
offsetElement = offsetElement.offsetParent;
diff --git a/tools/Sandcastle/Presentation/vs2005/Scripts/SplitScreen.js b/tools/Sandcastle/Presentation/vs2005/Scripts/SplitScreen.js
index 3b04f0a..8ac17d1 100644
--- a/tools/Sandcastle/Presentation/vs2005/Scripts/SplitScreen.js
+++ b/tools/Sandcastle/Presentation/vs2005/Scripts/SplitScreen.js
@@ -6,8 +6,8 @@
this.scrollingRegion = document.getElementById(scrollingRegionId);
// set the scrolling settings
- document.body.style.margin = "0px";
- document.body.style.overflow = "hidden";
+ this.scrollingRegion.parentElement.style.margin = "0px";
+ this.scrollingRegion.parentElement.style.overflow = "hidden";
this.scrollingRegion.style.overflow = "auto";
// fix the size of the scrolling region
@@ -25,5 +25,5 @@
} else {
this.scrollingRegion.style.height = 0;
}
- this.scrollingRegion.style.width = document.body.clientWidth;
+ this.scrollingRegion.style.width = this.scrollingRegion.parentElement.clientWidth;
}
diff --git a/tools/Sandcastle/Presentation/vs2005/Scripts/script_manifold.js b/tools/Sandcastle/Presentation/vs2005/Scripts/script_manifold.js
index ebc63a7..9edc2a6 100644
--- a/tools/Sandcastle/Presentation/vs2005/Scripts/script_manifold.js
+++ b/tools/Sandcastle/Presentation/vs2005/Scripts/script_manifold.js
@@ -1,8 +1,7 @@
-window.onload=LoadPage;
-window.onunload=Window_Unload;
-//window.onresize=ResizeWindow;
-window.onbeforeprint = set_to_print;
-window.onafterprint = reset_form;
+registerEventHandler(window, 'load', getInstanceDelegate(this, "LoadPage"));
+registerEventHandler(window, 'unload', getInstanceDelegate(this, "Window_Unload"));
+registerEventHandler(window, 'beforeprint', getInstanceDelegate(this, "set_to_print"));
+registerEventHandler(window, 'afterprint', getInstanceDelegate(this, "reset_form"));
var scrollPos = 0;
@@ -214,6 +213,7 @@ function OnLoadImage(eventObj)
*/
var docSettings;
+var mainSection;
function LoadPage()
{
@@ -246,7 +246,11 @@ function LoadPage()
SetCollapseAll();
// split screen
- var screen = new SplitScreen('header', 'mainSection');
+ mainSection = document.getElementById("mainSection");
+ if (!mainSection)
+ mainSection = document.getElementById("mainSectionMHS");
+
+ var screen = new SplitScreen('header', mainSection.id);
// init devlang filter checkboxes
SetupDevlangsFilter();
@@ -256,8 +260,12 @@ function LoadPage()
// init memberlist platforms filter checkboxes, e.g. .Net Framework, CompactFramework, XNA, Silverlight, etc.
SetupMemberFrameworksFilter();
-
- var mainSection = document.getElementById("mainSection");
+
+ // removes blank target from in the self links for Microsoft Help System
+ RemoveTargetBlank();
+
+ // set gardien image to the bottom of header or Microsoft Help System
+ SetBackground('headerBottom');
// vs70.js did this to allow up/down arrow scrolling, I think
try { mainSection.setActive(); } catch(e) { }
@@ -277,6 +285,16 @@ function Window_Unload()
SaveSections();
}
+// removes blank target from in the self links for Microsoft Help System
+function RemoveTargetBlank() {
+ var elems = document.getElementsByTagName("a");
+ for (var i = 0; i < elems.length; i++) {
+ if (elems[i].getAttribute("target") == "_blank" &&
+ elems[i].getAttribute("href", 2).indexOf("#", 0) == 0)
+ elems[i].removeAttribute("target");
+ }
+}
+
function set_to_print()
{
//breaks out of divs to print
@@ -295,7 +313,7 @@ function set_to_print()
document.all[i].style.margin = "0px 0px 0px 0px";
document.all[i].style.width = "100%";
}
- if (document.all[i].id == "mainSection")
+ if (document.all[i].id == mainSection.id)
{
document.all[i].style.overflow = "visible";
document.all[i].style.top = "5px";
@@ -357,7 +375,7 @@ function SetupDevlangsFilter()
{
// setup the dropdown menu
devlangsMenu = new CheckboxMenu("devlangsMenu", docSettings, persistKeys, globals);
- devlangsDropdown = new Dropdown('devlangsDropdown', 'devlangsMenu');
+ devlangsDropdown = new Dropdown('devlangsDropdown', 'devlangsMenu', 'header');
dropdowns.push(devlangsDropdown);
// update the label of the dropdown menu
@@ -408,7 +426,7 @@ function SetupMemberOptionsFilter()
{
if (document.getElementById('memberOptionsMenu') != null) {
memberOptionsMenu = new CheckboxMenu("memberOptionsMenu", docSettings, persistKeys, globals);
- memberOptionsDropdown = new Dropdown('memberOptionsDropdown', 'memberOptionsMenu');
+ memberOptionsDropdown = new Dropdown('memberOptionsDropdown', 'memberOptionsMenu', 'header');
dropdowns.push(memberOptionsDropdown);
// update the label of the dropdown menu
@@ -419,12 +437,23 @@ function SetupMemberOptionsFilter()
}
}
+// sets the background to an element for Microsoft Help 3 system
+function SetBackground(id) {
+ var elem = document.getElementById(id);
+ if (elem) {
+ var img = document.getElementById(id + "Image");
+ if (img) {
+ elem.setAttribute("background", img.getAttribute("src"));
+ }
+ }
+}
+
function SetupMemberFrameworksFilter()
{
if (document.getElementById('memberFrameworksMenu') != null)
{
memberFrameworksMenu = new CheckboxMenu("memberFrameworksMenu", docSettings, persistKeys, globals);
- memberFrameworksDropdown = new Dropdown('memberFrameworksDropdown', 'memberFrameworksMenu');
+ memberFrameworksDropdown = new Dropdown('memberFrameworksDropdown', 'memberFrameworksMenu', 'header');
dropdowns.push(memberFrameworksDropdown);
// update the label of the dropdown menu
diff --git a/tools/Sandcastle/Presentation/vs2005/Styles/Presentation.css b/tools/Sandcastle/Presentation/vs2005/Styles/Presentation.css
index 5fe081f..c2e651e 100644
--- a/tools/Sandcastle/Presentation/vs2005/Styles/Presentation.css
+++ b/tools/Sandcastle/Presentation/vs2005/Styles/Presentation.css
@@ -128,6 +128,10 @@ a:hover {
color: #3366FF;
}
+div#header a, div#mainSectionMHS a {
+ text-decoration: underline;
+}
+
code
{
font-family: Monospace, Courier New, Courier;
@@ -161,7 +165,13 @@ div#mainSection
font-size: 62.5%;
width: 100%;
}
-html>body #mainSection
+div#mainSectionMHS
+{
+ font-family: Verdana;
+ font-size: 81%;
+ width: 100%;
+}
+html>body #mainSection, html>body #mainSectionMHS
{
font-size:73%;
width: 100%;
@@ -194,6 +204,7 @@ div#mainBody p, div#mainBody ol, div#mainBody ul, div#mainBody dl
/* Applies to the entire non-scrolling header region. */
div#header
{
+ font-family: Verdana;
background-color: #FFFFFF;
padding-top: 0;
padding-bottom: 0;
@@ -246,7 +257,7 @@ div#header table#bottomTable
/* Formats the first column--the one that displays icons--in mref list tables (such as Public Constructors,
Protected Constructors, Public Properties, Protected Properties, and so on). */
-div#mainSection table td.imageCell
+div#mainSection table td.imageCell, div#mainSectionMHS table td.imageCell
{
white-space: nowrap;
}
@@ -489,6 +500,7 @@ div.seeSection
/* All <h1> headings. */
h1.heading
{
+ font-family: Verdana;
color: #000000;
font-size: 130%;
}
@@ -508,6 +520,7 @@ h1.heading
/* Formats the titles of author-generated tables. */
h3.subHeading
{
+ font-family: Verdana;
color: #000000;
font-size: 120%;
font-weight:800;
@@ -515,6 +528,7 @@ h3.subHeading
h3.procedureSubHeading
{
+ font-family: Verdana;
color: #000000;
font-size: 120%;
}
@@ -522,6 +536,7 @@ h3.procedureSubHeading
/* Formats the titles of all subsections. */
h4.subHeading
{
+ font-family: Verdana;
color: #000000;
font-size: 110%;
font-weight:800;
@@ -564,7 +579,7 @@ img.note
/*------------------------------ Begin General Table Styles -------------------------------*/
-div#mainSection table
+div#mainSection table, div#mainSectionMHS table
{
border: 0;
font-size: 100%;
@@ -573,12 +588,12 @@ div#mainSection table
margin-bottom: 5px;
}
-div#mainSection table tr
+div#mainSection table tr, div#mainSectionMHS table tr
{
vertical-align: top;
}
-div#mainSection table th
+div#mainSection table th, div#mainSectionMHS table th
{
background-color: #EFEFF7;
border-bottom: 1px solid #C8CDDE;
@@ -589,7 +604,7 @@ div#mainSection table th
text-align: left;
}
-div#mainSection table td
+div#mainSection table td, div#mainSectionMHS table td
{
background-color: #F7F7FF;
border-bottom: 1px solid #D5D5D3;
@@ -600,7 +615,7 @@ div#mainSection table td
/* Formats the first column--the one that displays icons--in mref list tables (such as Public Constructors,
Protected Constructors, Public Properties, Protected Properties, and so on). */
-div#mainSection table td.imageCell
+div#mainSection table td.imageCell, div#mainSectionMHS table td.imageCell
{
white-space: nowrap;
}
@@ -775,6 +790,10 @@ pre.viewCode
font-size: 70%;
}
+div.OH_outerContent #devlangsMenu {
+ font-size: 91%;
+}
+
#memberOptionsMenu {
position: absolute;
visibility: hidden;
@@ -789,6 +808,10 @@ pre.viewCode
font-size: 70%;
}
+div.OH_outerContent #memberOptionsMenu {
+ font-size: 91%;
+}
+
#memberFrameworksMenu {
position: absolute;
visibility: hidden;
@@ -803,6 +826,10 @@ pre.viewCode
font-size: 70%;
}
+div.OH_outerContent #memberFrameworksMenu {
+ font-size: 91%;
+}
+
/* Applies to the checkbox labels in the filter drop-downs for devlang, member options, and member platforms. */
.checkboxLabel
{
diff --git a/tools/Sandcastle/Presentation/vs2005/configuration/conceptual.config b/tools/Sandcastle/Presentation/vs2005/configuration/conceptual.config
index 7025e18..58a4d6e 100644
--- a/tools/Sandcastle/Presentation/vs2005/configuration/conceptual.config
+++ b/tools/Sandcastle/Presentation/vs2005/configuration/conceptual.config
@@ -172,7 +172,7 @@
<!-- save the result -->
<component type="Microsoft.Ddue.Tools.SaveComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <save base=".\Output\html" path="concat($key,'.htm')" link="../html" indent="true" omit-xml-declaration="true" />
+ <save base="%OutputHtml%" path="concat($key,'.htm')" link="../html" indent="true" omit-xml-declaration="true" />
</component>
<!-- record file creation events -->
diff --git a/tools/Sandcastle/Presentation/vs2005/configuration/reference-core.config b/tools/Sandcastle/Presentation/vs2005/configuration/reference-core.config
index 56a14dd..fcf50bc 100644
--- a/tools/Sandcastle/Presentation/vs2005/configuration/reference-core.config
+++ b/tools/Sandcastle/Presentation/vs2005/configuration/reference-core.config
@@ -361,7 +361,7 @@
<!-- save the result -->
<component type="Microsoft.Ddue.Tools.SaveComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <save base=".\Output\html" path="concat(/html/head/meta[@name='file']/@content,'.htm')" link="../html" indent="true" omit-xml-declaration="true" />
+ <save base="%OutputHtml%" path="concat(/html/head/meta[@name='file']/@content,'.htm')" link="../html" indent="true" omit-xml-declaration="true" />
</component>
<!-- record file creation events -->
diff --git a/tools/Sandcastle/Presentation/vs2005/configuration/reference.config b/tools/Sandcastle/Presentation/vs2005/configuration/reference.config
index 775ec5b..2b93c16 100644
--- a/tools/Sandcastle/Presentation/vs2005/configuration/reference.config
+++ b/tools/Sandcastle/Presentation/vs2005/configuration/reference.config
@@ -17,7 +17,7 @@
<!-- Copy in reflection data -->
<component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
<index name="reflection" value="/reflection/apis/api" key="@id" cache="10">
- <data base="%DXROOT%\Data\Reflection" recurse="true" files="*.xml" />
+ <data base="%FxReflectionData%" recurse="true" files="*.xml" />
<data files=".\reflection.xml" />
</index>
<copy name="reflection" source="*" target="/document/reference" />
@@ -308,7 +308,7 @@
<!-- resolve reference links -->
<component type="Microsoft.Ddue.Tools.ResolveReferenceLinksComponent2" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <!-- <targets base="%DXROOT%\Data\Reflection" recurse="true" files="*.xml" type="index" /> -->
+ <!-- <targets base="%FxReflectionData%" recurse="true" files="*.xml" type="index" /> -->
<targets files=".\reflection.xml" type="local" />
</component>
@@ -332,7 +332,7 @@
<!-- save the result -->
<component type="Microsoft.Ddue.Tools.SaveComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <save base=".\Output\html" path="concat(/html/head/meta[@name='file']/@content,'.htm')" link="../html" indent="true" omit-xml-declaration="true" />
+ <save base="%OutputHtml%" path="concat(/html/head/meta[@name='file']/@content,'.htm')" link="../html" indent="true" omit-xml-declaration="true" />
</component>
<!-- record file creation events -->
diff --git a/tools/Sandcastle/Presentation/vs2005/configuration/sandcastle-mshc.config b/tools/Sandcastle/Presentation/vs2005/configuration/sandcastle-mshc.config
new file mode 100644
index 0000000..624a268
--- /dev/null
+++ b/tools/Sandcastle/Presentation/vs2005/configuration/sandcastle-mshc.config
@@ -0,0 +1,200 @@
+<configuration>
+ <dduetools>
+ <builder>
+ <components>
+
+ <!-- Create skeleton document -->
+ <component type="Microsoft.Ddue.Tools.CopyFromFileComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <data file="%DXROOT%\Presentation\vs2005\Transforms\skeleton.xml" />
+ <copy source="/*" target="/" />
+ </component>
+
+ <!-- Copy in reflection data -->
+ <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <index name="reflection" value="/reflection/apis/api" key="@id" cache="10">
+ <data base="%FxReflectionData%" recurse="true" files="*.xml" />
+ <data files="%ReflectionXmlFile%" />
+ </index>
+ <copy name="reflection" source="*" target="/document/reference" />
+ </component>
+
+ <!-- Copy in container data -->
+ <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <copy name="reflection" key="string(/document/reference/containers/namespace/@api)" source="*[not(local-name()='elements')]" target="/document/reference/containers/namespace" />
+ </component>
+ <component type="Microsoft.Ddue.Tools.ForEachComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <variable expression="/document/reference/containers//type/@api" />
+ <components>
+ <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <copy name="reflection" source="apidata|typedata|templates|attributes" target="/document/reference/containers//type[@api=$key]" />
+ </component>
+ </components>
+ </component>
+
+ <!-- Copy in explicitInterfaceImplemented reflection data -->
+ <component type="Microsoft.Ddue.Tools.ForEachComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <variable expression="/document/reference/implements/member/@api | /document/reference/implements//type/@api" />
+ <components>
+ <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <copy name="reflection" source="apidata" target="/document/reference/implements//*[@api=$key and not(apidata)]" />
+ <copy name="reflection" source="templates" target="/document/reference/implements//*[@api=$key and not(apidata) and not(specialization)]" />
+ </component>
+ </components>
+ </component>
+
+ <!-- Copy in extension method template/type data -->
+ <component type="Microsoft.Ddue.Tools.ForEachComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <variable expression="/document/reference/elements//element[@source='extension']/templates//type/@api" />
+ <components>
+ <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <copy name="reflection" source="apidata" target="/document/reference/elements//element[@source='extension']/templates//type[boolean(@api=$key) and not(apidata)]" />
+ <copy name="reflection" source="templates" target="/document/reference/elements//element[@source='extension']/templates//type[boolean(@api=$key) and not(apidata) and not(specialization)]" />
+ </component>
+ </components>
+ </component>
+
+ <!-- Copy in parameter data -->
+ <component type="Microsoft.Ddue.Tools.ForEachComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <variable expression="/document/reference/parameters/parameter//type/@api" />
+ <components>
+ <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <copy name="reflection" source="apidata" target="/document/reference/parameters/parameter//type[boolean(@api=$key) and not(apidata)]" />
+ </component>
+ </components>
+ </component>
+
+ <!-- Copy in templates type reflection data -->
+ <component type="Microsoft.Ddue.Tools.ForEachComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <variable expression="/document/reference/templates//type/@api" />
+ <components>
+ <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <copy name="reflection" source="apidata" target="/document/reference/templates//type[@api=$key]" />
+ <copy name="reflection" source="templates" target="/document/reference/templates//type[@api=$key and not(specialization)]" />
+ </component>
+ </components>
+ </component>
+
+ <!-- Copy in return type reflection data -->
+ <component type="Microsoft.Ddue.Tools.ForEachComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <variable expression="/document/reference/returns//type/@api" />
+ <components>
+ <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <copy name="reflection" source="apidata|typedata|family|templates|containers|attributes" target="/document/reference/returns//type[@api=$key]" />
+ </component>
+ </components>
+ </component>
+
+ <!-- Copy in event handler type reflection data -->
+ <component type="Microsoft.Ddue.Tools.ForEachComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <variable expression="/document/reference/eventhandler/type/@api" />
+ <components>
+ <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <copy name="reflection" source="apidata|typedata|family|templates|containers|attributes" target="/document/reference/eventhandler/type[@api=$key]" />
+ </component>
+ </components>
+ </component>
+
+ <!-- Generate syntax -->
+ <component type="Microsoft.Ddue.Tools.IfThenComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <if condition="not(starts-with($key,'Overload:') or starts-with($key,'R:'))" />
+ <then>
+ <component type="Microsoft.Ddue.Tools.SyntaxComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <syntax input="/document/reference" output="/document/syntax" />
+ <generators>
+ <generator type="Microsoft.Ddue.Tools.VisualBasicDeclarationSyntaxGenerator" assembly="%DXROOT%\ProductionTools\SyntaxComponents.dll" />
+ <generator type="Microsoft.Ddue.Tools.CSharpDeclarationSyntaxGenerator" assembly="%DXROOT%\ProductionTools\SyntaxComponents.dll" />
+ <generator type="Microsoft.Ddue.Tools.CPlusPlusDeclarationSyntaxGenerator" assembly="%DXROOT%\ProductionTools\SyntaxComponents.dll" />
+ <generator type="Microsoft.Ddue.Tools.ScriptSharpDeclarationSyntaxGenerator" assembly="%DXROOT%\ProductionTools\SyntaxComponents.dll" />
+ </generators>
+ </component>
+ </then>
+ </component>
+
+ <!-- Copy in comments -->
+ <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <index name="comments" value="/doc/members/member" key="@name" cache="100">
+ <data base="%SystemRoot%\Microsoft.NET\Framework\v2.0.50727" recurse="false" files="*.xml" />
+ <data files="%DocumentationFile%" />
+ </index>
+ <copy name="comments" source="*" target="/document/comments" />
+ <components>
+ <!-- copy comments for inheritdoc -->
+ <component type="Microsoft.Ddue.Tools.InheritDocumentationComponent" assembly="%DXROOT%\ProductionTools\CopyComponents.dll">
+ <copy name="comments" use="reflection" />
+ </component>
+ </components>
+ </component>
+
+ <!-- Copy in reflection data and comments for members -->
+ <component type="Microsoft.Ddue.Tools.ForEachComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <variable expression="/document/reference/elements//element/@api" />
+ <components>
+ <component type="Microsoft.Ddue.Tools.IfThenComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <if condition="not(/document/reference/elements//element[@api=$key]/apidata)" />
+ <then>
+ <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <copy name="reflection" source="*[not(self::elements)]" target="/document/reference/elements//element[@api=$key]" />
+ </component>
+ </then>
+ </component>
+ <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <copy name="comments" source="summary|overloads|inheritdoc" target="/document/reference/elements//element[@api=$key]" />
+ <components>
+ <!-- copy comments for inheritdoc -->
+ <component type="Microsoft.Ddue.Tools.InheritDocumentationComponent" assembly="%DXROOT%\ProductionTools\CopyComponents.dll">
+ <copy name="comments" use="reflection" />
+ </component>
+ </components>
+ </component>
+ </components>
+ </component>
+
+ <!-- Copy in comments for the member's declaring type. -->
+ <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <copy name="comments" key="string(/document/reference/containers/type/@api)" source="summary" target="/document/reference/containers" />
+ </component>
+
+ <!-- transform -->
+ <component type="Microsoft.Ddue.Tools.TransformComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <transform file="%DXROOT%\Presentation\vs2005\Transforms\main_sandcastle.xsl">
+ <argument key="metadata" value="true" />
+ <argument key="languages">
+ <language label="VisualBasic" name="VisualBasic" style="vb" />
+ <language label="CSharp" name="CSharp" style="cs" />
+ <language label="ManagedCPlusPlus" name="ManagedCPlusPlus" style="cpp" />
+ <!--<language label="JSharp" name="JSharp" style="cs" />
+ <language label="JScript" name="JScript" style="cs" />-->
+ <language label="JavaScript" name="JavaScript" style="cs" />
+ </argument>
+ </transform>
+ </component>
+
+ <!-- resolve shared content -->
+ <component type="Microsoft.Ddue.Tools.SharedContentComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <content file="%DXROOT%\Presentation\vs2005\content\shared_content_mshc.xml" />
+ <content file="%DXROOT%\Presentation\vs2005\content\reference_content.xml" />
+ <content file="%DXROOT%\Presentation\shared\content\syntax_content.xml" />
+ <content file="%DXROOT%\Presentation\vs2005\content\feedback_content.xml" />
+ </component>
+
+
+ <!-- resolve reference links -->
+ <component type="Microsoft.Ddue.Tools.ResolveReferenceLinksComponent2" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <targets base="%FxReflectionData%" recurse="true" files="*.xml" type="Id" />
+ <targets files=".\reflection.xml" type="Id" />
+ </component>
+
+ <!-- add Microsoft Help System data -->
+ <component type="Microsoft.Ddue.Tools.MSHCComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <data self-branded="true" topic-version="100" toc-file=".\toc.xml" toc-parent="" toc-parent-version="100" />
+ </component>
+
+ <!-- save the result -->
+ <component type="Microsoft.Ddue.Tools.SaveComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <save base ="%OutputHtml%" path="concat(/html/head/meta[@name='file']/@content,'.htm')" indent="true" omit-xml-declaration="false" add-xhtml-namespace="true" />
+ </component>
+
+ </components>
+ </builder>
+ </dduetools>
+</configuration>
diff --git a/tools/Sandcastle/Presentation/vs2005/configuration/sandcastle-scbuild.config b/tools/Sandcastle/Presentation/vs2005/configuration/sandcastle-scbuild.config
index 0c5a7ff..eb42414 100644
--- a/tools/Sandcastle/Presentation/vs2005/configuration/sandcastle-scbuild.config
+++ b/tools/Sandcastle/Presentation/vs2005/configuration/sandcastle-scbuild.config
@@ -128,7 +128,7 @@
<variable expression="/document/reference/elements//element/@api" />
<components>
<component type="Microsoft.Ddue.Tools.IfThenComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <if condition="not(/document/reference/elements/element[@api=$key]/apidata)" />
+ <if condition="not(/document/reference/elements//element[@api=$key]/apidata)" />
<then>
<component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
<copy name="reflection" source="*[not(self::elements)]" target="/document/reference/elements//element[@api=$key]" />
diff --git a/tools/Sandcastle/Presentation/vs2005/configuration/sandcastle-webref.config b/tools/Sandcastle/Presentation/vs2005/configuration/sandcastle-webref.config
index 956c5a6..de92889 100644
--- a/tools/Sandcastle/Presentation/vs2005/configuration/sandcastle-webref.config
+++ b/tools/Sandcastle/Presentation/vs2005/configuration/sandcastle-webref.config
@@ -12,7 +12,7 @@
<!-- Copy in reflection data -->
<component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
<index name="reflection" value="/reflection/apis/api" key="@id" cache="10">
- <data base="%DxTempDir%\ReflectionData" recurse="true" files="*.xml" />
+ <data base="%FxReflectionData%" recurse="true" files="*.xml" />
</index>
<copy name="reflection" source="*" target="/document/reference" />
</component>
@@ -128,7 +128,7 @@
<variable expression="/document/reference/elements//element/@api" />
<components>
<component type="Microsoft.Ddue.Tools.IfThenComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <if condition="not(/document/reference/elements/element[@api=$key]/apidata)" />
+ <if condition="not(/document/reference/elements//element[@api=$key]/apidata)" />
<then>
<component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
<copy name="reflection" source="*[not(self::elements)]" target="/document/reference/elements//element[@api=$key]" />
diff --git a/tools/Sandcastle/Presentation/vs2005/configuration/sandcastle.config b/tools/Sandcastle/Presentation/vs2005/configuration/sandcastle.config
index 7d45cf8..114e02d 100644
--- a/tools/Sandcastle/Presentation/vs2005/configuration/sandcastle.config
+++ b/tools/Sandcastle/Presentation/vs2005/configuration/sandcastle.config
@@ -130,7 +130,7 @@
<variable expression="/document/reference/elements//element/@api" />
<components>
<component type="Microsoft.Ddue.Tools.IfThenComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <if condition="not(/document/reference/elements/element[@api=$key]/apidata)" />
+ <if condition="not(/document/reference/elements//element[@api=$key]/apidata)" />
<then>
<component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
<copy name="reflection" source="*[not(self::elements)]" target="/document/reference/elements//element[@api=$key]" />
diff --git a/tools/Sandcastle/Presentation/vs2005/copyOutput.bat b/tools/Sandcastle/Presentation/vs2005/copyOutput.bat
index 944c7f6..2910fb1 100644
--- a/tools/Sandcastle/Presentation/vs2005/copyOutput.bat
+++ b/tools/Sandcastle/Presentation/vs2005/copyOutput.bat
@@ -3,7 +3,7 @@ if not exist Output\html mkdir Output\html
if not exist Output\icons mkdir Output\icons
if not exist Output\scripts mkdir Output\scripts
if not exist Output\styles mkdir Output\styles
-if not exist Output\media mkdir Output\media
+REM: if not exist Output\media mkdir Output\media
copy "%DXROOT%\Presentation\vs2005\icons\*" Output\icons
copy "%DXROOT%\Presentation\vs2005\scripts\*" Output\scripts
copy "%DXROOT%\Presentation\vs2005\styles\*" Output\styles
diff --git a/tools/Sandcastle/Presentation/vs2005/icons/slMobile.gif b/tools/Sandcastle/Presentation/vs2005/icons/slMobile.gif
new file mode 100644
index 0000000..5edc31f
--- /dev/null
+++ b/tools/Sandcastle/Presentation/vs2005/icons/slMobile.gif
Binary files differ
diff --git a/tools/Sandcastle/Presentation/vs2005/transforms/conceptualMetadataHelp30.xsl b/tools/Sandcastle/Presentation/vs2005/transforms/conceptualMetadataHelp30.xsl
index 54af982..a4eaa32 100644
--- a/tools/Sandcastle/Presentation/vs2005/transforms/conceptualMetadataHelp30.xsl
+++ b/tools/Sandcastle/Presentation/vs2005/transforms/conceptualMetadataHelp30.xsl
@@ -93,10 +93,12 @@
</xsl:if>
<!-- Microsoft.Help.TocParent -->
- <xsl:for-each select="/document/metadata/attribute[@name='TOCParent']">
- <meta name="Microsoft.Help.TocParent" content="{.}" />
- <meta name="Microsoft.Help.TocOrder" content="0" />
- </xsl:for-each>
+ <xsl:if test="/document/metadata/attribute[@name='TOCParent']">
+ <meta name="Microsoft.Help.TocParent" content="{/document/metadata/attribute[@name='TOCParent']}" />
+ </xsl:if>
+ <xsl:if test="/document/metadata/attribute[@name='TOCOrder']">
+ <meta name="Microsoft.Help.TocOrder" content="{/document/metadata/attribute[@name='TOCOrder']}" />
+ </xsl:if>
<!-- Microsoft.Help.Product -->
<!-- Added by MTPS -->
diff --git a/tools/Sandcastle/Presentation/vs2005/transforms/htmlBody.xsl b/tools/Sandcastle/Presentation/vs2005/transforms/htmlBody.xsl
index b12b082..b9345ac 100644
--- a/tools/Sandcastle/Presentation/vs2005/transforms/htmlBody.xsl
+++ b/tools/Sandcastle/Presentation/vs2005/transforms/htmlBody.xsl
@@ -208,7 +208,7 @@
<xsl:template name="bodyHeaderTopTable">
<xsl:variable name="showDevlangsFilter" select="boolean(($languages != 'false') and (count($languages/language) &gt; 0))"/>
<xsl:variable name="showMemberOptionsFilter" select="boolean($group='list' and $subgroup!='DerivedTypeList')"/>
- <xsl:variable name="showMemberFrameworksFilter" select="boolean($group='list' and $subgroup!='DerivedTypeList' and /document/reference/elements//element[count(versions/versions) &gt; 1])"/>
+ <xsl:variable name="showMemberFrameworksFilter" select="boolean($group='list' and $subgroup!='DerivedTypeList' and /document/reference/elements//element[count(versions/versions[@name != 'netfwcp']) &gt; 1])"/>
<table id="topTable" cellspacing="0" cellpadding="0">
<tr>
<td>
@@ -273,8 +273,8 @@
<xsl:template name="memberFrameworksMenu">
<div id="memberFrameworksMenu">
<xsl:for-each select="/document/reference/elements//element/versions[versions]">
- <xsl:if test="position()=1">
- <xsl:for-each select="versions">
+ <xsl:if test="position()=1">
+ <xsl:for-each select="versions[@name != 'netfwcp']"> <!-- Don't show client profile, tfs 787027 -->
<xsl:call-template name="FrameworksMenuCheckbox"/>
</xsl:for-each>
</xsl:if>
@@ -300,7 +300,7 @@
</label>
<xsl:for-each select="/document/reference/elements//element/versions[versions]">
<xsl:if test="position()=1">
- <xsl:for-each select="versions">
+ <xsl:for-each select="versions[@name != 'netfwcp']"> <!-- Don't show client profile, tfs 787027 -->
<xsl:variable name="versionName" select="@name"/>
<label id="memberFrameworksMenu{$versionName}Label" for="memberFrameworksDropdownImage" style="display: none;">
<nobr><include item="memberFrameworks{$versionName}"/><xsl:text>&#160;</xsl:text></nobr>
diff --git a/tools/Sandcastle/Presentation/vs2005/transforms/main_conceptual.xsl b/tools/Sandcastle/Presentation/vs2005/transforms/main_conceptual.xsl
index 427d8be..d0f4b57 100644
--- a/tools/Sandcastle/Presentation/vs2005/transforms/main_conceptual.xsl
+++ b/tools/Sandcastle/Presentation/vs2005/transforms/main_conceptual.xsl
@@ -60,7 +60,11 @@
</xsl:template>
<xsl:template name="insertStylesheets">
- <link rel="stylesheet" type="text/css" href="../styles/presentation.css" />
+ <link rel="stylesheet" type="text/css">
+ <includeAttribute name="href" item="stylePath">
+ <parameter>presentation.css</parameter>
+ </includeAttribute>
+ </link>
<!-- make mshelp links work -->
<link rel="stylesheet" type="text/css" href="ms-help://Hx/HxRuntime/HxLink.css" />
<!--<link rel="stylesheet" type="text/css" href="ms-help://Dx/DxRuntime/DxLink.css" />-->
diff --git a/tools/Sandcastle/Presentation/vs2005/transforms/main_reference.xsl b/tools/Sandcastle/Presentation/vs2005/transforms/main_reference.xsl
index 970ac6d..d534367 100644
--- a/tools/Sandcastle/Presentation/vs2005/transforms/main_reference.xsl
+++ b/tools/Sandcastle/Presentation/vs2005/transforms/main_reference.xsl
@@ -70,8 +70,8 @@
<xsl:if test="/document/reference/attributes/attribute/type[@api='T:System.ObsoleteAttribute']">
<xsl:call-template name="obsoleteSection" />
</xsl:if>
-
- <!-- SecurityCritical boilerplate -->
+
+ <!-- SecurityCritical boilerplate -->
<xsl:if test="$securityCriticalSection">
<xsl:choose>
<xsl:when test="boolean($api-group='type')">
@@ -122,6 +122,7 @@
</xsl:otherwise>
</xsl:choose>
+
<!-- Flags attribute boilerplate -->
<xsl:if test="/document/reference/attributes/attribute/type[@api='T:System.FlagsAttribute']">
<p>
@@ -145,6 +146,13 @@
</xsl:if>
</xsl:if>
+ <!-- Overload list page boilerplate -->
+ <xsl:if test="$group = 'list' and $subgroup = 'overload'">
+ <p>
+ <include item="overloadSummary" />
+ </p>
+ </xsl:if>
+
<xsl:if test="$group='namespace'">
<xsl:apply-templates select="/document/comments/ddue:dduexml/ddue:remarks" />
</xsl:if>
@@ -269,14 +277,14 @@
<xsl:template name="getParameterDescription">
<xsl:param name="name" />
- <xsl:choose>
- <xsl:when test="normalize-space(/document/comments/ddue:dduexml/ddue:parameters[1]/ddue:parameter) != ''">
+ <xsl:choose>
+ <xsl:when test="normalize-space(/document/comments/ddue:dduexml/ddue:parameters[1]/ddue:parameter[normalize-space(string(ddue:parameterReference))=$name]//ddue:para) != ''">
<span sdata="authoredParameterSummary">
- <xsl:apply-templates select="/document/comments/ddue:dduexml/ddue:parameters[1]/ddue:parameter[string(ddue:parameterReference)=$name]/ddue:content" />
+ <xsl:apply-templates select="/document/comments/ddue:dduexml/ddue:parameters[1]/ddue:parameter[normalize-space(string(ddue:parameterReference))=$name]//ddue:para" />
</span>
</xsl:when>
<xsl:otherwise>
- <xsl:apply-templates select="/document/comments/ddue:dduexml/ddue:parameters[2]/ddue:parameter[string(ddue:parameterReference)=$name]/ddue:content" />
+ <xsl:apply-templates select="/document/comments/ddue:dduexml/ddue:parameters[2]/ddue:parameter[normalize-space(string(ddue:parameterReference))=$name]//ddue:para" />
</xsl:otherwise>
</xsl:choose>
</xsl:template>
@@ -312,9 +320,19 @@
<xsl:with-param name="content">
<include item="typeLink">
<parameter>
- <xsl:apply-templates select="*[1]" mode="link">
- <xsl:with-param name="qualified" select="true()" />
- </xsl:apply-templates>
+ <xsl:choose>
+ <!-- special case for IsUdtReturn, see 780142 -->
+ <xsl:when test="type[@api='T:System.Void']/requiredModifier/type[@api='T:System.Runtime.CompilerServices.IsUdtReturn']">
+ <xsl:apply-templates select="../parameters/parameter/referenceTo/type" mode="link">
+ <xsl:with-param name="qualified" select="true()" />
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="*[1]" mode="link">
+ <xsl:with-param name="qualified" select="true()" />
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
</parameter>
</include>
<br />
@@ -343,8 +361,8 @@
<xsl:copy-of select="$contravariant"/><xsl:copy-of select="$covariant" /><span class="parameter"><xsl:value-of select="$parameterName"/></span>
</dt>
<dd>
- <xsl:apply-templates select="/document/comments/ddue:dduexml/ddue:genericParameters/ddue:genericParameter[string(ddue:parameterReference)=$parameterName]/ddue:content" />
- <xsl:if test="variance"><p><xsl:if test="variance/@contravariant='true'"><include item="contravariant" /></xsl:if><xsl:if test="variance/@covariant='true'"><include item="covariant" /></xsl:if><include item="variance" /></p></xsl:if>
+ <xsl:apply-templates select="/document/comments/ddue:dduexml/ddue:genericParameters/ddue:genericParameter[string(ddue:parameterReference)=$parameterName]//ddue:para" />
+ <xsl:apply-templates select="." />
</dd>
</dl>
</xsl:for-each>
@@ -353,6 +371,16 @@
</div>
</xsl:template>
+
+
+ <xsl:template match="template[variance[@covariant='true']][1]">
+ <p><include item="covariant"/><include item="variance" /></p>
+ </xsl:template>
+
+ <xsl:template match="template[variance[@contravariant='true']][1]">
+ <p><include item="contravariant" /><include item="variance" /></p>
+ </xsl:template>
+
<xsl:template name="getElementDescription">
<xsl:choose>
<xsl:when test="normalize-space(ddue:summary[1]) != ''">
diff --git a/tools/Sandcastle/Presentation/vs2005/transforms/main_sandcastle.xsl b/tools/Sandcastle/Presentation/vs2005/transforms/main_sandcastle.xsl
index 9954a00..390b798 100644
--- a/tools/Sandcastle/Presentation/vs2005/transforms/main_sandcastle.xsl
+++ b/tools/Sandcastle/Presentation/vs2005/transforms/main_sandcastle.xsl
@@ -1,25 +1,25 @@
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.1">
- <!-- stuff specified to comments authored in DDUEXML -->
+ <!-- stuff specified to comments authored in DDUEXML -->
<xsl:param name="omitXmlnsBoilerplate" select="'false'" />
-
- <xsl:include href="htmlBody.xsl"/>
+
+ <xsl:include href="htmlBody.xsl"/>
<xsl:include href="utilities_reference.xsl" />
- <xsl:variable name="summary" select="normalize-space(/document/comments/summary)" />
+ <xsl:variable name="summary" select="normalize-space(/document/comments/summary)" />
<xsl:variable name="abstractSummary" select="/document/comments/summary" />
<xsl:variable name="hasSeeAlsoSection" select="boolean((count(/document/comments//seealso | /document/reference/elements/element/overloads//seealso) > 0) or
($group='type' or $group='member' or $group='list'))"/>
<xsl:variable name="examplesSection" select="boolean(string-length(/document/comments/example[normalize-space(.)]) > 0)"/>
<xsl:variable name="languageFilterSection" select="boolean(string-length(/document/comments/example[normalize-space(.)]) > 0)" />
-
+
<xsl:template name="body">
-
- <!-- auto-inserted info -->
- <!-- <xsl:apply-templates select="/document/reference/attributes" /> -->
+
+ <!-- auto-inserted info -->
+ <!-- <xsl:apply-templates select="/document/reference/attributes" /> -->
<xsl:apply-templates select="/document/comments/preliminary" />
- <xsl:apply-templates select="/document/comments/summary" />
+ <xsl:apply-templates select="/document/comments/summary" />
<xsl:if test="$subgroup='overload'">
<xsl:apply-templates select="/document/reference/elements" mode="overloadSummary" />
</xsl:if>
@@ -27,74 +27,72 @@
<xsl:if test="not($group='list' or $group='root' or $group='namespace')">
<xsl:call-template name="requirementsInfo"/>
</xsl:if>
- <!-- syntax -->
+ <!-- syntax -->
<xsl:if test="not($group='list' or $group='namespace')">
<xsl:apply-templates select="/document/syntax" />
</xsl:if>
- <!-- members -->
- <xsl:choose>
- <xsl:when test="$group='root'">
- <xsl:apply-templates select="/document/reference/elements" mode="root" />
- </xsl:when>
- <xsl:when test="$group='namespace'">
- <xsl:apply-templates select="/document/reference/elements" mode="namespace" />
+ <!-- members -->
+ <xsl:choose>
+ <xsl:when test="$group='root'">
+ <xsl:apply-templates select="/document/reference/elements" mode="root" />
+ </xsl:when>
+ <xsl:when test="$group='namespace'">
+ <xsl:apply-templates select="/document/reference/elements" mode="namespace" />
+ </xsl:when>
+ <xsl:when test="$subgroup='enumeration'">
+ <xsl:apply-templates select="/document/reference/elements" mode="enumeration" />
+ </xsl:when>
+ <xsl:when test="$group='type'">
+ <xsl:apply-templates select="/document/reference/elements" mode="type" />
+ </xsl:when>
+ <xsl:when test="$group='list'">
+ <xsl:choose>
+ <xsl:when test="$subgroup='overload'">
+ <xsl:apply-templates select="/document/reference/elements" mode="overload" />
+ </xsl:when>
+ <xsl:when test="$subgroup='DerivedTypeList'">
+ <xsl:apply-templates select="/document/reference/elements" mode="derivedType" />
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="/document/reference/elements" mode="member" />
+ </xsl:otherwise>
+ </xsl:choose>
</xsl:when>
- <xsl:when test="$subgroup='enumeration'">
- <xsl:apply-templates select="/document/reference/elements" mode="enumeration" />
- </xsl:when>
- <xsl:when test="$group='type'">
- <xsl:apply-templates select="/document/reference/elements" mode="type" />
- </xsl:when>
- <xsl:when test="$group='list'">
- <xsl:choose>
- <xsl:when test="$subgroup='overload'">
- <xsl:apply-templates select="/document/reference/elements" mode="overload" />
- </xsl:when>
- <xsl:when test="$subgroup='DerivedTypeList'">
- <xsl:apply-templates select="/document/reference/elements" mode="derivedType" />
- </xsl:when>
- <xsl:otherwise>
- <xsl:apply-templates select="/document/reference/elements" mode="member" />
- </xsl:otherwise>
- </xsl:choose>
- </xsl:when>
- </xsl:choose>
- <!-- remarks -->
- <xsl:apply-templates select="/document/comments/remarks" />
- <!-- example -->
- <xsl:apply-templates select="/document/comments/example" />
- <!-- other comment sections -->
- <!-- permissions -->
+ </xsl:choose>
+ <!-- remarks -->
+ <xsl:apply-templates select="/document/comments/remarks" />
+ <!-- example -->
+ <xsl:apply-templates select="/document/comments/example" />
+ <!-- other comment sections -->
+ <!-- permissions -->
<xsl:call-template name="permissions" />
- <!-- exceptions -->
- <xsl:call-template name="exceptions" />
- <!-- contracts -->
- <xsl:call-template name="contracts" />
- <!-- inheritance -->
- <xsl:apply-templates select="/document/reference/family" />
+ <!-- exceptions -->
+ <xsl:call-template name="exceptions" />
+ <!-- inheritance -->
+ <xsl:apply-templates select="/document/reference/family" />
<xsl:apply-templates select="/document/comments/threadsafety" />
<!--versions-->
<xsl:if test="not($group='list' or $group='namespace' or $group='root' )">
<xsl:apply-templates select="/document/reference/versions" />
</xsl:if>
- <!-- see also -->
+ <!-- see also -->
<xsl:call-template name="seealso" />
- </xsl:template>
+ </xsl:template>
- <xsl:template name="getParameterDescription">
- <xsl:param name="name" />
- <xsl:apply-templates select="/document/comments/param[@name=$name]" />
- </xsl:template>
+ <xsl:template name="getParameterDescription">
+ <xsl:param name="name" />
+ <xsl:apply-templates select="/document/comments/param[@name=$name]" />
+ </xsl:template>
- <xsl:template name="getReturnsDescription">
- <xsl:param name="name" />
- <xsl:apply-templates select="/document/comments/param[@name=$name]" />
- </xsl:template>
+ <xsl:template name="getReturnsDescription">
+ <xsl:param name="name" />
+ <xsl:apply-templates select="/document/comments/param[@name=$name]" />
+ </xsl:template>
- <xsl:template name="getElementDescription">
- <xsl:apply-templates select="summary[1]" />
- </xsl:template>
+ <xsl:template name="getElementDescription">
+ <xsl:apply-templates select="summary[1]" />
+ </xsl:template>
<xsl:template name="getOverloadSummary">
<xsl:apply-templates select="overloads" mode="summary"/>
@@ -105,28 +103,28 @@
</xsl:template>
<xsl:template name="getInternalOnlyDescription">
-
+
</xsl:template>
<!-- block sections -->
- <xsl:template match="summary">
- <div class="summary">
- <xsl:apply-templates />
- </div>
- </xsl:template>
+ <xsl:template match="summary">
+ <div class="summary">
+ <xsl:apply-templates />
+ </div>
+ </xsl:template>
<xsl:template match="overloads" mode="summary">
<xsl:choose>
- <xsl:when test="count(summary) > 0">
- <xsl:apply-templates select="summary" />
- </xsl:when>
- <xsl:otherwise>
- <div class="summary">
- <xsl:apply-templates/>
- </div>
- </xsl:otherwise>
+ <xsl:when test="count(summary) > 0">
+ <xsl:apply-templates select="summary" />
+ </xsl:when>
+ <xsl:otherwise>
+ <div class="summary">
+ <xsl:apply-templates/>
+ </div>
+ </xsl:otherwise>
</xsl:choose>
</xsl:template>
@@ -135,7 +133,7 @@
<xsl:apply-templates select="example"/>
</xsl:template>
- <xsl:template match="value">
+ <xsl:template match="value">
<xsl:call-template name="subSection">
<xsl:with-param name="title">
<include item="fieldValueTitle" />
@@ -144,9 +142,9 @@
<xsl:apply-templates />
</xsl:with-param>
</xsl:call-template>
- </xsl:template>
+ </xsl:template>
- <xsl:template match="returns">
+ <xsl:template match="returns">
<xsl:call-template name="subSection">
<xsl:with-param name="title">
<include item="methodValueTitle" />
@@ -181,38 +179,28 @@
</xsl:call-template>
</xsl:template>
- <xsl:template match="remarks">
- <xsl:call-template name="section">
+ <xsl:template match="remarks">
+ <xsl:call-template name="section">
<xsl:with-param name="toggleSwitch" select="'remarks'"/>
- <xsl:with-param name="title">
- <include item="remarksTitle" />
- </xsl:with-param>
- <xsl:with-param name="content">
- <xsl:apply-templates />
- </xsl:with-param>
- </xsl:call-template>
- </xsl:template>
+ <xsl:with-param name="title"><include item="remarksTitle" /></xsl:with-param>
+ <xsl:with-param name="content"><xsl:apply-templates /></xsl:with-param>
+ </xsl:call-template>
+ </xsl:template>
- <xsl:template match="example">
- <xsl:call-template name="section">
+ <xsl:template match="example">
+ <xsl:call-template name="section">
<xsl:with-param name="toggleSwitch" select="'example'"/>
- <xsl:with-param name="title">
- <include item="examplesTitle" />
- </xsl:with-param>
- <xsl:with-param name="content">
- <xsl:apply-templates />
- </xsl:with-param>
- </xsl:call-template>
- </xsl:template>
+ <xsl:with-param name="title"><include item="examplesTitle" /></xsl:with-param>
+ <xsl:with-param name="content"><xsl:apply-templates /></xsl:with-param>
+ </xsl:call-template>
+ </xsl:template>
- <xsl:template match="para">
- <p>
- <xsl:apply-templates />
- </p>
- </xsl:template>
-
- <xsl:template match="code">
+ <xsl:template match="para">
+ <p><xsl:apply-templates /></p>
+ </xsl:template>
+ <xsl:template match="code">
+
<xsl:variable name="codeLang">
<xsl:choose>
<xsl:when test="@language = 'vbs'">
@@ -255,253 +243,34 @@
<xsl:with-param name="codeLang" select="$codeLang" />
</xsl:call-template>
- </xsl:template>
+ </xsl:template>
- <xsl:template name="exceptions">
- <xsl:if test="count(/document/comments/exception) &gt; 0">
- <xsl:call-template name="section">
+ <xsl:template name="exceptions">
+ <xsl:if test="count(/document/comments/exception) &gt; 0">
+ <xsl:call-template name="section">
<xsl:with-param name="toggleSwitch" select="'exceptions'"/>
- <xsl:with-param name="title">
- <include item="exceptionsTitle" />
- </xsl:with-param>
- <xsl:with-param name="content">
+ <xsl:with-param name="title"><include item="exceptionsTitle" /></xsl:with-param>
+ <xsl:with-param name="content">
<div class="tableSection">
<table width="100%" cellspacing="2" cellpadding="5" frame="lhs" >
- <tr>
- <th class="exceptionNameColumn">
- <include item="exceptionNameHeader" />
- </th>
- <th class="exceptionConditionColumn">
- <include item="exceptionConditionHeader" />
- </th>
- </tr>
- <xsl:for-each select="/document/comments/exception">
- <tr>
- <td>
- <referenceLink target="{@cref}" qualified="true" />
- </td>
- <td>
- <xsl:apply-templates select="." />
- </td>
- </tr>
- </xsl:for-each>
- </table>
- </div>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <xsl:template name="contracts">
- <xsl:variable name="requires" select="/document/comments/requires" />
- <xsl:variable name="ensures" select="/document/comments/ensures" />
- <xsl:variable name="ensuresOnThrow" select="/document/comments/ensuresOnThrow" />
- <xsl:variable name="invariants" select="/document/comments/invariant" />
- <xsl:variable name="setter" select="/document/comments/setter" />
- <xsl:variable name="getter" select="/document/comments/getter" />
- <xsl:variable name="pure" select="/document/comments/pure" />
- <xsl:if test="$requires or $ensures or $ensuresOnThrow or $invariants or $setter or $getter or $pure">
- <xsl:call-template name="section">
- <xsl:with-param name="toggleSwitch" select="'contracts'"/>
- <xsl:with-param name="title">
- <include item="contractsTitle" />
- </xsl:with-param>
- <xsl:with-param name="content">
- <!--Purity-->
- <xsl:if test="$pure">
- <xsl:text>This method is pure.</xsl:text>
- </xsl:if>
- <!--Contracts-->
- <div class="tableSection">
- <xsl:if test="$getter">
- <xsl:variable name="getterRequires" select="$getter/requires"/>
- <xsl:variable name="getterEnsures" select="$getter/ensures"/>
- <xsl:variable name="getterEnsuresOnThrow" select="$getter/ensuresOnThrow"/>
- <xsl:call-template name="subSection">
- <xsl:with-param name="title">
- <include item="getterTitle" />
- </xsl:with-param>
- <xsl:with-param name="content">
- <xsl:if test="$getterRequires">
- <xsl:call-template name="contractsTable">
- <xsl:with-param name="title">
- <include item="requiresNameHeader"/>
- </xsl:with-param>
- <xsl:with-param name="contracts" select="$getterRequires"/>
- </xsl:call-template>
- </xsl:if>
- <xsl:if test="$getterEnsures">
- <xsl:call-template name="contractsTable">
- <xsl:with-param name="title">
- <include item="ensuresNameHeader"/>
- </xsl:with-param>
- <xsl:with-param name="contracts" select="$getterEnsures"/>
- </xsl:call-template>
- </xsl:if>
- <xsl:if test="$getterEnsuresOnThrow">
- <xsl:call-template name="contractsTable">
- <xsl:with-param name="title">
- <include item="ensuresOnThrowNameHeader"/>
- </xsl:with-param>
- <xsl:with-param name="contracts" select="$getterEnsuresOnThrow"/>
- </xsl:call-template>
- </xsl:if>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- <xsl:if test="$setter">
- <xsl:variable name="setterRequires" select="$setter/requires"/>
- <xsl:variable name="setterEnsures" select="$setter/ensures"/>
- <xsl:variable name="setterEnsuresOnThrow" select="$setter/ensuresOnThrow"/>
- <xsl:call-template name="subSection">
- <xsl:with-param name="title">
- <include item="setterTitle" />
- </xsl:with-param>
- <xsl:with-param name="content">
- <xsl:if test="$setterRequires">
- <xsl:call-template name="contractsTable">
- <xsl:with-param name="title">
- <include item="requiresNameHeader"/>
- </xsl:with-param>
- <xsl:with-param name="contracts" select="$setterRequires"/>
- </xsl:call-template>
- </xsl:if>
- <xsl:if test="$setterEnsures">
- <xsl:call-template name="contractsTable">
- <xsl:with-param name="title">
- <include item="ensuresNameHeader"/>
- </xsl:with-param>
- <xsl:with-param name="contracts" select="$setterEnsures"/>
- </xsl:call-template>
- </xsl:if>
- <xsl:if test="$setterEnsuresOnThrow">
- <xsl:call-template name="contractsTable">
- <xsl:with-param name="title">
- <include item="ensuresOnThrowNameHeader"/>
- </xsl:with-param>
- <xsl:with-param name="contracts" select="$setterEnsuresOnThrow"/>
- </xsl:call-template>
- </xsl:if>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- <xsl:if test="$requires">
- <xsl:call-template name="contractsTable">
- <xsl:with-param name="title">
- <include item="requiresNameHeader"/>
- </xsl:with-param>
- <xsl:with-param name="contracts" select="$requires"/>
- </xsl:call-template>
- </xsl:if>
- <xsl:if test="$ensures">
- <xsl:call-template name="contractsTable">
- <xsl:with-param name="title">
- <include item="ensuresNameHeader"/>
- </xsl:with-param>
- <xsl:with-param name="contracts" select="$ensures"/>
- </xsl:call-template>
- </xsl:if>
- <xsl:if test="$ensuresOnThrow">
- <xsl:call-template name="contractsTable">
- <xsl:with-param name="title">
- <include item="ensuresOnThrowNameHeader"/>
- </xsl:with-param>
- <xsl:with-param name="contracts" select="$ensuresOnThrow"/>
- </xsl:call-template>
- </xsl:if>
- <xsl:if test="$invariants">
- <xsl:call-template name="contractsTable">
- <xsl:with-param name="title">
- <include item="invariantsNameHeader"/>
- </xsl:with-param>
- <xsl:with-param name="contracts" select="$invariants"/>
- </xsl:call-template>
- </xsl:if>
- </div>
- <!--Contracts link-->
- <div class="contractsLink">
- <a>
- <xsl:attribute name="target">
- <xsl:text>_blank</xsl:text>
- </xsl:attribute>
- <xsl:attribute name="href">
- <xsl:text>http://msdn.microsoft.com/en-us/devlabs/dd491992.aspx</xsl:text>
- </xsl:attribute>
- <xsl:text>Learn more about contracts</xsl:text>
- </a>
+ <tr>
+ <th class="exceptionNameColumn"><include item="exceptionNameHeader" /></th>
+ <th class="exceptionConditionColumn"><include item="exceptionConditionHeader" /></th>
+ </tr>
+ <xsl:for-each select="/document/comments/exception">
+ <tr>
+ <td><referenceLink target="{@cref}" qualified="true" /></td>
+ <td>
+ <xsl:apply-templates select="." />
+ </td>
+ </tr>
+ </xsl:for-each>
+ </table>
</div>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <xsl:template name="contractsTable">
- <xsl:param name="title"/>
- <xsl:param name="contracts"/>
- <table width="100%" cellspacing="3" cellpadding="5" frame="lhs" >
- <tr>
- <th class="contractsNameColumn">
- <xsl:copy-of select="$title"/>
- </th>
- </tr>
- <xsl:for-each select="$contracts">
- <tr>
- <td>
- <div class="code" style="margin-bottom: 0pt; white-space: pre-wrap;">
- <pre style="margin-bottom: 0pt">
- <xsl:value-of select="."/>
- </pre>
- </div>
- <xsl:if test="@description or @inheritedFrom or @exception">
- <div style="font-size:95%; margin-left: 10pt;
- margin-bottom: 0pt">
- <table
- class="contractaux"
- width="100%" frame="void" rules="none" border="0">
- <colgroup>
- <col width="10%"/>
- <col width="90%"/>
- </colgroup>
- <xsl:if test="@description">
- <tr style="border-bottom: 0px none;">
- <td style="border-bottom: 0px none;">
- <i><xsl:text>Description: </xsl:text></i>
- </td>
- <td style="border-bottom: 0px none;">
- <xsl:value-of select="@description"/>
- </td>
- </tr>
- </xsl:if>
- <xsl:if test="@inheritedFrom">
- <tr style="border-bottom: 0px none;">
- <td style="border-bottom: 0px none;">
- <i><xsl:text>Inherited From: </xsl:text></i>
- </td>
- <td style="border-bottom: 0px none;">
- <referenceLink target="{@inheritedFrom}">
- <xsl:value-of select="@inheritedFromTypeName"/>
- </referenceLink>
- </td>
- </tr>
- </xsl:if>
- <xsl:if test="@exception">
- <tr style="border-bottom: 0px none;">
- <td style="border-bottom: 0px none;">
- <i><xsl:text>Exception: </xsl:text></i>
- </td>
- <td style="border-bottom: 0px none;">
- <referenceLink target="{@exception}" qualified="true" />
- </td>
- </tr>
- </xsl:if>
- </table>
- </div>
- </xsl:if>
- </td>
- </tr>
- </xsl:for-each>
- </table>
- </xsl:template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:template>
<xsl:template name="permissions">
<xsl:if test="count(/document/comments/permission) &gt; 0">
@@ -513,25 +282,25 @@
<xsl:with-param name="content">
<div class="tableSection">
<table width="100%" cellspacing="2" cellpadding="5" frame="lhs" >
+ <tr>
+ <th class="permissionNameColumn">
+ <include item="permissionNameHeader" />
+ </th>
+ <th class="permissionDescriptionColumn">
+ <include item="permissionDescriptionHeader" />
+ </th>
+ </tr>
+ <xsl:for-each select="/document/comments/permission">
<tr>
- <th class="permissionNameColumn">
- <include item="permissionNameHeader" />
- </th>
- <th class="permissionDescriptionColumn">
- <include item="permissionDescriptionHeader" />
- </th>
+ <td>
+ <referenceLink target="{@cref}" qualified="true" />
+ </td>
+ <td>
+ <xsl:apply-templates select="." />
+ </td>
</tr>
- <xsl:for-each select="/document/comments/permission">
- <tr>
- <td>
- <referenceLink target="{@cref}" qualified="true" />
- </td>
- <td>
- <xsl:apply-templates select="." />
- </td>
- </tr>
- </xsl:for-each>
- </table>
+ </xsl:for-each>
+ </table>
</div>
</xsl:with-param>
</xsl:call-template>
@@ -539,7 +308,7 @@
</xsl:template>
<xsl:template name="seealso">
- <xsl:if test="$hasSeeAlsoSection">
+ <xsl:if test="$hasSeeAlsoSection">
<xsl:call-template name="section">
<xsl:with-param name="toggleSwitch" select="'seeAlso'" />
<xsl:with-param name="title">
@@ -547,7 +316,7 @@
</xsl:with-param>
<xsl:with-param name="content">
<xsl:call-template name="autogenSeeAlsoLinks"/>
- <xsl:for-each select="/document/comments//seealso | /document/reference/elements/element/overloads//seealso">
+ <xsl:for-each select="/document/comments//seealso | /document/reference/elements/element/overloads//seealso">
<div class="seeAlsoStyle">
<xsl:apply-templates select=".">
<xsl:with-param name="displaySeeAlso" select="true()" />
@@ -559,52 +328,46 @@
</xsl:if>
</xsl:template>
- <xsl:template match="list[@type='bullet']">
- <ul>
- <xsl:for-each select="item">
- <li>
- <xsl:apply-templates />
- </li>
- </xsl:for-each>
- </ul>
- </xsl:template>
+ <xsl:template match="list[@type='bullet']">
+ <ul>
+ <xsl:for-each select="item">
+ <li><xsl:apply-templates /></li>
+ </xsl:for-each>
+ </ul>
+ </xsl:template>
- <xsl:template match="list[@type='number']">
- <ol>
- <xsl:for-each select="item">
- <li>
- <xsl:apply-templates />
- </li>
- </xsl:for-each>
- </ol>
- </xsl:template>
+ <xsl:template match="list[@type='number']">
+ <ol>
+ <xsl:for-each select="item">
+ <li><xsl:apply-templates /></li>
+ </xsl:for-each>
+ </ol>
+ </xsl:template>
- <xsl:template match="list[@type='table']">
+ <xsl:template match="list[@type='table']">
<div class="tableSection">
<table width="100%" cellspacing="2" cellpadding="5" frame="lhs" >
- <xsl:for-each select="listheader">
- <tr>
- <xsl:for-each select="*">
- <th>
- <xsl:apply-templates />
- </th>
- </xsl:for-each>
- </tr>
- </xsl:for-each>
- <xsl:for-each select="item">
- <tr>
- <xsl:for-each select="*">
- <td>
- <xsl:apply-templates />
- </td>
- </xsl:for-each>
- </tr>
- </xsl:for-each>
- </table>
+ <xsl:for-each select="listheader">
+ <tr>
+ <xsl:for-each select="*">
+ <th><xsl:apply-templates /></th>
+ </xsl:for-each>
+ </tr>
+ </xsl:for-each>
+ <xsl:for-each select="item">
+ <tr>
+ <xsl:for-each select="*">
+ <td>
+ <xsl:apply-templates />
+ </td>
+ </xsl:for-each>
+ </tr>
+ </xsl:for-each>
+ </table>
</div>
- </xsl:template>
+ </xsl:template>
- <!-- inline tags -->
+ <!-- inline tags -->
<xsl:template match="see[@cref]">
<xsl:choose>
@@ -623,17 +386,13 @@
<xsl:choose>
<xsl:when test="normalize-space(.)">
<a>
- <xsl:attribute name="href">
- <xsl:value-of select="@href"/>
- </xsl:attribute>
+ <xsl:attribute name="href"><xsl:value-of select="@href"/></xsl:attribute>
<xsl:value-of select="." />
</a>
</xsl:when>
<xsl:otherwise>
<a>
- <xsl:attribute name="href">
- <xsl:value-of select="@href"/>
- </xsl:attribute>
+ <xsl:attribute name="href"><xsl:value-of select="@href"/></xsl:attribute>
<xsl:value-of select="@href" />
</a>
</xsl:otherwise>
@@ -643,24 +402,20 @@
<xsl:template match="seealso[@href]">
<xsl:param name="displaySeeAlso" select="false()" />
<xsl:if test="$displaySeeAlso">
- <xsl:choose>
- <xsl:when test="normalize-space(.)">
- <a>
- <xsl:attribute name="href">
- <xsl:value-of select="@href"/>
- </xsl:attribute>
- <xsl:value-of select="." />
- </a>
- </xsl:when>
- <xsl:otherwise>
- <a>
- <xsl:attribute name="href">
- <xsl:value-of select="@href"/>
- </xsl:attribute>
- <xsl:value-of select="@href" />
- </a>
- </xsl:otherwise>
- </xsl:choose>
+ <xsl:choose>
+ <xsl:when test="normalize-space(.)">
+ <a>
+ <xsl:attribute name="href"><xsl:value-of select="@href"/></xsl:attribute>
+ <xsl:value-of select="." />
+ </a>
+ </xsl:when>
+ <xsl:otherwise>
+ <a>
+ <xsl:attribute name="href"><xsl:value-of select="@href"/></xsl:attribute>
+ <xsl:value-of select="@href" />
+ </a>
+ </xsl:otherwise>
+ </xsl:choose>
</xsl:if>
</xsl:template>
@@ -669,37 +424,37 @@
<xsl:choose>
<xsl:when test="@langword='null' or @langword='Nothing' or @langword='nullptr'">
<span class="languageSpecificText">
- <span class="cs">null</span>
- <span class="vb">Nothing</span>
- <span class="cpp">nullptr</span>
+ <span class="cs">null</span>
+ <span class="vb">Nothing</span>
+ <span class="cpp">nullptr</span>
</span>
</xsl:when>
<xsl:when test="@langword='static' or @langword='Shared'">
<span class="languageSpecificText">
- <span class="cs">static</span>
- <span class="vb">Shared</span>
- <span class="cpp">static</span>
+ <span class="cs">static</span>
+ <span class="vb">Shared</span>
+ <span class="cpp">static</span>
</span>
</xsl:when>
<xsl:when test="@langword='virtual' or @langword='Overridable'">
<span class="languageSpecificText">
- <span class="cs">virtual</span>
- <span class="vb">Overridable</span>
- <span class="cpp">virtual</span>
+ <span class="cs">virtual</span>
+ <span class="vb">Overridable</span>
+ <span class="cpp">virtual</span>
</span>
</xsl:when>
<xsl:when test="@langword='true' or @langword='True'">
<span class="languageSpecificText">
- <span class="cs">true</span>
- <span class="vb">True</span>
- <span class="cpp">true</span>
+ <span class="cs">true</span>
+ <span class="vb">True</span>
+ <span class="cpp">true</span>
</span>
</xsl:when>
<xsl:when test="@langword='false' or @langword='False'">
<span class="languageSpecificText">
- <span class="cs">false</span>
- <span class="vb">False</span>
- <span class="cpp">false</span>
+ <span class="cs">false</span>
+ <span class="vb">False</span>
+ <span class="cpp">false</span>
</span>
</xsl:when>
<xsl:when test="@langword='abstract'">
@@ -716,59 +471,45 @@
</span>
<xsl:choose>
<xsl:when test="@langword='null' or @langword='Nothing' or @langword='nullptr'">
- <span class="nu">
- <include item="nullKeyword"/>
- </span>
+ <span class="nu"><include item="nullKeyword"/></span>
</xsl:when>
<xsl:when test="@langword='static' or @langword='Shared'">
- <span class="nu">
- <include item="staticKeyword"/>
- </span>
+ <span class="nu"><include item="staticKeyword"/></span>
</xsl:when>
<xsl:when test="@langword='virtual' or @langword='Overridable'">
- <span class="nu">
- <include item="virtualKeyword"/>
- </span>
+ <span class="nu"><include item="virtualKeyword"/></span>
</xsl:when>
<xsl:when test="@langword='true' or @langword='True'">
- <span class="nu">
- <include item="trueKeyword"/>
- </span>
+ <span class="nu"><include item="trueKeyword"/></span>
</xsl:when>
<xsl:when test="@langword='false' or @langword='False'">
- <span class="nu">
- <include item="falseKeyword"/>
- </span>
+ <span class="nu"><include item="falseKeyword"/></span>
</xsl:when>
<xsl:when test="@langword='abstract'">
- <span class="nu">
- <include item="abstractKeyword"/>
- </span>
+ <span class="nu"><include item="abstractKeyword"/></span>
</xsl:when>
</xsl:choose>
-
+
</xsl:template>
<xsl:template match="seealso">
<xsl:param name="displaySeeAlso" select="false()" />
<xsl:if test="$displaySeeAlso">
- <xsl:choose>
- <xsl:when test="normalize-space(.)">
- <referenceLink target="{@cref}" qualified="true">
- <xsl:value-of select="." />
- </referenceLink>
- </xsl:when>
- <xsl:otherwise>
- <referenceLink target="{@cref}" qualified="true" />
- </xsl:otherwise>
- </xsl:choose>
+ <xsl:choose>
+ <xsl:when test="normalize-space(.)">
+ <referenceLink target="{@cref}" qualified="true">
+ <xsl:value-of select="." />
+ </referenceLink>
+ </xsl:when>
+ <xsl:otherwise>
+ <referenceLink target="{@cref}" qualified="true" />
+ </xsl:otherwise>
+ </xsl:choose>
</xsl:if>
</xsl:template>
<xsl:template match="c">
- <span class="code">
- <xsl:apply-templates/>
- </span>
+ <span class="code"><xsl:apply-templates/></span>
</xsl:template>
<xsl:template match="paramref">
@@ -809,14 +550,14 @@
<include item="runningHeaderText" />
</xsl:template>
- <!-- pass through html tags -->
+ <!-- pass through html tags -->
- <xsl:template match="p|ol|ul|li|dl|dt|dd|table|tr|th|td|a|img|b|i|strong|em|del|sub|sup|br|hr|h1|h2|h3|h4|h5|h6|pre|div|span|blockquote|abbr|acronym|u|font|map|area">
- <xsl:copy>
- <xsl:copy-of select="@*" />
- <xsl:apply-templates />
- </xsl:copy>
- </xsl:template>
+ <xsl:template match="p|ol|ul|li|dl|dt|dd|table|tr|th|td|a|img|b|i|strong|em|del|sub|sup|br|hr|h1|h2|h3|h4|h5|h6|pre|div|span|blockquote|abbr|acronym|u|font|map|area">
+ <xsl:copy>
+ <xsl:copy-of select="@*" />
+ <xsl:apply-templates />
+ </xsl:copy>
+ </xsl:template>
<!-- extra tag support -->
@@ -871,40 +612,40 @@
</div>
</xsl:template>
- <!-- move these off into a shared file -->
+ <!-- move these off into a shared file -->
<xsl:template name="createReferenceLink">
<xsl:param name="id" />
<xsl:param name="qualified" select="false()" />
-
- <referenceLink target="{$id}" qualified="{$qualified}" />
-
+
+ <referenceLink target="{$id}" qualified="{$qualified}" />
+
</xsl:template>
-
- <xsl:template name="section">
+
+ <xsl:template name="section">
<xsl:param name="toggleSwitch" />
- <xsl:param name="title" />
- <xsl:param name="content" />
-
+ <xsl:param name="title" />
+ <xsl:param name="content" />
+
<xsl:variable name="toggleTitle" select="concat($toggleSwitch,'Toggle')" />
<xsl:variable name="toggleSection" select="concat($toggleSwitch,'Section')" />
-
- <h1 class="heading">
- <span onclick="ExpandCollapse({$toggleTitle})" style="cursor:default;" onkeypress="ExpandCollapse_CheckKey({$toggleTitle}, event)" tabindex="0">
- <img id="{$toggleTitle}" class="toggle" name="toggleSwitch">
- <includeAttribute name="src" item="iconPath">
- <parameter>collapse_all.gif</parameter>
- </includeAttribute>
- </img>
- <xsl:copy-of select="$title" />
- </span>
- </h1>
-
+
+ <h1 class="heading">
+ <span onclick="ExpandCollapse({$toggleTitle})" style="cursor:default;" onkeypress="ExpandCollapse_CheckKey({$toggleTitle}, event)" tabindex="0">
+ <img id="{$toggleTitle}" class="toggle" name="toggleSwitch">
+ <includeAttribute name="src" item="iconPath">
+ <parameter>collapse_all.gif</parameter>
+ </includeAttribute>
+ </img>
+ <xsl:copy-of select="$title" />
+ </span>
+ </h1>
+
<div id="{$toggleSection}" class="section" name="collapseableSection" style="">
<xsl:copy-of select="$content" />
</div>
-
- </xsl:template>
+
+ </xsl:template>
<xsl:template name="subSection">
<xsl:param name="title" />
@@ -914,7 +655,7 @@
<xsl:copy-of select="$title" />
</h4>
<xsl:copy-of select="$content" />
-
+
</xsl:template>
<xsl:template name="memberIntro">
@@ -946,7 +687,7 @@
<includeAttribute name="title" item="footerImage" />
</img>
</div>
-
+
<include item="footer">
<parameter>
<xsl:value-of select="$key"/>
diff --git a/tools/Sandcastle/Presentation/vs2005/transforms/metadataHelp20.xsl b/tools/Sandcastle/Presentation/vs2005/transforms/metadataHelp20.xsl
index 59fe84a..49f1b6b 100644
--- a/tools/Sandcastle/Presentation/vs2005/transforms/metadataHelp20.xsl
+++ b/tools/Sandcastle/Presentation/vs2005/transforms/metadataHelp20.xsl
@@ -375,39 +375,51 @@
</xsl:choose>
</xsl:template>
+
<xsl:template name="helpMetadata">
<!-- F keywords -->
<xsl:choose>
<!-- namespace pages get the namespace keyword, if it exists -->
<xsl:when test="$group='namespace'">
<xsl:variable name="namespace" select="/document/reference/apidata/@name" />
- <xsl:if test="boolean($namespace != '')">
+ <xsl:if test="string($namespace) != ''">
<MSHelp:Keyword Index="F" Term="{$namespace}" />
</xsl:if>
</xsl:when>
- <!-- type overview and member list pages get type and namespace.type keywords -->
- <xsl:when test="$group='type' or ($group='list' and $subgroup='members')">
+ <!-- Type overview page gets type and namespace.type keywords. -->
+ <xsl:when test="$group='type'">
<xsl:variable name="namespace" select="/document/reference/containers/namespace/apidata/@name" />
<xsl:variable name="type">
<xsl:for-each select="/document/reference[1]">
<xsl:call-template name="typeNameWithTicks" />
</xsl:for-each>
</xsl:variable>
- <MSHelp:Keyword Index="F" Term="{$type}" />
- <xsl:if test="boolean($namespace != '')">
- <MSHelp:Keyword Index="F" Term="{concat($namespace,'.',$type)}" />
- </xsl:if>
+ <xsl:choose>
+ <xsl:when test="string($namespace) != ''">
+ <MSHelp:Keyword Index="F" Term="{concat($namespace,'.',$type)}" />
+ </xsl:when>
+ <xsl:otherwise>
+ <MSHelp:Keyword Index="F" Term="{$type}" />
+ </xsl:otherwise>
+ </xsl:choose>
<xsl:if test="$subgroup = 'enumeration'">
<xsl:for-each select="/document/reference/elements/element">
- <MSHelp:Keyword Index="F" Term="{concat($type, '.', apidata/@name)}" />
- <xsl:if test="boolean($namespace)">
- <MSHelp:Keyword Index="F" Term="{concat($namespace,'.',$type, '.', apidata/@name)}" />
- </xsl:if>
+ <xsl:choose>
+ <xsl:when test="string($namespace) != ''">
+ <MSHelp:Keyword Index="F" Term="{concat($namespace,'.',$type, '.', apidata/@name)}" />
+ </xsl:when>
+ <xsl:otherwise>
+ <MSHelp:Keyword Index="F" Term="{concat($type, '.', apidata/@name)}" />
+ </xsl:otherwise>
+ </xsl:choose>
</xsl:for-each>
</xsl:if>
<xsl:call-template name="xamlMSHelpFKeywords"/>
</xsl:when>
-
+
+ <!-- No F keywords on AllMembers pages, TFS 851543. -->
+ <xsl:when test="$group='list' and $subgroup='members'" />
+
<!-- overload list pages get member, type.member, and namepsace.type.member keywords -->
<xsl:when test="$group='list' and $subgroup='overload'">
<xsl:variable name="namespace" select="/document/reference/containers/namespace/apidata/@name" />
@@ -427,11 +439,15 @@
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
- <MSHelp:Keyword Index="F" Term="{$member}" />
- <MSHelp:Keyword Index="F" Term="{concat($type, '.', $member)}" />
- <xsl:if test="boolean($namespace != '')">
- <MSHelp:Keyword Index="F" Term="{concat($namespace, '.', $type, '.', $member)}" />
- </xsl:if>
+
+ <xsl:choose>
+ <xsl:when test="string($namespace) != ''">
+ <MSHelp:Keyword Index="F" Term="{concat($namespace,'.',$type, '.', $member)}" />
+ </xsl:when>
+ <xsl:otherwise>
+ <MSHelp:Keyword Index="F" Term="{concat($type, '.', $member)}" />
+ </xsl:otherwise>
+ </xsl:choose>
</xsl:when>
<!-- no F1 help entries for overload signature topics -->
@@ -475,11 +491,16 @@
</xsl:when>
<xsl:otherwise>
-->
- <MSHelp:Keyword Index="F" Term="{$member}" />
+
+ <xsl:choose>
+ <xsl:when test="string($namespace) != ''">
+ <MSHelp:Keyword Index="F" Term="{concat($namespace,'.',$type, '.', $member)}" />
+ </xsl:when>
+ <xsl:otherwise>
<MSHelp:Keyword Index="F" Term="{concat($type, '.', $member)}" />
- <xsl:if test="boolean($namespace != '')">
- <MSHelp:Keyword Index="F" Term="{concat($namespace, '.', $type, '.', $member)}" />
- </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+
<!--
</xsl:otherwise>
</xsl:choose>
@@ -541,6 +562,11 @@
<MSHelp:Attr Name="DevLang" Value="{$devlang}" />
</xsl:if>
</xsl:when>
+ <xsl:when test="$devlang = 'C++'">
+ <xsl:if test="boolean(/document/reference/versions/versions[not(@name='netfw')])">
+ <MSHelp:Attr Name="DevLang" Value="{$devlang}" />
+ </xsl:if>
+ </xsl:when>
<xsl:otherwise>
<MSHelp:Attr Name="DevLang" Value="{$devlang}" />
</xsl:otherwise>
diff --git a/tools/Sandcastle/Presentation/vs2005/transforms/metadataHelp30.xsl b/tools/Sandcastle/Presentation/vs2005/transforms/metadataHelp30.xsl
index a5b7e77..f8d6d3d 100644
--- a/tools/Sandcastle/Presentation/vs2005/transforms/metadataHelp30.xsl
+++ b/tools/Sandcastle/Presentation/vs2005/transforms/metadataHelp30.xsl
@@ -74,28 +74,24 @@
<xsl:call-template name="typeNameWithTicks" />
</xsl:for-each>
</xsl:variable>
- <xsl:choose>
- <xsl:when test="$namespace=''">
- <meta name="Microsoft.Help.F1" content="{$type}" />
- </xsl:when>
- <xsl:otherwise>
- <meta name="Microsoft.Help.F1" content="{concat($namespace,'.',$type)}" />
- </xsl:otherwise>
- </xsl:choose>
+ <xsl:call-template name="writeF1WithApiName">
+ <xsl:with-param name="namespace" select="$namespace" />
+ <xsl:with-param name="type" select="$type" />
+ <xsl:with-param name="member" select="''" />
+ </xsl:call-template>
- <!-- for enums, write F1 keywords for each enum member -->
+ <!-- for enums, write F1 keywords for each enum member -->
<xsl:if test="$subgroup = 'enumeration'">
<xsl:for-each select="/document/reference/elements/element">
- <xsl:choose>
- <xsl:when test="$namespace=''">
- <meta name="Microsoft.Help.F1" content="{concat($type, '.', apidata/@name)}" />
- </xsl:when>
- <xsl:otherwise>
- <meta name="Microsoft.Help.F1" content="{concat($namespace,'.',$type, '.', apidata/@name)}" />
- </xsl:otherwise>
- </xsl:choose>
+ <xsl:call-template name="writeF1WithApiName">
+ <xsl:with-param name="namespace" select="$namespace" />
+ <xsl:with-param name="type" select="$type" />
+ <xsl:with-param name="member" select="apidata/@name" />
+ </xsl:call-template>
+
</xsl:for-each>
</xsl:if>
+
<!-- Insert additional F1 keywords to support XAML for class, struct, and enum topics in a set of namespaces. -->
<xsl:call-template name="xamlMSHelpFKeywords30"/>
@@ -103,14 +99,56 @@
<!-- overload list pages get namespace.type.member keyword -->
<xsl:when test="$group='list' and $subgroup='overload'">
+ <xsl:variable name="namespace" select="/document/reference/containers/namespace/apidata/@name" />
+ <xsl:variable name="type">
+ <xsl:for-each select="/document/reference[1]/containers">
+ <xsl:call-template name="typeNameWithTicks" />
+ </xsl:for-each>
+ </xsl:variable>
+
<xsl:variable name="containingTypeId" select="/document/reference/containers/type[1]/@api" />
<!-- do not write F1 keyword for overload list topics that contain only inherited members -->
<xsl:if test="/document/reference/elements//element/containers/type[1][@api=$containingTypeId]">
- <xsl:call-template name="memberF1KeywordsHelp30"/>
+
+ <!-- Generate a result tree fragment with all of the names for this overload page, TFS 856956, 864173-->
+ <xsl:variable name="F1Names">
+ <xsl:choose>
+ <xsl:when test="/document/reference/apidata[@subgroup='constructor']">
+ <name>
+ <xsl:text>#ctor</xsl:text>
+ </name>
+ <name>
+ <xsl:value-of select="/document/reference/containers/type[1]/apidata/@name" />
+ </name>
+ </xsl:when>
+ <xsl:otherwise>
+ <name>
+ <xsl:value-of select="/document/reference/apidata/@name" />
+ </name>
+ <xsl:for-each select="/document/reference/elements/element[templates and containers/type[1][@api=$containingTypeId]]">
+ <name>
+ <xsl:value-of select="apidata/@name" />
+ <xsl:text>``</xsl:text>
+ <xsl:value-of select="count(templates/template)" />
+ </name>
+ </xsl:for-each>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:for-each select="msxsl:node-set($F1Names)//name[not(. = preceding::name)]">
+ <xsl:sort select="." />
+ <xsl:call-template name="writeF1WithApiName">
+ <xsl:with-param name="namespace" select="$namespace" />
+ <xsl:with-param name="type" select="$type" />
+ <xsl:with-param name="member" select="." />
+ </xsl:call-template>
+ </xsl:for-each>
</xsl:if>
</xsl:when>
+
<!-- member pages -->
<xsl:when test="$group='member'">
<xsl:choose>
@@ -120,6 +158,24 @@
<!-- no F1 help entries for explicit interface implementation members -->
<xsl:when test="/document/reference[memberdata[@visibility='private'] and proceduredata[@virtual = 'true']]"/>
+ <!-- Property pages -->
+ <xsl:when test="$subgroup = 'property'">
+
+ <xsl:variable name="type">
+ <xsl:for-each select="/document/reference[1]/containers">
+ <xsl:call-template name="typeNameWithTicks" />
+ </xsl:for-each>
+ </xsl:variable>
+
+ <xsl:for-each select="document/reference/apidata/@name | document/reference/getter/@name | document/reference/setter/@name">
+ <xsl:call-template name="writeF1WithApiName">
+ <xsl:with-param name="namespace" select="/document/reference/containers/namespace/apidata/@name" />
+ <xsl:with-param name="type" select="$type" />
+ <xsl:with-param name="member" select="." />
+ </xsl:call-template>
+ </xsl:for-each>
+ </xsl:when>
+
<!-- other member pages get namespace.type.member keywords -->
<xsl:otherwise>
<xsl:call-template name="memberF1KeywordsHelp30"/>
@@ -130,6 +186,51 @@
</xsl:choose>
</xsl:template>
+ <xsl:template name="writeF1WithApiName">
+ <xsl:param name="namespace"/>
+ <xsl:param name="type" />
+ <xsl:param name="member" />
+
+ <!-- Make versions of namespace and member that are joinable. -->
+
+ <xsl:variable name="namespaceJoinable">
+ <xsl:choose>
+ <xsl:when test="$namespace = ''">
+ <xsl:value-of select="''" />
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="concat($namespace, '.')" />
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="memberJoinable">
+ <xsl:choose>
+ <xsl:when test="$member = ''">
+ <xsl:value-of select="''" />
+ </xsl:when>
+ <xsl:when test="substring($type, string-length($type)) = '.'">
+ <xsl:value-of select="$member" />
+ </xsl:when>
+ <xsl:when test="substring($member, string-length($member)) = '.'">
+ <xsl:value-of select="substring($member, string-length($member) - 1)" />
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="concat('.', $member)" />
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+
+ <xsl:variable name="apiName" select="concat($namespaceJoinable, $type, $memberJoinable)" />
+
+
+ <xsl:if test="not($namespaceJoinable != '' and $type = '' and $memberJoinable != '') and $apiName != ''">
+ <meta name="Microsoft.Help.F1" content="{concat($namespaceJoinable, $type, $memberJoinable)}" />
+ </xsl:if>
+
+ </xsl:template>
+
<xsl:template name="memberF1KeywordsHelp30">
<xsl:variable name="namespace" select="/document/reference/containers/namespace/apidata/@name" />
<xsl:variable name="type">
@@ -151,14 +252,21 @@
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
- <xsl:choose>
- <xsl:when test="$namespace=''">
- <meta name="Microsoft.Help.F1" content="{concat($type, '.', $member)}" />
- </xsl:when>
- <xsl:otherwise>
- <meta name="Microsoft.Help.F1" content="{concat($namespace, '.', $type, '.', $member)}" />
- </xsl:otherwise>
- </xsl:choose>
+
+ <xsl:call-template name="writeF1WithApiName">
+ <xsl:with-param name="namespace" select="$namespace" />
+ <xsl:with-param name="type" select="$type" />
+ <xsl:with-param name="member" select="$member" />
+ </xsl:call-template>
+
+ <!-- Write the constructor again as type.type -->
+ <xsl:if test="/document/reference/apidata[@subgroup='constructor']">
+ <xsl:call-template name="writeF1WithApiName">
+ <xsl:with-param name="namespace" select="$namespace" />
+ <xsl:with-param name="type" select="$type" />
+ <xsl:with-param name="member" select="/document/reference/containers/type/apidata/@name" />
+ </xsl:call-template>
+ </xsl:if>
</xsl:template>
<!--
@@ -550,10 +658,12 @@
</xsl:if>
<!-- Microsoft.Help.TocParent -->
- <xsl:for-each select="/document/metadata/attribute[@name='TOCParent']">
- <meta name="Microsoft.Help.TocParent" content="{.}" />
- <meta name="Microsoft.Help.TocOrder" content="0" />
- </xsl:for-each>
+ <xsl:if test="/document/metadata/attribute[@name='TOCParent']">
+ <meta name="Microsoft.Help.TocParent" content="{/document/metadata/attribute[@name='TOCParent']}" />
+ </xsl:if>
+ <xsl:if test="/document/metadata/attribute[@name='TOCOrder']">
+ <meta name="Microsoft.Help.TocOrder" content="{/document/metadata/attribute[@name='TOCOrder']}" />
+ </xsl:if>
<!-- Microsoft.Help.Product -->
<!-- Added by MTPS -->
diff --git a/tools/Sandcastle/Presentation/vs2005/transforms/utilities_dduexml.xsl b/tools/Sandcastle/Presentation/vs2005/transforms/utilities_dduexml.xsl
index 40d4cbe..84e9cca 100644
--- a/tools/Sandcastle/Presentation/vs2005/transforms/utilities_dduexml.xsl
+++ b/tools/Sandcastle/Presentation/vs2005/transforms/utilities_dduexml.xsl
@@ -137,25 +137,25 @@
<xsl:template match="ddue:notesForImplementers">
<p/>
- <b>
+ <span class="label">
<include item="NotesForImplementers"/>
- </b>
+ </span>
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="ddue:notesForCallers">
<p/>
- <b>
+ <span class="label">
<include item="NotesForCallers"/>
- </b>
+ </span>
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="ddue:notesForInheritors">
<p/>
- <b>
+ <span class="label">
<include item="NotesForInheritors"/>
- </b>
+ </span>
<xsl:apply-templates/>
</xsl:template>
@@ -229,6 +229,9 @@
<xsl:when test="@language = 'xaml' or @language = 'XAML'">
<xsl:text>XAML</xsl:text>
</xsl:when>
+ <xsl:when test="@language = 'javascript' or @language = 'JavaScript'">
+ <xsl:text>JavaScript</xsl:text>
+ </xsl:when>
<xsl:otherwise>
<xsl:text>other</xsl:text>
</xsl:otherwise>
@@ -360,6 +363,7 @@
<xsl:variable name="titleName" select="../../ddue:title"/>
+<!-- 'Output' was translated in JPN file, so the following code does not work.
<xsl:choose>
<xsl:when test="(($titleName = 'Output') or ($titleName = 'Input') or ($titleName = 'SampleOutput'))">
<div class="code">
@@ -386,11 +390,16 @@
</xsl:call-template>
</xsl:otherwise>
</xsl:choose>
+-->
+
+ <xsl:call-template name="codeSection">
+ <xsl:with-param name="codeLang" select="$codeLang" />
+ </xsl:call-template>
</xsl:template>
<xsl:template match="ddue:sampleCode">
- <div><b><xsl:value-of select="@language"/></b></div>
+ <div><span class="label"><xsl:value-of select="@language"/></span></div>
<div class="code"><pre><xsl:apply-templates /></pre></div>
</xsl:template>
@@ -862,7 +871,7 @@
<xsl:template match="ddue:codeFeaturedElement">
<xsl:if test="normalize-space(.)">
<!--<xsl:if test="count(preceding::ddue:codeFeaturedElement) &gt; 0"><br/></xsl:if>-->
- <b><xsl:apply-templates/></b>
+ <span class="label"><xsl:apply-templates/></span>
</xsl:if>
</xsl:template>
@@ -1272,14 +1281,14 @@
<xsl:value-of select="concat($subgroup, 'Lower')"/>
</parameter>
<parameter>
- <b>
+ <span class="label">
<xsl:for-each select="/document/reference/attributes/attribute[type[@api='T:System.Security.Permissions.HostProtectionAttribute']]/assignment">
<xsl:value-of select="@name"/>
<xsl:if test="position() != last()">
<xsl:text> | </xsl:text>
</xsl:if>
</xsl:for-each>
- </b>
+ </span>
</parameter>
</include>
</p>
@@ -1398,11 +1407,11 @@
<include item="remarksTitle" />
</xsl:with-param>
<xsl:with-param name="content">
+ <xsl:apply-templates select="$node/ddue:remarks/*" />
<!-- HostProtectionAttribute -->
<xsl:if test="/document/reference/attributes/attribute/type[@api='T:System.Security.Permissions.HostProtectionAttribute']">
<xsl:call-template name="hostProtectionContent" />
</xsl:if>
- <xsl:apply-templates select="$node/ddue:remarks/*" />
<xsl:apply-templates select="$node/ddue:notesForImplementers"/>
<xsl:apply-templates select="$node/ddue:notesForCallers"/>
<xsl:apply-templates select="$node/ddue:notesForInheritors"/>
diff --git a/tools/Sandcastle/Presentation/vs2005/transforms/utilities_reference.xsl b/tools/Sandcastle/Presentation/vs2005/transforms/utilities_reference.xsl
index 8edafbc..01dcf34 100644
--- a/tools/Sandcastle/Presentation/vs2005/transforms/utilities_reference.xsl
+++ b/tools/Sandcastle/Presentation/vs2005/transforms/utilities_reference.xsl
@@ -90,14 +90,18 @@
</xsl:if>
</xsl:template>
- <xsl:template name="insertStylesheets">
- <link rel="stylesheet" type="text/css" href="../styles/presentation.css" />
- <!-- make mshelp links work -->
- <link rel="stylesheet" type="text/css" href="ms-help://Hx/HxRuntime/HxLink.css" />
+ <xsl:template name="insertStylesheets">
+ <link rel="stylesheet" type="text/css">
+ <includeAttribute name="href" item="stylePath">
+ <parameter>presentation.css</parameter>
+ </includeAttribute>
+ </link>
+ <!-- make mshelp links work -->
+ <link rel="stylesheet" type="text/css" href="ms-help://Hx/HxRuntime/HxLink.css" />
<!--<link rel="stylesheet" type="text/css" href="ms-help://Dx/DxRuntime/DxLink.css" />-->
- </xsl:template>
+ </xsl:template>
- <xsl:template name="insertScripts">
+ <xsl:template name="insertScripts">
<script type="text/javascript">
<includeAttribute name="src" item="scriptPath"><parameter>EventUtilities.js</parameter></includeAttribute>
<xsl:text> </xsl:text>
@@ -136,7 +140,20 @@
</xsl:with-param>
<xsl:with-param name="content">
<xsl:for-each select="parameter">
- <xsl:variable name="paramName" select="@name"/>
+
+ <!-- Use the reflection-generated parameter name when non-empty, otherwise use the authored parameter name. -->
+ <xsl:variable name="paramPosition" select="position()" />
+ <xsl:variable name="paramName">
+ <xsl:choose>
+ <xsl:when test="normalize-space(@name) != ''">
+ <xsl:value-of select="normalize-space(@name)" />
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="normalize-space(/document/comments/ddue:dduexml/ddue:parameters[1]/ddue:parameter[$paramPosition]/ddue:parameterReference)" />
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
<dl paramName="{$paramName}">
<dt>
<span class="parameter">
@@ -153,7 +170,7 @@
</include>
<br />
<xsl:call-template name="getParameterDescription">
- <xsl:with-param name="name" select="@name" />
+ <xsl:with-param name="name" select="$paramName" />
</xsl:call-template>
</dd>
</dl>
@@ -235,13 +252,16 @@
</tr>
</xsl:template>
- <xsl:template match="element" mode="enumeration">
+ <xsl:template match="element" mode="enumeration">
<xsl:variable name="supportedOnXna">
<xsl:call-template name="IsMemberSupportedOnXna"/>
</xsl:variable>
<xsl:variable name="supportedOnCf">
<xsl:call-template name="IsMemberSupportedOnCf"/>
</xsl:variable>
+ <xsl:variable name="supportedOnSilverlightMobile">
+ <xsl:call-template name="IsMemberSupportedOnSilverlightMobile" />
+ </xsl:variable>
<tr>
<td>
<!-- platform icons -->
@@ -264,20 +284,31 @@
<includeAttribute name="title" item="XNAFrameworkAltText" />
</img>
</xsl:if>
+ <xsl:if test="normalize-space($supportedOnSilverlightMobile)!=''">
+ <img data="silverlight_mobile">
+ <includeAttribute name="src" item="iconPath">
+ <parameter>slMobile.gif</parameter>
+ </includeAttribute>
+ <includeAttribute name="alt" item="SilverlightMobileAltText" />
+ <includeAttribute name="title" item="SilverlightMobileAltText" />
+ </img>
+ </xsl:if>
</td>
<xsl:variable name="id" select="@api" />
- <td target="{$id}">
- <span class="selflink"><xsl:value-of select="apidata/@name"/></span>
+ <td target="{$id}">
+ <span class="selflink">
+ <xsl:value-of select="apidata/@name"/>
+ </span>
</td>
- <td>
+ <td>
<xsl:if test="attributes/attribute/type[@api='T:System.ObsoleteAttribute']">
- <xsl:text> </xsl:text>
- <include item="obsoleteRed" />
- </xsl:if>
- <xsl:call-template name="getEnumMemberDescription" />
+ <xsl:text> </xsl:text>
+ <include item="obsoleteRed" />
+ </xsl:if>
+ <xsl:call-template name="getEnumMemberDescription" />
</td>
- </tr>
- </xsl:template>
+ </tr>
+ </xsl:template>
<xsl:template name="getEnumMemberDescription">
<xsl:choose>
@@ -894,38 +925,47 @@
</xsl:if>
</xsl:template>
+
+
<xsl:template match="elements" mode="member">
+ <!-- Filter out the Overload pages created by ApplyVSDocModel.xsl. These
+ pages (and the need for this filter) will go away once the full Brighton spec is implemented. -->
+ <xsl:variable name="filteredOverloadElements" select="element[starts-with(@api, 'Overload:')]/element | element[not(starts-with(@api, 'Overload:'))]" />
+
<xsl:call-template name="memberIntro" />
- <xsl:if test="element[apidata[@subgroup='constructor']][.//memberdata[@visibility='public' or @visibility='family' or @visibility='family or assembly' or @visibility='assembly'] or (.//memberdata[@visibility='private'] and not(.//proceduredata[@virtual = 'true']))]">
+ <!-- TODO: factor out these duplicated Xpaths by a new conditional in memberlistSection:
+ count($members) &gt; 0 -->
+
+ <xsl:if test="$filteredOverloadElements[apidata[@subgroup='constructor']][.//memberdata[@visibility='public' or @visibility='family' or @visibility='family or assembly' or @visibility='assembly'] or (.//memberdata[@visibility='private'] and not(.//proceduredata[@virtual = 'true']))]">
<xsl:call-template name="memberlistSection">
<xsl:with-param name="headerGroup" select="'constructor'" />
- <xsl:with-param name="members" select="element[apidata[@subgroup='constructor']][.//memberdata[@visibility='public' or @visibility='family' or @visibility='family or assembly' or @visibility='assembly'] or (.//memberdata[@visibility='private'] and not(.//proceduredata[@virtual = 'true']))]" />
+ <xsl:with-param name="members" select="$filteredOverloadElements[apidata[@subgroup='constructor']][.//memberdata[@visibility='public' or @visibility='family' or @visibility='family or assembly' or @visibility='assembly'] or (.//memberdata[@visibility='private'] and not(.//proceduredata[@virtual = 'true']))]" />
</xsl:call-template>
</xsl:if>
<!-- method table -->
- <xsl:if test="element[apidata[@subgroup='method' and not(@subsubgroup)]][.//memberdata[@visibility='public' or @visibility='family' or @visibility='family or assembly' or @visibility='assembly'] or (.//memberdata[@visibility='private'] and not(.//proceduredata[@virtual = 'true']))]">
+ <xsl:if test="$filteredOverloadElements[apidata[@subgroup='method' and not(@subsubgroup)]][.//memberdata[@visibility='public' or @visibility='family' or @visibility='family or assembly' or @visibility='assembly'] or (.//memberdata[@visibility='private'] and not(.//proceduredata[@virtual = 'true']))]">
<xsl:call-template name="memberlistSection">
<xsl:with-param name="headerGroup">method</xsl:with-param>
- <xsl:with-param name="members" select="element[apidata[@subgroup='method' and not(@subsubgroup)]][.//memberdata[@visibility='public' or @visibility='family' or @visibility='family or assembly' or @visibility='assembly'] or (.//memberdata[@visibility='private'] and not(.//proceduredata[@virtual = 'true']))]" />
+ <xsl:with-param name="members" select="$filteredOverloadElements[apidata[@subgroup='method' and not(@subsubgroup)]][.//memberdata[@visibility='public' or @visibility='family' or @visibility='family or assembly' or @visibility='assembly'] or (.//memberdata[@visibility='private'] and not(.//proceduredata[@virtual = 'true']))]" />
</xsl:call-template>
</xsl:if>
<!-- operator table -->
- <xsl:if test="element[apidata[@subsubgroup='operator']][.//memberdata[@visibility='public' or @visibility='family' or @visibility='family or assembly' or @visibility='assembly'] or (.//memberdata[@visibility='private'] and not(.//proceduredata[@virtual = 'true']))]">
+ <xsl:if test="$filteredOverloadElements[apidata[@subsubgroup='operator']][.//memberdata[@visibility='public' or @visibility='family' or @visibility='family or assembly' or @visibility='assembly'] or (.//memberdata[@visibility='private'] and not(.//proceduredata[@virtual = 'true']))]">
<xsl:call-template name="memberlistSection">
<xsl:with-param name="headerGroup">operator</xsl:with-param>
- <xsl:with-param name="members" select="element[apidata[@subsubgroup='operator']][.//memberdata[@visibility='public' or @visibility='family' or @visibility='family or assembly' or @visibility='assembly'] or (.//memberdata[@visibility='private'] and not(.//proceduredata[@virtual = 'true']))]" />
+ <xsl:with-param name="members" select="$filteredOverloadElements[apidata[@subsubgroup='operator']][.//memberdata[@visibility='public' or @visibility='family' or @visibility='family or assembly' or @visibility='assembly'] or (.//memberdata[@visibility='private'] and not(.//proceduredata[@virtual = 'true']))]" />
</xsl:call-template>
</xsl:if>
<!-- extension method table -->
- <xsl:if test="element/apidata[@subsubgroup='extension']">
+ <xsl:if test="$filteredOverloadElements[apidata[@subsubgroup='extension']]">
<xsl:call-template name="memberlistSection">
<xsl:with-param name="headerGroup">extensionMethod</xsl:with-param>
- <xsl:with-param name="members" select="element[apidata[@subsubgroup='extension']]" />
+ <xsl:with-param name="members" select="$filteredOverloadElements[apidata[@subsubgroup='extension']]" />
</xsl:call-template>
</xsl:if>
@@ -938,10 +978,10 @@
</xsl:if>
<!-- property table -->
- <xsl:if test="element[apidata[@subgroup='property' and not(@subsubgroup)]][.//memberdata[@visibility='public' or @visibility='family' or @visibility='family or assembly' or @visibility='assembly'] or (.//memberdata[@visibility='private'] and not(.//proceduredata[@virtual = 'true']))]">
+ <xsl:if test="$filteredOverloadElements[apidata[@subgroup='property' and not(@subsubgroup)]][.//memberdata[@visibility='public' or @visibility='family' or @visibility='family or assembly' or @visibility='assembly'] or (.//memberdata[@visibility='private'] and not(.//proceduredata[@virtual = 'true']))]">
<xsl:call-template name="memberlistSection">
<xsl:with-param name="headerGroup">property</xsl:with-param>
- <xsl:with-param name="members" select="element[apidata[@subgroup='property' and not(@subsubgroup)]][.//memberdata[@visibility='public' or @visibility='family' or @visibility='family or assembly' or @visibility='assembly'] or (.//memberdata[@visibility='private'] and not(.//proceduredata[@virtual = 'true']))]" />
+ <xsl:with-param name="members" select="$filteredOverloadElements[apidata[@subgroup='property' and not(@subsubgroup)]][.//memberdata[@visibility='public' or @visibility='family' or @visibility='family or assembly' or @visibility='assembly'] or (.//memberdata[@visibility='private'] and not(.//proceduredata[@virtual = 'true']))]" />
</xsl:call-template>
</xsl:if>
@@ -968,12 +1008,12 @@
<xsl:with-param name="members" select="element[apidata[@subsubgroup='attachedEvent']]" />
</xsl:call-template>
</xsl:if>
-
+
<!-- eii table -->
- <xsl:if test="element[memberdata[@visibility='private'] and proceduredata[@virtual = 'true']]">
+ <xsl:if test="$filteredOverloadElements[memberdata[@visibility='private'] and proceduredata[@virtual = 'true']]">
<xsl:call-template name="memberlistSection">
<xsl:with-param name="headerGroup">ExplicitInterfaceImplementation</xsl:with-param>
- <xsl:with-param name="members" select="element[.//memberdata[@visibility='private'] and .//proceduredata[@virtual = 'true']]" />
+ <xsl:with-param name="members" select="$filteredOverloadElements[.//memberdata[@visibility='private'] and .//proceduredata[@virtual = 'true']]" />
</xsl:call-template>
</xsl:if>
@@ -983,6 +1023,7 @@
<xsl:param name="members"/>
<xsl:param name="headerGroup" />
<xsl:param name="showParameters" select="'false'" />
+ <xsl:param name="sort" select="'true'" />
<xsl:variable name="header">
<xsl:value-of select="concat($headerGroup, 'Table')"/>
@@ -1010,11 +1051,20 @@
</tr>
<!-- add a row for each member of the current subgroup-visibility -->
- <xsl:apply-templates select="$members" mode="memberlistRow">
- <xsl:with-param name="showParameters" select="$showParameters" />
- <xsl:sort select="topicdata/@eiiName | apidata/@name" />
- <xsl:sort select="count(templates/*)" />
- </xsl:apply-templates>
+ <xsl:choose>
+ <xsl:when test="$sort = 'true'">
+ <xsl:apply-templates select="$members" mode="memberlistRow">
+ <xsl:with-param name="showParameters" select="$showParameters" />
+ <xsl:sort select="topicdata/@eiiName | apidata/@name"/>
+ <xsl:sort select="count(templates/*)" />
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="$members" mode="memberlistRow">
+ <xsl:with-param name="showParameters" select="$showParameters" />
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
</table>
</xsl:with-param>
</xsl:call-template>
@@ -1064,7 +1114,40 @@
</xsl:otherwise>
</xsl:choose>
</xsl:template>
-
+
+ <xsl:template name="IsMemberSupportedOnSilverlightMobile">
+ <xsl:choose>
+ <xsl:when test="element">
+ <xsl:for-each select="element">
+ <xsl:call-template name="IsMemberSupportedOnSilverlightMobile"/>
+ </xsl:for-each>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:variable name="platformFilterExcludesSilverlightMobile" select="boolean( platforms and not(platforms[platform[.='SilverlightPlatforms']]) )" />
+ <xsl:if test="boolean(not($platformFilterExcludesSilverlightMobile) and (@silverlight_mobile or element/@silverlight_mobile))">
+ <xsl:text>yes</xsl:text>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template name="IsMemberSupportedOnSilverlight">
+ <xsl:choose>
+ <xsl:when test="element">
+ <xsl:for-each select="element">
+ <xsl:call-template name="IsMemberSupportedOnSilverlight"/>
+ </xsl:for-each>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:variable name="platformFilterExcludesSilverlight" select="boolean( platforms and not(platforms[platform[.='SilverlightPlatforms']]) )" />
+ <xsl:if test="boolean(not($platformFilterExcludesSilverlight) and (@silverlight or element/@silverlight))">
+ <xsl:text>yes</xsl:text>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+
<xsl:template name="IsMemberStatic">
<xsl:choose>
<xsl:when test="element and not(@signatureset)">
@@ -1199,6 +1282,12 @@
<xsl:variable name="supportedOnCf">
<xsl:call-template name="IsMemberSupportedOnCf"/>
</xsl:variable>
+ <xsl:variable name="supportedOnSilverlight">
+ <xsl:call-template name="IsMemberSupportedOnSilverlight"/>
+ </xsl:variable>
+ <xsl:variable name="supportedOnSilverlightMobile">
+ <xsl:call-template name="IsMemberSupportedOnSilverlightMobile" />
+ </xsl:variable>
<xsl:variable name="staticMember">
<xsl:call-template name="IsMemberStatic"/>
</xsl:variable>
@@ -1255,6 +1344,12 @@
<xsl:if test="normalize-space($supportedOnXna)!=''">
<xsl:text>xnafw;</xsl:text>
</xsl:if>
+ <xsl:if test="normalize-space($supportedOnSilverlight) != ''">
+ <xsl:text>silverlight;</xsl:text>
+ </xsl:if>
+ <xsl:if test="normalize-space($supportedOnSilverlightMobile) != ''">
+ <xsl:text>silverlight_mobile;</xsl:text>
+ </xsl:if>
<xsl:if test="normalize-space($notsupportedOnNetfw)!=''">
<xsl:text>notNetfw;</xsl:text>
</xsl:if>
@@ -1289,6 +1384,8 @@
<xsl:with-param name="staticMember" select="normalize-space($staticMember)" />
<xsl:with-param name="supportedOnXna" select="normalize-space($supportedOnXna)"/>
<xsl:with-param name="supportedOnCf" select="normalize-space($supportedOnCf)"/>
+ <xsl:with-param name="supportedOnSilverlight" select="normalized-space($supportedOnSilverlight)" />
+ <xsl:with-param name="supportedOnSilverlightMobile" select="normalize-space($supportedOnSilverlightMobile)" />
</xsl:call-template>
</td>
<td>
@@ -1296,6 +1393,9 @@
<xsl:when test="normalize-space($conversionOperator)!=''">
<referenceLink target="{@api}" show-parameters="true" />
</xsl:when>
+ <xsl:when test="memberdata[@overload] or starts-with(../@api, 'Overload:')">
+ <referenceLink target="{@api}" show-parameters="true" />
+ </xsl:when>
<xsl:when test="@source='extension'">
<xsl:call-template name="extensionMethodDisplayLink"/>
</xsl:when>
@@ -1455,6 +1555,7 @@
<xsl:with-param name="headerGroup" select="'overloadMembers'" />
<xsl:with-param name="members" select="element" />
<xsl:with-param name="showParameters" select="'true'" />
+ <xsl:with-param name="sort" select="'false'" />
</xsl:call-template>
</xsl:if>
<xsl:apply-templates select="element" mode="overloadSections">
@@ -1497,6 +1598,7 @@
<xsl:param name="staticMember" />
<xsl:param name="supportedOnXna"/>
<xsl:param name="supportedOnCf"/>
+ <xsl:param name="supportedOnSilverlightMobile" />
<xsl:variable name="memberSubgroup">
<xsl:choose>
@@ -1580,6 +1682,17 @@
<includeAttribute name="title" item="XNAFrameworkAltText" />
</img>
</xsl:if>
+
+ <xsl:if test="$supportedOnSilverlightMobile!=''">
+ <img data="silverlight_mobile">
+ <includeAttribute name="src" item="iconPath">
+ <parameter>slMobile.gif</parameter>
+ </includeAttribute>
+ <includeAttribute name="alt" item="SilverlightMobileAltText" />
+ <includeAttribute name="title" item="SilverlightMobileAltText" />
+ </img>
+ </xsl:if>
+
</xsl:template>
<!-- Assembly information -->
@@ -1892,6 +2005,20 @@
<xsl:apply-templates select="templates" mode="decorated" />
</xsl:for-each>
</xsl:when>
+ <!-- Use just the plain, unadorned type.api name for overload pages with templates -->
+ <xsl:when test="$topic-group='list' and $topic-subgroup='overload' and /document/reference/templates">
+ <xsl:for-each select="/document/reference/containers/type[1]">
+ <xsl:call-template name="typeNameDecorated" />
+ </xsl:for-each>
+ <span class="languageSpecificText">
+ <span class="cs">.</span>
+ <span class="vb">.</span>
+ <span class="cpp">::</span>
+ <span class="nu">.</span>
+ <span class="fs">.</span>
+ </span>
+ <xsl:value-of select="/document/reference/apidata/@name" />
+ </xsl:when>
<!-- normal member pages use the qualified member name -->
<xsl:when test="($topic-group='api' and $api-group='member') or ($topic-subgroup='overload' and $api-group='member')">
<xsl:for-each select="/document/reference/containers/type[1]">
@@ -1984,7 +2111,11 @@
<xsl:text>.</xsl:text>
<xsl:value-of select="apidata/@name" />
<xsl:apply-templates select="templates" mode="plain" />
- </xsl:for-each>
+ </xsl:for-each>
+ </xsl:when>
+ <!-- Use just the plain, unadorned api name for overload pages with templates -->
+ <xsl:when test="$topic-group='list' and $topic-subgroup='overload' and /document/reference/templates">
+ <xsl:value-of select="/document/reference/apidata/@name" />
</xsl:when>
<xsl:otherwise>
<!-- but other members just use the name -->
diff --git a/tools/Sandcastle/Source/BuildAssembler/BuildAssembler/BuildAssemblerConsole.csproj b/tools/Sandcastle/Source/BuildAssembler/BuildAssembler/BuildAssemblerConsole.csproj
new file mode 100644
index 0000000..7086f62
--- /dev/null
+++ b/tools/Sandcastle/Source/BuildAssembler/BuildAssembler/BuildAssemblerConsole.csproj
@@ -0,0 +1,65 @@
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ <ProductVersion>8.0.50727</ProductVersion>
+ <SchemaVersion>2.0</SchemaVersion>
+ <ProjectGuid>{A44C178B-5384-4F5C-BB54-85C720796CE5}</ProjectGuid>
+ <OutputType>Exe</OutputType>
+ <AppDesignerFolder>Properties</AppDesignerFolder>
+ <RootNamespace>BuildAssemblerConsole</RootNamespace>
+ <AssemblyName>BuildAssembler</AssemblyName>
+ <SccProjectName>SAK</SccProjectName>
+ <SccLocalPath>SAK</SccLocalPath>
+ <SccAuxPath>SAK</SccAuxPath>
+ <SccProvider>SAK</SccProvider>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>false</Optimize>
+ <OutputPath>bin\Debug\</OutputPath>
+ <DefineConstants>DEBUG;TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <DebugType>pdbonly</DebugType>
+ <Optimize>true</Optimize>
+ <OutputPath>bin\Release\</OutputPath>
+ <DefineConstants>TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <ItemGroup>
+ <Reference Include="System" />
+ <Reference Include="System.Data" />
+ <Reference Include="System.Xml" />
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="BuildAssemblerConsole.cs" />
+ <Compile Include="Properties\AssemblyInfo.cs" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\CommandLine\CommandLine\CommandLine.csproj">
+ <Project>{656CFBE1-958B-4781-947C-D9EE65D90494}</Project>
+ <Name>CommandLine</Name>
+ </ProjectReference>
+ <ProjectReference Include="..\BuildAssembler\BuildAssembler.csproj">
+ <Project>{5B0B5372-3CEF-4263-A5DC-B541EF47F86C}</Project>
+ <Name>BuildAssembler</Name>
+ </ProjectReference>
+ <ProjectReference Include="..\BuildComponents\BuildComponents.csproj">
+ <Project>{528BB3F4-05CD-4FB8-8CB2-8C404B6656FD}</Project>
+ <Name>BuildComponents</Name>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+ <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
+ Other similar extension points exist, see Microsoft.Common.targets.
+ <Target Name="BeforeBuild">
+ </Target>
+ <Target Name="AfterBuild">
+ </Target>
+ -->
+</Project> \ No newline at end of file
diff --git a/tools/Sandcastle/Source/BuildAssembler/BuildAssembler/Properties/AssemblyInfo.cs b/tools/Sandcastle/Source/BuildAssembler/BuildAssembler/Properties/AssemblyInfo.cs
index a5d12d9..a699644 100644
--- a/tools/Sandcastle/Source/BuildAssembler/BuildAssembler/Properties/AssemblyInfo.cs
+++ b/tools/Sandcastle/Source/BuildAssembler/BuildAssembler/Properties/AssemblyInfo.cs
@@ -34,5 +34,5 @@ using System.Runtime.InteropServices;
// Build Number
// Revision
//
-[assembly: AssemblyVersion("2.5.10626.00")]
-[assembly: AssemblyFileVersion("2.5.10626.00")]
+[assembly: AssemblyVersion("2.6.10621.1")]
+[assembly: AssemblyFileVersion("2.6.10621.1")]
diff --git a/tools/Sandcastle/Source/BuildAssembler/BuildAssemblerLibrary/Properties/AssemblyInfo.cs b/tools/Sandcastle/Source/BuildAssembler/BuildAssemblerLibrary/Properties/AssemblyInfo.cs
index e87d8d5..4b5fcda 100644
--- a/tools/Sandcastle/Source/BuildAssembler/BuildAssemblerLibrary/Properties/AssemblyInfo.cs
+++ b/tools/Sandcastle/Source/BuildAssembler/BuildAssemblerLibrary/Properties/AssemblyInfo.cs
@@ -39,5 +39,5 @@ using System.Runtime.InteropServices;
//
// You can specify all the values or you can default the Revision and Build Numbers
// by using the '*' as shown below:
-[assembly: AssemblyVersion("2.5.10626.00")]
-[assembly: AssemblyFileVersion("2.5.10626.00")]
+[assembly: AssemblyVersion("2.6.10621.1")]
+[assembly: AssemblyFileVersion("2.6.10621.1")]
diff --git a/tools/Sandcastle/Source/BuildAssembler/BuildComponents/BuildComponents.csproj b/tools/Sandcastle/Source/BuildAssembler/BuildComponents/BuildComponents.csproj
index 9e3932f..e844ba6 100644
--- a/tools/Sandcastle/Source/BuildAssembler/BuildComponents/BuildComponents.csproj
+++ b/tools/Sandcastle/Source/BuildAssembler/BuildComponents/BuildComponents.csproj
@@ -89,6 +89,7 @@
<Compile Include="GlobalSuppressions.cs" />
<Compile Include="HxfGeneratorComponent.cs" />
<Compile Include="IntellisenseComponent2.cs" />
+ <Compile Include="MSHCComponent.cs" />
<Compile Include="MsdnResolver.cs" />
<Compile Include="References.cs" />
<Compile Include="ResolveReferenceLinksComponent2.cs" />
diff --git a/tools/Sandcastle/Source/BuildAssembler/BuildComponents/GlobalSuppressions.cs b/tools/Sandcastle/Source/BuildAssembler/BuildComponents/GlobalSuppressions.cs
index 3fd693e..65a3f01 100644
--- a/tools/Sandcastle/Source/BuildAssembler/BuildComponents/GlobalSuppressions.cs
+++ b/tools/Sandcastle/Source/BuildAssembler/BuildComponents/GlobalSuppressions.cs
@@ -317,3 +317,41 @@
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "Microsoft.Ddue.Tools.Specialization.#arguments")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2208:InstantiateArgumentExceptionsCorrectly", Scope = "member", Target = "Microsoft.Ddue.Tools.XmlTargetCollectionUtilities.#CreateTypeReference(System.Xml.XPath.XPathNavigator)")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1822:MarkMembersAsStatic", Scope = "member", Target = "Microsoft.Ddue.Tools.LinkTextResolver.#WriteConversionOperator(Microsoft.Ddue.Tools.ProcedureTarget,System.Xml.XmlWriter)")]
+[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "MHS", Scope = "type", Target = "Microsoft.Ddue.Tools.MHSComponent")]
+[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider", MessageId = "System.String.Format(System.String,System.Object)", Scope = "member", Target = "Microsoft.Ddue.Tools.MHSComponent.#AddMHSMeta(System.String,System.String,System.Boolean)")]
+[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1304:SpecifyCultureInfo", MessageId = "System.String.ToLower", Scope = "member", Target = "Microsoft.Ddue.Tools.MHSComponent.#Apply(System.Xml.XmlDocument,System.String)")]
+[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider", MessageId = "System.Int32.ToString", Scope = "member", Target = "Microsoft.Ddue.Tools.MHSComponent.#Apply(System.Xml.XmlDocument,System.String)")]
+[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider", MessageId = "System.String.Format(System.String,System.Object)", Scope = "member", Target = "Microsoft.Ddue.Tools.MHSComponent.#Apply(System.Xml.XmlDocument,System.String)")]
+[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider", MessageId = "System.String.Format(System.String,System.Object)", Scope = "member", Target = "Microsoft.Ddue.Tools.MHSComponent.#FixHeaderBottomBackground(System.String,System.String)")]
+[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider", MessageId = "System.String.Format(System.String,System.Object,System.Object)", Scope = "member", Target = "Microsoft.Ddue.Tools.MHSComponent.#ModifyAttribute(System.String,System.String)")]
+[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1812:AvoidUninstantiatedInternalClasses", Scope = "type", Target = "Microsoft.Ddue.Tools.MHSComponent+ConfigurationAttr")]
+[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1812:AvoidUninstantiatedInternalClasses", Scope = "type", Target = "Microsoft.Ddue.Tools.MHSComponent+ConfigurationTag")]
+[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1812:AvoidUninstantiatedInternalClasses", Scope = "type", Target = "Microsoft.Ddue.Tools.MHSComponent+Help2Attr")]
+[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1812:AvoidUninstantiatedInternalClasses", Scope = "type", Target = "Microsoft.Ddue.Tools.MHSComponent+Help2Namespace")]
+[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1812:AvoidUninstantiatedInternalClasses", Scope = "type", Target = "Microsoft.Ddue.Tools.MHSComponent+Help2Value")]
+[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1812:AvoidUninstantiatedInternalClasses", Scope = "type", Target = "Microsoft.Ddue.Tools.MHSComponent+Help2XPath")]
+[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1812:AvoidUninstantiatedInternalClasses", Scope = "type", Target = "Microsoft.Ddue.Tools.MHSComponent+MHSDefault")]
+[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1812:AvoidUninstantiatedInternalClasses", Scope = "type", Target = "Microsoft.Ddue.Tools.MHSComponent+MHSMetaAttr")]
+[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1812:AvoidUninstantiatedInternalClasses", Scope = "type", Target = "Microsoft.Ddue.Tools.MHSComponent+MHSMetaName")]
+[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1812:AvoidUninstantiatedInternalClasses", Scope = "type", Target = "Microsoft.Ddue.Tools.MHSComponent+MHSTag")]
+[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1812:AvoidUninstantiatedInternalClasses", Scope = "type", Target = "Microsoft.Ddue.Tools.MHSComponent+TocAttr")]
+[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1812:AvoidUninstantiatedInternalClasses", Scope = "type", Target = "Microsoft.Ddue.Tools.MHSComponent+TocXPath")]
+[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider", MessageId = "System.String.Format(System.String,System.Object)", Scope = "member", Target = "Microsoft.Ddue.Tools.MSHCComponent.#AddMHSMeta(System.String,System.String,System.Boolean)")]
+[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1304:SpecifyCultureInfo", MessageId = "System.String.ToLower", Scope = "member", Target = "Microsoft.Ddue.Tools.MSHCComponent.#Apply(System.Xml.XmlDocument,System.String)")]
+[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider", MessageId = "System.Int32.ToString", Scope = "member", Target = "Microsoft.Ddue.Tools.MSHCComponent.#Apply(System.Xml.XmlDocument,System.String)")]
+[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider", MessageId = "System.String.Format(System.String,System.Object)", Scope = "member", Target = "Microsoft.Ddue.Tools.MSHCComponent.#Apply(System.Xml.XmlDocument,System.String)")]
+[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider", MessageId = "System.String.Format(System.String,System.Object)", Scope = "member", Target = "Microsoft.Ddue.Tools.MSHCComponent.#FixHeaderBottomBackground(System.String,System.String)")]
+[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider", MessageId = "System.String.Format(System.String,System.Object,System.Object)", Scope = "member", Target = "Microsoft.Ddue.Tools.MSHCComponent.#ModifyAttribute(System.String,System.String)")]
+[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1812:AvoidUninstantiatedInternalClasses", Scope = "type", Target = "Microsoft.Ddue.Tools.MSHCComponent+ConfigurationAttr")]
+[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1812:AvoidUninstantiatedInternalClasses", Scope = "type", Target = "Microsoft.Ddue.Tools.MSHCComponent+ConfigurationTag")]
+[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1812:AvoidUninstantiatedInternalClasses", Scope = "type", Target = "Microsoft.Ddue.Tools.MSHCComponent+Help2Attr")]
+[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1812:AvoidUninstantiatedInternalClasses", Scope = "type", Target = "Microsoft.Ddue.Tools.MSHCComponent+Help2Namespace")]
+[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1812:AvoidUninstantiatedInternalClasses", Scope = "type", Target = "Microsoft.Ddue.Tools.MSHCComponent+Help2Value")]
+[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1812:AvoidUninstantiatedInternalClasses", Scope = "type", Target = "Microsoft.Ddue.Tools.MSHCComponent+Help2XPath")]
+[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1812:AvoidUninstantiatedInternalClasses", Scope = "type", Target = "Microsoft.Ddue.Tools.MSHCComponent+MHSDefault")]
+[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1812:AvoidUninstantiatedInternalClasses", Scope = "type", Target = "Microsoft.Ddue.Tools.MSHCComponent+MHSMetaAttr")]
+[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1812:AvoidUninstantiatedInternalClasses", Scope = "type", Target = "Microsoft.Ddue.Tools.MSHCComponent+MHSMetaName")]
+[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1812:AvoidUninstantiatedInternalClasses", Scope = "type", Target = "Microsoft.Ddue.Tools.MSHCComponent+MHSTag")]
+[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1812:AvoidUninstantiatedInternalClasses", Scope = "type", Target = "Microsoft.Ddue.Tools.MSHCComponent+TocAttr")]
+[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1812:AvoidUninstantiatedInternalClasses", Scope = "type", Target = "Microsoft.Ddue.Tools.MSHCComponent+TocXPath")]
+[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "MSHC", Scope = "type", Target = "Microsoft.Ddue.Tools.MSHCComponent")]
diff --git a/tools/Sandcastle/Source/BuildAssembler/BuildComponents/MSHCComponent.cs b/tools/Sandcastle/Source/BuildAssembler/BuildComponents/MSHCComponent.cs
new file mode 100644
index 0000000..3fe5458
--- /dev/null
+++ b/tools/Sandcastle/Source/BuildAssembler/BuildComponents/MSHCComponent.cs
@@ -0,0 +1,368 @@
+using System;
+using System.IO;
+using System.Collections.Generic;
+using System.Text;
+using System.Xml;
+using System.Xml.XPath;
+using Microsoft.Ddue.Tools;
+
+namespace Microsoft.Ddue.Tools
+{
+ /// <summary>
+ /// Sandcastle component converting Microsoft Help 2.0 output to Microsoft Help System output.
+ /// </summary>
+ public class MSHCComponent : BuildComponent
+ {
+ // component tag names in the configuration file
+ private class ConfigurationTag
+ {
+ public const string Data = "data";
+ }
+
+ // component attribute names in the configuration file
+ private class ConfigurationAttr
+ {
+ public const string Locale = "locale";
+ public const string SelfBranded = "self-branded";
+ public const string TopicVersion = "topic-version";
+ public const string TocFile = "toc-file";
+ public const string TocParent = "toc-parent";
+ public const string TocParentVersion = "toc-parent-version";
+ }
+
+ // XPath expressions to navigate the TOC file
+ private class TocXPath
+ {
+ public const string Topics = "/topics";
+ public const string Topic = "topic";
+ }
+
+ // attribute names in the TOC file
+ private class TocAttr
+ {
+ public const string Id = "id";
+ }
+
+ // Microsoft Help 2.0 namespace info
+ private class Help2Namespace
+ {
+ public const string Prefix = "MSHelp";
+ public const string Uri = "http://msdn.microsoft.com/mshelp";
+ }
+
+ // XPath expressions to navigate Microsoft Help 2.0 data in the document
+ private class Help2XPath
+ {
+ public const string Head = "head";
+ public const string Xml = "xml";
+ public const string TocTitle = "MSHelp:TOCTitle";
+ public const string Attr = "MSHelp:Attr[@Name='{0}']";
+ public const string Keyword = "MSHelp:Keyword[@Index='{0}']";
+ }
+
+ // Microsoft Help 2.0 tag attributes in the document
+ private class Help2Attr
+ {
+ public const string Value = "Value";
+ public const string Term = "Term";
+ public const string Title = "Title";
+ }
+
+ // Microsoft Help 2.0 attribute values in the document
+ private class Help2Value
+ {
+ public const string K = "K";
+ public const string F = "F";
+ public const string Locale = "Locale";
+ public const string AssetID = "AssetID";
+ public const string DevLang = "DevLang";
+ public const string Abstract = "Abstract";
+ }
+
+ // Microsoft Help System tags
+ private class MHSTag
+ {
+ public const string Meta = "meta";
+ }
+
+ // Microsoft Help System meta tag attributes
+ private class MHSMetaAttr
+ {
+ public const string Name = "name";
+ public const string Content = "content";
+ }
+
+ // Microsoft Help System meta names
+ private class MHSMetaName
+ {
+ public const string SelfBranded = "SelfBranded";
+ public const string ContentType = "ContentType";
+ public const string Locale = "Microsoft.Help.Locale";
+ public const string TopicLocale = "Microsoft.Help.TopicLocale";
+ public const string Id = "Microsoft.Help.Id";
+ public const string TopicVersion = "Microsoft.Help.TopicVersion";
+ public const string TocParent = "Microsoft.Help.TocParent";
+ public const string TocParentVersion = "Microsoft.Help.TOCParentTopicVersion";
+ public const string TocOrder = "Microsoft.Help.TocOrder";
+ public const string Title = "Title";
+ public const string Keywords = "Microsoft.Help.Keywords";
+ public const string F1 = "Microsoft.Help.F1";
+ public const string Category = "Microsoft.Help.Category";
+ public const string Description = "Description";
+ }
+
+ // Microsoft Help System meta default values
+ private class MHSDefault
+ {
+ public const bool SelfBranded = true;
+ public const string Locale = "en-us";
+ public const string Reference = "Reference";
+ public const string TopicVersion = "100";
+ public const string TocParent = "-1";
+ public const string TocParentVersion = "100";
+ public const string TocFile = "./toc.xml";
+ public const string ShortName = "MHS";
+ }
+
+ // TOC information of a document
+ private class TocInfo
+ {
+ private string _parent;
+ private string _parentVersion;
+ private int _order;
+
+ public TocInfo(string parent, string parentVersion, int order)
+ {
+ _parent = parent;
+ _parentVersion = parentVersion;
+ _order = order;
+ }
+
+ public string Parent { get { return _parent; }}
+ public string ParentVersion { get { return _parentVersion; } }
+ public int Order { get { return _order; } }
+ }
+
+ private XmlDocument _document;
+ private XmlNode _head;
+ private XmlNode _xml;
+
+ private string _locale = string.Empty;
+ private bool _selfBranded = MHSDefault.SelfBranded;
+ private string _topicVersion = MHSDefault.TopicVersion;
+ private string _tocParent = MHSDefault.TocParent;
+ private string _tocParentVersion = MHSDefault.TocParentVersion;
+ private Dictionary<string, TocInfo> _toc = new Dictionary<string, TocInfo>();
+ /// <summary>
+ /// Creates a new instance of the <see cref="MHSComponent"/> class.
+ /// </summary>
+ /// <param name="assembler">The active <see cref="BuildAssembler"/>.</param>
+ /// <param name="configuration">The current <see cref="XPathNavigator"/> of the configuration.</param>
+ public MSHCComponent(BuildAssembler assembler, XPathNavigator configuration)
+ : base(assembler, configuration)
+ {
+ string tocFile = MHSDefault.TocFile;
+ XPathNavigator data = configuration.SelectSingleNode(ConfigurationTag.Data);
+ if (data != null)
+ {
+ string value = data.GetAttribute(ConfigurationAttr.Locale, string.Empty);
+ if (!string.IsNullOrEmpty(value))
+ _locale = value;
+
+ value = data.GetAttribute(ConfigurationAttr.SelfBranded, string.Empty);
+ if (!string.IsNullOrEmpty(value))
+ _selfBranded = bool.Parse(value);
+
+ value = data.GetAttribute(ConfigurationAttr.TopicVersion, string.Empty);
+ if (!string.IsNullOrEmpty(value))
+ _topicVersion = value;
+
+ value = data.GetAttribute(ConfigurationAttr.TocParent, string.Empty);
+ if (!string.IsNullOrEmpty(value))
+ _tocParent = value;
+
+ value = data.GetAttribute(ConfigurationAttr.TocParentVersion, string.Empty);
+ if (!string.IsNullOrEmpty(value))
+ _tocParentVersion = value;
+
+ value = data.GetAttribute(ConfigurationAttr.TocFile, string.Empty);
+ if (!string.IsNullOrEmpty(value))
+ tocFile = value;
+ }
+ LoadToc(Path.GetFullPath(Environment.ExpandEnvironmentVariables(tocFile)));
+ }
+
+ #region Public
+ /// <summary>
+ /// Applies Microsoft Help System transformation to the output document.
+ /// </summary>
+ /// <param name="document">The <see cref="XmlDocument"/> to apply transformation to.</param>
+ /// <param name="key">Topic key of the output document.</param>
+ public override void Apply(XmlDocument document, string key)
+ {
+ _document = document;
+
+ ModifyAttribute("id", "mainSection");
+ ModifyAttribute("class", "members");
+ FixHeaderBottomBackground("nsrBottom", "headerBottom");
+
+ XmlElement html = _document.DocumentElement;
+ _head = html.SelectSingleNode(Help2XPath.Head);
+ if (_head == null)
+ {
+ _head = document.CreateElement(Help2XPath.Head);
+ if (!html.HasChildNodes)
+ html.AppendChild(_head);
+ else
+ html.InsertBefore(_head, html.FirstChild);
+ }
+
+ AddMHSMeta(MHSMetaName.SelfBranded, _selfBranded.ToString().ToLower());
+ AddMHSMeta(MHSMetaName.ContentType, MHSDefault.Reference);
+ AddMHSMeta(MHSMetaName.TopicVersion, _topicVersion);
+
+ string locale = _locale;
+ string id = Guid.NewGuid().ToString();
+ _xml = _head.SelectSingleNode(Help2XPath.Xml);
+ if (_xml != null)
+ {
+ XmlNamespaceManager nsmgr = new XmlNamespaceManager(_document.NameTable);
+ if (!nsmgr.HasNamespace(Help2Namespace.Prefix))
+ nsmgr.AddNamespace(Help2Namespace.Prefix, Help2Namespace.Uri);
+
+ XmlElement elem = _xml.SelectSingleNode(Help2XPath.TocTitle, nsmgr) as XmlElement;
+ if (elem != null)
+ AddMHSMeta(MHSMetaName.Title, elem.GetAttribute(Help2Attr.Title));
+
+ foreach (XmlElement keyword in _xml.SelectNodes(string.Format(Help2XPath.Keyword, Help2Value.K), nsmgr))
+ AddMHSMeta(MHSMetaName.Keywords, keyword.GetAttribute(Help2Attr.Term), true);
+
+ foreach (XmlElement keyword in _xml.SelectNodes(string.Format(Help2XPath.Keyword, Help2Value.F), nsmgr))
+ AddMHSMeta(MHSMetaName.F1, keyword.GetAttribute(Help2Attr.Term), true);
+
+ foreach (XmlElement lang in _xml.SelectNodes(string.Format(Help2XPath.Attr, Help2Value.DevLang), nsmgr))
+ AddMHSMeta(MHSMetaName.Category, Help2Value.DevLang + ":" + lang.GetAttribute(Help2Attr.Value), true);
+
+ elem = _xml.SelectSingleNode(string.Format(Help2XPath.Attr, Help2Value.Abstract), nsmgr) as XmlElement;
+ if (elem != null)
+ AddMHSMeta(MHSMetaName.Description, elem.GetAttribute(Help2Attr.Value));
+
+ elem = _xml.SelectSingleNode(string.Format(Help2XPath.Attr, Help2Value.AssetID), nsmgr) as XmlElement;
+ if (elem != null)
+ id = elem.GetAttribute(Help2Attr.Value);
+
+ if (string.IsNullOrEmpty(locale))
+ {
+ elem = _xml.SelectSingleNode(string.Format(Help2XPath.Attr, Help2Value.Locale), nsmgr) as XmlElement;
+ if (elem != null)
+ locale = elem.GetAttribute(Help2Attr.Value);
+ }
+ }
+
+ if (string.IsNullOrEmpty(locale))
+ locale = MHSDefault.Locale;
+
+ AddMHSMeta(MHSMetaName.Locale, locale);
+ AddMHSMeta(MHSMetaName.TopicLocale, locale);
+ AddMHSMeta(MHSMetaName.Id, id);
+
+ if (_toc.ContainsKey(id))
+ {
+ TocInfo tocInfo = _toc[id];
+ AddMHSMeta(MHSMetaName.TocParent, tocInfo.Parent);
+ if (tocInfo.Parent != MHSDefault.TocParent)
+ AddMHSMeta(MHSMetaName.TocParentVersion, tocInfo.ParentVersion);
+ AddMHSMeta(MHSMetaName.TocOrder, tocInfo.Order.ToString());
+ }
+
+ }
+
+ #endregion
+
+ #region Private
+ // loads TOC structure from a file
+ private void LoadToc(string path)
+ {
+ _toc.Clear();
+ using (Stream stream = File.OpenRead(path))
+ {
+ XPathDocument document = new XPathDocument(stream);
+ XPathNavigator navigator = document.CreateNavigator();
+ LoadToc(navigator.SelectSingleNode(TocXPath.Topics), _tocParent, _tocParentVersion);
+ }
+ }
+ // loads TOC structure from an XPathNavigator
+ private void LoadToc(XPathNavigator navigator, string parent, string parentVersion)
+ {
+ int i = -1;
+ XPathNodeIterator interator = navigator.SelectChildren(TocXPath.Topic, string.Empty);
+ while (interator.MoveNext())
+ {
+ XPathNavigator current = interator.Current;
+ string id = current.GetAttribute(TocAttr.Id, string.Empty);
+ if (!string.IsNullOrEmpty(id))
+ {
+ TocInfo info = new TocInfo(parent, parentVersion, ++i);
+ _toc.Add(id, info);
+ LoadToc(current, id, _topicVersion);
+ }
+ }
+ }
+
+ // Adds Microsoft Help System meta data to the output document
+ private XmlElement AddMHSMeta(string name, string content)
+ {
+ return AddMHSMeta(name, content, false);
+ }
+
+ // Adds Microsoft Help System meta data to the output document
+ private XmlElement AddMHSMeta(string name, string content, bool multiple)
+ {
+ if (string.IsNullOrEmpty(content))
+ return null;
+ XmlElement elem = null;
+ if (!multiple)
+ elem = _document.SelectSingleNode(string.Format(@"//meta[@{0}]", name)) as XmlElement;
+ if (elem == null)
+ {
+ elem = _document.CreateElement(MHSTag.Meta);
+ elem.SetAttribute(MHSMetaAttr.Name, name);
+ elem.SetAttribute(MHSMetaAttr.Content, content);
+ _head.AppendChild(elem);
+ }
+ return elem;
+ }
+
+ // Modifies an attribute value to prevent conflicts with Microsoft Help System branding
+ private void ModifyAttribute(string name, string value)
+ {
+ XmlNodeList list = _document.SelectNodes(string.Format(@"//*[@{0}='{1}']", name, value));
+ foreach (XmlElement elem in list)
+ elem.SetAttribute(name, value + MHSDefault.ShortName);
+ }
+
+ // Works around a Microsoft Help System issue ('background' attribute isn't supported):
+ // adds a hidden image so that its path will be transformed by MHS runtime handler,
+ // sets the 'background' attribute to the transformed path on page load
+ private void FixHeaderBottomBackground(string className, string newId)
+ {
+ XmlElement elem = _document.SelectSingleNode(string.Format(@"//*[@class='{0}']", className)) as XmlElement;
+ if (elem == null)
+ return;
+
+ string src = elem.GetAttribute("background");
+ if (string.IsNullOrEmpty(src))
+ return;
+ elem.SetAttribute("id", newId);
+
+ XmlElement img = _document.CreateElement("img");
+ img.SetAttribute("src", src);
+ img.SetAttribute("id", newId + "Image");
+ img.SetAttribute("style", "display: none");
+
+ elem.AppendChild(img);
+ }
+
+ #endregion
+ }
+}
diff --git a/tools/Sandcastle/Source/BuildAssembler/BuildComponents/Properties/AssemblyInfo.cs b/tools/Sandcastle/Source/BuildAssembler/BuildComponents/Properties/AssemblyInfo.cs
index 41965fc..c15c5d6 100644
--- a/tools/Sandcastle/Source/BuildAssembler/BuildComponents/Properties/AssemblyInfo.cs
+++ b/tools/Sandcastle/Source/BuildAssembler/BuildComponents/Properties/AssemblyInfo.cs
@@ -38,5 +38,5 @@ using System.Runtime.InteropServices;
//
// You can specify all the values or you can default the Revision and Build Numbers
// by using the '*' as shown below:
-[assembly: AssemblyVersion("2.5.10626.00")]
-[assembly: AssemblyFileVersion("2.5.10626.00")]
+[assembly: AssemblyVersion("2.6.10621.1")]
+[assembly: AssemblyFileVersion("2.6.10621.1")]
diff --git a/tools/Sandcastle/Source/BuildAssembler/BuildComponents/ResolveConceptualLinksComponent.cs b/tools/Sandcastle/Source/BuildAssembler/BuildComponents/ResolveConceptualLinksComponent.cs
index 2531e23..c830fef 100644
--- a/tools/Sandcastle/Source/BuildAssembler/BuildComponents/ResolveConceptualLinksComponent.cs
+++ b/tools/Sandcastle/Source/BuildAssembler/BuildComponents/ResolveConceptualLinksComponent.cs
@@ -168,6 +168,11 @@ namespace Microsoft.Ddue.Tools {
writer.WriteAttributeString("keywords", link.Target.ToLower());
writer.WriteAttributeString("tabindex", "0");
break;
+ case LinkType.Id:
+ string xhelp = String.Format("ms-xhelp://?Id={0}", link.Target);
+ writer.WriteStartElement("a");
+ writer.WriteAttributeString("href", xhelp);
+ break;
}
// write the link text
@@ -215,7 +220,8 @@ namespace Microsoft.Ddue.Tools {
internal enum LinkType {
None, // not active
Local, // a href
- Index // mshelp:link keyword
+ Index, // mshelp:link keyword
+ Id // ms-xhelp link
//Regex // regular expression with match/replace
}
diff --git a/tools/Sandcastle/Source/BuildAssembler/BuildComponents/ResolveReferenceLinksComponent2.cs b/tools/Sandcastle/Source/BuildAssembler/BuildComponents/ResolveReferenceLinksComponent2.cs
index 22587ac..5ba0869 100644
--- a/tools/Sandcastle/Source/BuildAssembler/BuildComponents/ResolveReferenceLinksComponent2.cs
+++ b/tools/Sandcastle/Source/BuildAssembler/BuildComponents/ResolveReferenceLinksComponent2.cs
@@ -281,6 +281,12 @@ namespace Microsoft.Ddue.Tools {
writer.WriteAttributeString("href", msdnUrl);
writer.WriteAttributeString("target", linkTarget);
break;
+ case LinkType2.Id:
+ string xhelp = String.Format("ms-xhelp://?Id={0}", targetId);
+ xhelp = xhelp.Replace("#", "%23");
+ writer.WriteStartElement("a");
+ writer.WriteAttributeString("href", xhelp);
+ break;
}
// write the link text
diff --git a/tools/Sandcastle/Source/BuildAssembler/BuildComponents/SaveComponent.cs b/tools/Sandcastle/Source/BuildAssembler/BuildComponents/SaveComponent.cs
index 8b8fea9..6c767ce 100644
--- a/tools/Sandcastle/Source/BuildAssembler/BuildComponents/SaveComponent.cs
+++ b/tools/Sandcastle/Source/BuildAssembler/BuildComponents/SaveComponent.cs
@@ -53,6 +53,12 @@ namespace Microsoft.Ddue.Tools {
linkPath = save_node.GetAttribute("link", String.Empty);
if (String.IsNullOrEmpty(linkPath)) linkPath = "../html";
+ // add-xhtml-namespace adds a default namespace for xhtml. Required by Help3 documentation.
+ string addXhtmlDeclaration = save_node.GetAttribute("add-xhtml-namespace", String.Empty);
+ if (!String.IsNullOrEmpty(addXhtmlDeclaration))
+ writeXhtmlNamespace = Convert.ToBoolean(addXhtmlDeclaration);
+
+
// encoding
settings.CloseOutput = true;
@@ -63,6 +69,9 @@ namespace Microsoft.Ddue.Tools {
private string linkPath = null;
+ private bool writeXhtmlNamespace = false;
+
+
public override void Apply (XmlDocument document, string key) {
// set the evaluation context
@@ -95,6 +104,12 @@ namespace Microsoft.Ddue.Tools {
string targetDirectory = Path.GetDirectoryName(path);
if (!Directory.Exists(targetDirectory)) Directory.CreateDirectory(targetDirectory);
+ if (writeXhtmlNamespace)
+ {
+ document.DocumentElement.SetAttribute("xmlns", "http://www.w3.org/1999/xhtml");
+ document.LoadXml(document.OuterXml);
+ }
+
// save the document
// select_expression determines which nodes get saved. If there is no select_expression
// we simply save the root node as before. If there is a select_expression, we evaluate the
@@ -130,16 +145,16 @@ namespace Microsoft.Ddue.Tools {
settings.ConformanceLevel = ConformanceLevel.Auto;
using (StreamWriter output = File.CreateText(path)) {
using (XmlWriter writer = XmlWriter.Create(output, settings)) {
- XPathExpression select_xpath = select_expression.Clone();
- select_xpath.SetContext(context);
- XPathNodeIterator ni = document.CreateNavigator().Select(select_expression);
- while (ni.MoveNext()) {
- if (ni.Current.NodeType == XPathNodeType.ProcessingInstruction && ni.Current.Name.Equals("literal-text")) {
- writer.Flush();
- output.Write(ni.Current.Value);
- }
- else
- ni.Current.WriteSubtree(writer);
+ XPathExpression select_xpath = select_expression.Clone();
+ select_xpath.SetContext(context);
+ XPathNodeIterator ni = document.CreateNavigator().Select(select_expression);
+ while (ni.MoveNext()) {
+ if (ni.Current.NodeType == XPathNodeType.ProcessingInstruction && ni.Current.Name.Equals("literal-text")) {
+ writer.Flush();
+ output.Write(ni.Current.Value);
+ }
+ else
+ ni.Current.WriteSubtree(writer);
}
}
}
diff --git a/tools/Sandcastle/Source/BuildAssembler/BuildComponents/SnippetComponent.cs b/tools/Sandcastle/Source/BuildAssembler/BuildComponents/SnippetComponent.cs
index d4a3d68..a42e067 100644
--- a/tools/Sandcastle/Source/BuildAssembler/BuildComponents/SnippetComponent.cs
+++ b/tools/Sandcastle/Source/BuildAssembler/BuildComponents/SnippetComponent.cs
@@ -1135,9 +1135,6 @@ namespace Microsoft.Ddue.Tools
string[] stringSeparators = new string[] { "\r\n" };
string[] lines = text.Split(stringSeparators, StringSplitOptions.None);
- // no need to do this if there is only one line
- if (lines.Length == 1) return (lines[0]);
-
// figure out how many leading spaces to delete
int spaces = Int32.MaxValue;
for (int i = 0; i < lines.Length; i++)
diff --git a/tools/Sandcastle/Source/BuildAssembler/BuildComponents/TargetCollection.cs b/tools/Sandcastle/Source/BuildAssembler/BuildComponents/TargetCollection.cs
index 188da53..c956b5e 100644
--- a/tools/Sandcastle/Source/BuildAssembler/BuildComponents/TargetCollection.cs
+++ b/tools/Sandcastle/Source/BuildAssembler/BuildComponents/TargetCollection.cs
@@ -2733,7 +2733,8 @@ namespace Microsoft.Ddue.Tools {
Local,
Index,
LocalOrIndex,
- Msdn
+ Msdn,
+ Id
}
} \ No newline at end of file
diff --git a/tools/Sandcastle/Source/BuildAssembler/CopyComponents/Properties/AssemblyInfo.cs b/tools/Sandcastle/Source/BuildAssembler/CopyComponents/Properties/AssemblyInfo.cs
index c834f96..118b639 100644
--- a/tools/Sandcastle/Source/BuildAssembler/CopyComponents/Properties/AssemblyInfo.cs
+++ b/tools/Sandcastle/Source/BuildAssembler/CopyComponents/Properties/AssemblyInfo.cs
@@ -42,5 +42,5 @@ using System.Runtime.InteropServices;
//
// You can specify all the values or you can default the Revision and Build Numbers
// by using the '*' as shown below:
-[assembly: AssemblyVersion("2.5.10626.00")]
-[assembly: AssemblyFileVersion("2.5.10626.00")]
+[assembly: AssemblyVersion("2.6.10621.1")]
+[assembly: AssemblyFileVersion("2.6.10621.1")]
diff --git a/tools/Sandcastle/Source/BuildAssembler/SyntaxComponents/CPlusPlusDeclarationSyntax.cs b/tools/Sandcastle/Source/BuildAssembler/SyntaxComponents/CPlusPlusDeclarationSyntax.cs
index 56c6316..98794c4 100644
--- a/tools/Sandcastle/Source/BuildAssembler/SyntaxComponents/CPlusPlusDeclarationSyntax.cs
+++ b/tools/Sandcastle/Source/BuildAssembler/SyntaxComponents/CPlusPlusDeclarationSyntax.cs
@@ -789,6 +789,7 @@ namespace Microsoft.Ddue.Tools {
}
private void WriteParameters (XPathNodeIterator parameters, bool multiline, SyntaxWriter writer) {
+ bool isVarargs = (bool)parameters.Current.Evaluate(apiIsVarargsExpression);
while (parameters.MoveNext()) {
XPathNavigator parameter = parameters.Current;
@@ -815,9 +816,16 @@ namespace Microsoft.Ddue.Tools {
writer.WriteString(" ");
writer.WriteParameter(name);
- if (parameters.CurrentPosition < parameters.Count) writer.WriteString(", ");
+ if (parameters.CurrentPosition < parameters.Count || isVarargs) writer.WriteString(", ");
if (multiline) writer.WriteLine();
}
+ if (isVarargs)
+ {
+ if (multiline) writer.WriteString("\t");
+ writer.WriteString("...");
+ if (multiline) writer.WriteLine();
+ }
+
}
diff --git a/tools/Sandcastle/Source/BuildAssembler/SyntaxComponents/CSharpDeclarationSyntax.cs b/tools/Sandcastle/Source/BuildAssembler/SyntaxComponents/CSharpDeclarationSyntax.cs
index 3b5922d..26ddcb3 100644
--- a/tools/Sandcastle/Source/BuildAssembler/SyntaxComponents/CSharpDeclarationSyntax.cs
+++ b/tools/Sandcastle/Source/BuildAssembler/SyntaxComponents/CSharpDeclarationSyntax.cs
@@ -153,6 +153,7 @@ namespace Microsoft.Ddue.Tools {
// normal method: done
public override void WriteNormalMethodSyntax (XPathNavigator reflection, SyntaxWriter writer) {
+ if (IsUnsupportedVarargs(reflection, writer)) return;
string name = (string) reflection.Evaluate(apiNameExpression);
@@ -185,91 +186,100 @@ namespace Microsoft.Ddue.Tools {
public override void WriteOperatorSyntax (XPathNavigator reflection, SyntaxWriter writer) {
string name = (string) reflection.Evaluate(apiNameExpression);
- string identifier;
- switch (name) {
- // unary math operators
- case "UnaryPlus":
- identifier = "+";
- break;
- case "UnaryNegation":
- identifier = "-";
- break;
- case "Increment":
- identifier = "++";
- break;
- case "Decrement":
- identifier = "--";
- break;
- // unary logical operators
- case "LogicalNot":
- identifier = "!";
- break;
- case "True":
- identifier = "true";
- break;
- case "False":
- identifier = "false";
- break;
- // binary comparison operators
- case "Equality":
- identifier = "==";
- break;
- case "Inequality":
- identifier = "!=";
- break;
- case "LessThan":
- identifier = "<";
- break;
- case "GreaterThan":
- identifier = ">";
- break;
- case "LessThanOrEqual":
- identifier = "<=";
- break;
- case "GreaterThanOrEqual":
- identifier = ">=";
- break;
- // binary math operators
- case "Addition":
- identifier = "+";
- break;
- case "Subtraction":
- identifier = "-";
- break;
- case "Multiply":
- identifier = "*";
- break;
- case "Division":
- identifier = "/";
- break;
- case "Modulus":
- identifier = "%";
- break;
- // binary logical operators
- case "BitwiseAnd":
- identifier = "&";
- break;
- case "BitwiseOr":
- identifier = "|";
- break;
- case "ExclusiveOr":
- identifier = "^";
- break;
- // bit-array operators
- case "OnesComplement":
- identifier = "~";
- break;
- case "LeftShift":
- identifier = "<<";
- break;
- case "RightShift":
- identifier = ">>";
- break;
- // unrecognized operator
- default:
- identifier = null;
- break;
- }
+ string identifier = null;
+ bool evalulate = (bool)reflection.Evaluate(apiIsUdtReturnExpression);
+
+ if (!(bool)reflection.Evaluate(apiIsUdtReturnExpression))
+ {
+ switch (name)
+ {
+ // unary math operators
+ case "UnaryPlus":
+ identifier = "+";
+ break;
+ case "UnaryNegation":
+ identifier = "-";
+ break;
+ case "Increment":
+ identifier = "++";
+ break;
+ case "Decrement":
+ identifier = "--";
+ break;
+ // unary logical operators
+ case "LogicalNot":
+ identifier = "!";
+ break;
+ case "True":
+ identifier = "true";
+ break;
+ case "False":
+ identifier = "false";
+ break;
+ // binary comparison operators
+ case "Equality":
+ identifier = "==";
+ break;
+ case "Inequality":
+ identifier = "!=";
+ break;
+ case "LessThan":
+ identifier = "<";
+ break;
+ case "GreaterThan":
+ identifier = ">";
+ break;
+ case "LessThanOrEqual":
+ identifier = "<=";
+ break;
+ case "GreaterThanOrEqual":
+ identifier = ">=";
+ break;
+ // binary math operators
+ case "Addition":
+ identifier = "+";
+ break;
+ case "Subtraction":
+ identifier = "-";
+ break;
+ case "Multiply":
+ identifier = "*";
+ break;
+ case "Division":
+ identifier = "/";
+ break;
+ case "Modulus":
+ identifier = "%";
+ break;
+ // binary logical operators
+ case "BitwiseAnd":
+ identifier = "&";
+ break;
+ case "BitwiseOr":
+ identifier = "|";
+ break;
+ case "ExclusiveOr":
+ identifier = "^";
+ break;
+ // bit-array operators
+ case "OnesComplement":
+ identifier = "~";
+ break;
+ case "LeftShift":
+ identifier = "<<";
+ break;
+ case "RightShift":
+ identifier = ">>";
+ break;
+ case "Assign":
+ identifier = "=";
+ break;
+ // unrecognized operator
+ default:
+ identifier = null;
+ break;
+ }
+ }
if (identifier == null) {
writer.WriteMessage("UnsupportedOperator_" + Language);
} else {
diff --git a/tools/Sandcastle/Source/BuildAssembler/SyntaxComponents/FSharpDeclarationSyntax.cs b/tools/Sandcastle/Source/BuildAssembler/SyntaxComponents/FSharpDeclarationSyntax.cs
index 7f10807..5b173e9 100644
--- a/tools/Sandcastle/Source/BuildAssembler/SyntaxComponents/FSharpDeclarationSyntax.cs
+++ b/tools/Sandcastle/Source/BuildAssembler/SyntaxComponents/FSharpDeclarationSyntax.cs
@@ -111,6 +111,7 @@ namespace Microsoft.Ddue.Tools
public override void WriteNormalMethodSyntax(XPathNavigator reflection, SyntaxWriter writer)
{
+ if (IsUnsupportedVarargs(reflection, writer)) return;
string name = (string)reflection.Evaluate(apiNameExpression);
bool isOverride = (bool)reflection.Evaluate(apiIsOverrideExpression);
@@ -164,94 +165,100 @@ namespace Microsoft.Ddue.Tools
public override void WriteOperatorSyntax(XPathNavigator reflection, SyntaxWriter writer)
{
string name = (string)reflection.Evaluate(apiNameExpression);
- string identifier;
+ string identifier = null;
bool isStatic = (bool)reflection.Evaluate(apiIsStaticExpression);
- switch (name)
+ if (!(bool)reflection.Evaluate(apiIsUdtReturnExpression))
{
- // unary math operators
- case "UnaryPlus":
- identifier = "+";
- break;
- case "UnaryNegation":
- identifier = "-";
- break;
- case "Increment":
- identifier = "++";
- break;
- case "Decrement":
- identifier = "--";
- break;
- // unary logical operators
- case "LogicalNot":
- identifier = "not";
- break;
- case "True":
- identifier = "true";
- break;
- case "False":
- identifier = "false";
- break;
- // binary comparison operators
- case "Equality":
- identifier = "=";
- break;
- case "Inequality":
- identifier = "<>";
- break;
- case "LessThan":
- identifier = "<";
- break;
- case "GreaterThan":
- identifier = ">";
- break;
- case "LessThanOrEqual":
- identifier = "<=";
- break;
- case "GreaterThanOrEqual":
- identifier = ">=";
- break;
- // binary math operators
- case "Addition":
- identifier = "+";
- break;
- case "Subtraction":
- identifier = "-";
- break;
- case "Multiply":
- identifier = "*";
- break;
- case "Division":
- identifier = "/";
- break;
- case "Modulus":
- identifier = "%";
- break;
- // binary logical operators
- case "BitwiseAnd":
- identifier = "&&&";
- break;
- case "BitwiseOr":
- identifier = "|||";
- break;
- case "ExclusiveOr":
- identifier = "^^^";
- break;
- // bit-array operators
- case "OnesComplement":
- identifier = null; // No F# equiv.
- break;
- case "LeftShift":
- identifier = "<<<";
- break;
- case "RightShift":
- identifier = ">>>";
- break;
- // unrecognized operator
- default:
- identifier = null;
- break;
+ switch (name)
+ {
+ // unary math operators
+ case "UnaryPlus":
+ identifier = "+";
+ break;
+ case "UnaryNegation":
+ identifier = "-";
+ break;
+ case "Increment":
+ identifier = "++";
+ break;
+ case "Decrement":
+ identifier = "--";
+ break;
+ // unary logical operators
+ case "LogicalNot":
+ identifier = "not";
+ break;
+ case "True":
+ identifier = "true";
+ break;
+ case "False":
+ identifier = "false";
+ break;
+ // binary comparison operators
+ case "Equality":
+ identifier = "=";
+ break;
+ case "Inequality":
+ identifier = "<>";
+ break;
+ case "LessThan":
+ identifier = "<";
+ break;
+ case "GreaterThan":
+ identifier = ">";
+ break;
+ case "LessThanOrEqual":
+ identifier = "<=";
+ break;
+ case "GreaterThanOrEqual":
+ identifier = ">=";
+ break;
+ // binary math operators
+ case "Addition":
+ identifier = "+";
+ break;
+ case "Subtraction":
+ identifier = "-";
+ break;
+ case "Multiply":
+ identifier = "*";
+ break;
+ case "Division":
+ identifier = "/";
+ break;
+ case "Modulus":
+ identifier = "%";
+ break;
+ // binary logical operators
+ case "BitwiseAnd":
+ identifier = "&&&";
+ break;
+ case "BitwiseOr":
+ identifier = "|||";
+ break;
+ case "ExclusiveOr":
+ identifier = "^^^";
+ break;
+ // bit-array operators
+ case "OnesComplement":
+ identifier = null; // No F# equiv.
+ break;
+ case "LeftShift":
+ identifier = "<<<";
+ break;
+ case "RightShift":
+ identifier = ">>>";
+ break;
+ case "Assign":
+ identifier = "=";
+ break;
+ // unrecognized operator
+ default:
+ identifier = null;
+ break;
+ }
}
if (identifier == null)
{
diff --git a/tools/Sandcastle/Source/BuildAssembler/SyntaxComponents/GlobalSuppressions.cs b/tools/Sandcastle/Source/BuildAssembler/SyntaxComponents/GlobalSuppressions.cs
index e8a0676..0bf635c 100644
--- a/tools/Sandcastle/Source/BuildAssembler/SyntaxComponents/GlobalSuppressions.cs
+++ b/tools/Sandcastle/Source/BuildAssembler/SyntaxComponents/GlobalSuppressions.cs
@@ -299,3 +299,9 @@
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Scope = "member", Target = "Microsoft.Ddue.Tools.VisualBasicUsageSyntaxGenerator.#WriteGenericTemplates(System.Xml.XPath.XPathNavigator,Microsoft.Ddue.Tools.SyntaxWriter)")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1822:MarkMembersAsStatic", Scope = "member", Target = "Microsoft.Ddue.Tools.VisualBasicUsageSyntaxGenerator.#WriteGenericTemplates(System.Xml.XPath.XPathNavigator,Microsoft.Ddue.Tools.SyntaxWriter,System.Boolean)")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1822:MarkMembersAsStatic", Scope = "member", Target = "Microsoft.Ddue.Tools.JScriptDeclarationSyntaxGenerator.#WriteVisibility(System.String,Microsoft.Ddue.Tools.SyntaxWriter)")]
+[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1804:RemoveUnusedLocals", MessageId = "evalulate", Scope = "member", Target = "Microsoft.Ddue.Tools.CSharpDeclarationSyntaxGenerator.#WriteOperatorSyntax(System.Xml.XPath.XPathNavigator,Microsoft.Ddue.Tools.SyntaxWriter)")]
+[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2211:NonConstantFieldsShouldNotBeVisible", Scope = "member", Target = "Microsoft.Ddue.Tools.SyntaxGeneratorTemplate.#apiIsUdtReturnExpression")]
+[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Varargs", Scope = "member", Target = "Microsoft.Ddue.Tools.SyntaxGeneratorTemplate.#apiIsVarargsExpression")]
+[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2211:NonConstantFieldsShouldNotBeVisible", Scope = "member", Target = "Microsoft.Ddue.Tools.SyntaxGeneratorTemplate.#apiIsVarargsExpression")]
+[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Varargs", Scope = "member", Target = "Microsoft.Ddue.Tools.SyntaxGeneratorTemplate.#IsUnsupportedVarargs(System.Xml.XPath.XPathNavigator,Microsoft.Ddue.Tools.SyntaxWriter)")]
+[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1307:SpecifyStringComparison", MessageId = "System.String.StartsWith(System.String)", Scope = "member", Target = "Microsoft.Ddue.Tools.SyntaxGeneratorTemplate.#WriteMethodSyntax(System.Xml.XPath.XPathNavigator,Microsoft.Ddue.Tools.SyntaxWriter)")]
diff --git a/tools/Sandcastle/Source/BuildAssembler/SyntaxComponents/JScriptDeclarationSyntax.cs b/tools/Sandcastle/Source/BuildAssembler/SyntaxComponents/JScriptDeclarationSyntax.cs
index 27ac11d..35c1cc6 100644
--- a/tools/Sandcastle/Source/BuildAssembler/SyntaxComponents/JScriptDeclarationSyntax.cs
+++ b/tools/Sandcastle/Source/BuildAssembler/SyntaxComponents/JScriptDeclarationSyntax.cs
@@ -101,6 +101,7 @@ namespace Microsoft.Ddue.Tools {
if (IsUnsupportedUnsafe(reflection, writer)) return;
if (IsUnsupportedGeneric(reflection, writer)) return;
if (IsUnsupportedExplicit(reflection, writer)) return;
+ if (IsUnsupportedVarargs(reflection, writer)) return;
string name = (string)reflection.Evaluate(apiNameExpression);
XPathNavigator returnType = reflection.SelectSingleNode(apiReturnTypeExpression);
diff --git a/tools/Sandcastle/Source/BuildAssembler/SyntaxComponents/Properties/AssemblyInfo.cs b/tools/Sandcastle/Source/BuildAssembler/SyntaxComponents/Properties/AssemblyInfo.cs
index b425318..b1dfc12 100644
--- a/tools/Sandcastle/Source/BuildAssembler/SyntaxComponents/Properties/AssemblyInfo.cs
+++ b/tools/Sandcastle/Source/BuildAssembler/SyntaxComponents/Properties/AssemblyInfo.cs
@@ -38,5 +38,5 @@ using System.Runtime.InteropServices;
//
// You can specify all the values or you can default the Revision and Build Numbers
// by using the '*' as shown below:
-[assembly: AssemblyVersion("2.5.10626.00")]
-[assembly: AssemblyFileVersion("2.5.10626.00")]
+[assembly: AssemblyVersion("2.6.10621.1")]
+[assembly: AssemblyFileVersion("2.6.10621.1")]
diff --git a/tools/Sandcastle/Source/BuildAssembler/SyntaxComponents/SyntaxGenerators.cs b/tools/Sandcastle/Source/BuildAssembler/SyntaxComponents/SyntaxGenerators.cs
index 8f9f2c9..30255dd 100644
--- a/tools/Sandcastle/Source/BuildAssembler/SyntaxComponents/SyntaxGenerators.cs
+++ b/tools/Sandcastle/Source/BuildAssembler/SyntaxComponents/SyntaxGenerators.cs
@@ -88,6 +88,7 @@ namespace Microsoft.Ddue.Tools {
protected static XPathExpression apiIsAbstractProcedureExpression = XPathExpression.Compile("boolean(proceduredata[@abstract='true'])");
protected static XPathExpression apiIsVirtualExpression = XPathExpression.Compile("boolean(proceduredata[@virtual='true'])");
protected static XPathExpression apiIsFinalExpression = XPathExpression.Compile("boolean(proceduredata[@final='true'])");
+ protected static XPathExpression apiIsVarargsExpression = XPathExpression.Compile("boolean(proceduredata[@varargs='true'])");
protected static XPathExpression apiOverridesMemberExpression = XPathExpression.Compile("string(proceduredata/@overrides/member)");
protected static XPathExpression apiIsExplicitImplementationExpression = XPathExpression.Compile("boolean(memberdata/@visibility='private' and proceduredata/@virtual='true' and boolean(implements/member))");
protected static XPathExpression apiImplementedMembersExpression = XPathExpression.Compile("implements/member");
@@ -98,6 +99,8 @@ namespace Microsoft.Ddue.Tools {
protected static XPathExpression apiIsWritePropertyExpression = XPathExpression.Compile("boolean(propertydata/@set='true')");
protected static XPathExpression apiGetVisibilityExpression = XPathExpression.Compile("string(propertydata/@get-visibility)");
protected static XPathExpression apiSetVisibilityExpression = XPathExpression.Compile("string(propertydata/@set-visibility)");
+ // return data
+ protected static XPathExpression apiIsUdtReturnExpression = XPathExpression.Compile("boolean(returns/type[@api='T:System.Void']/requiredModifier/type[@api='T:System.Runtime.CompilerServices.IsUdtReturn'])");
// event data
protected static XPathExpression apiHandlerOfEventExpression = XPathExpression.Compile("eventhandler/*[1]");
@@ -262,6 +265,11 @@ namespace Microsoft.Ddue.Tools {
WriteOperatorSyntax(reflection, writer);
}
}
+ // Write out let properties (no .Net equivalent) as methods
+ if(name.StartsWith("let_"))
+ {
+ WriteNormalMethodSyntax(reflection, writer);
+ }
} else {
WriteNormalMethodSyntax(reflection, writer);
}
@@ -309,6 +317,16 @@ namespace Microsoft.Ddue.Tools {
}
}
+ protected virtual bool IsUnsupportedVarargs(XPathNavigator reflection, SyntaxWriter writer)
+ {
+ bool isVarargs = (bool) reflection.Evaluate(apiIsVarargsExpression);
+
+ if(isVarargs)
+ writer.WriteMessage("UnsupportedVarargs_" + Language);
+
+ return (isVarargs);
+ }
+
protected virtual bool IsUnsupportedUnsafe(XPathNavigator reflection, SyntaxWriter writer)
{
bool isUnsafe = (bool) reflection.Evaluate(apiIsUnsafeExpression);
diff --git a/tools/Sandcastle/Source/BuildAssembler/SyntaxComponents/VisualBasicDeclarationSyntax.cs b/tools/Sandcastle/Source/BuildAssembler/SyntaxComponents/VisualBasicDeclarationSyntax.cs
index e90ab1a..959aa14 100644
--- a/tools/Sandcastle/Source/BuildAssembler/SyntaxComponents/VisualBasicDeclarationSyntax.cs
+++ b/tools/Sandcastle/Source/BuildAssembler/SyntaxComponents/VisualBasicDeclarationSyntax.cs
@@ -161,6 +161,7 @@ namespace Microsoft.Ddue.Tools {
public override void WriteNormalMethodSyntax (XPathNavigator reflection, SyntaxWriter writer) {
+ if (IsUnsupportedVarargs(reflection, writer)) return;
string name = (string) reflection.Evaluate(apiNameExpression);
XPathNavigator type = reflection.SelectSingleNode(apiReturnTypeExpression);
@@ -211,106 +212,113 @@ namespace Microsoft.Ddue.Tools {
string name = (string) reflection.Evaluate(apiNameExpression);
XPathNavigator type = reflection.SelectSingleNode(apiReturnTypeExpression);
- string identifier;
- switch (name) {
- // unary math operators
- case "UnaryPlus":
- identifier = "+";
- break;
- case "UnaryNegation":
- identifier = "-";
- break;
- case "Increment":
- identifier = "++";
- break;
- case "Decrement":
- identifier = "--";
- break;
- // unary logical operators
- case "LogicalNot":
- identifier = "Not";
- break;
- case "True":
- identifier = "IsTrue";
- break;
- case "False":
- identifier = "IsFalse";
- break;
- // binary comparison operators
- case "Equality":
- identifier = "=";
- break;
- case "Inequality":
- identifier = "<>";
- break;
- case "LessThan":
- identifier = "<";
- break;
- case "GreaterThan":
- identifier = ">";
- break;
- case "LessThanOrEqual":
- identifier = "<=";
- break;
- case "GreaterThanOrEqual":
- identifier = ">=";
- break;
- // binary math operators
- case "Addition":
- identifier = "+";
- break;
- case "Subtraction":
- identifier = "-";
- break;
- case "Multiply":
- identifier = "*";
- break;
- case "Division":
- identifier = "/";
- break;
- case "Exponent":
- identifier = "^";
- break;
- case "Modulus":
- identifier = "Mod";
- break;
- case "IntegerDivision":
- identifier = @"\";
- break;
- // binary logical operators
- case "BitwiseAnd":
- identifier = "And";
- break;
- case "BitwiseOr":
- identifier = "Or";
- break;
- case "ExclusiveOr":
- identifier = "Xor";
- break;
- // bit-array operators
- case "OnesComplement":
- identifier = "~";
- break;
- case "LeftShift":
- identifier = "<<";
- break;
- case "RightShift":
- identifier = ">>";
- break;
- // concatenation
- case "Concatenate":
- identifier = "&";
- break;
- // casting operators
- case "Implicit":
- case "Explicit":
- identifier = "CType";
- break;
- // didn't recognize an operator
- default:
- identifier = null;
- break;
- }
+ string identifier = null;
+ if (!(bool)reflection.Evaluate(apiIsUdtReturnExpression))
+ {
+ switch (name)
+ {
+ // unary math operators
+ case "UnaryPlus":
+ identifier = "+";
+ break;
+ case "UnaryNegation":
+ identifier = "-";
+ break;
+ case "Increment":
+ identifier = "++";
+ break;
+ case "Decrement":
+ identifier = "--";
+ break;
+ // unary logical operators
+ case "LogicalNot":
+ identifier = "Not";
+ break;
+ case "True":
+ identifier = "IsTrue";
+ break;
+ case "False":
+ identifier = "IsFalse";
+ break;
+ // binary comparison operators
+ case "Equality":
+ identifier = "=";
+ break;
+ case "Inequality":
+ identifier = "<>";
+ break;
+ case "LessThan":
+ identifier = "<";
+ break;
+ case "GreaterThan":
+ identifier = ">";
+ break;
+ case "LessThanOrEqual":
+ identifier = "<=";
+ break;
+ case "GreaterThanOrEqual":
+ identifier = ">=";
+ break;
+ // binary math operators
+ case "Addition":
+ identifier = "+";
+ break;
+ case "Subtraction":
+ identifier = "-";
+ break;
+ case "Multiply":
+ identifier = "*";
+ break;
+ case "Division":
+ identifier = "/";
+ break;
+ case "Exponent":
+ identifier = "^";
+ break;
+ case "Modulus":
+ identifier = "Mod";
+ break;
+ case "IntegerDivision":
+ identifier = @"\";
+ break;
+ // binary logical operators
+ case "BitwiseAnd":
+ identifier = "And";
+ break;
+ case "BitwiseOr":
+ identifier = "Or";
+ break;
+ case "ExclusiveOr":
+ identifier = "Xor";
+ break;
+ // bit-array operators
+ case "OnesComplement":
+ identifier = "~";
+ break;
+ case "LeftShift":
+ identifier = "<<";
+ break;
+ case "RightShift":
+ identifier = ">>";
+ break;
+ // concatenation
+ case "Concatenate":
+ identifier = "&";
+ break;
+ // casting operators
+ case "Implicit":
+ case "Explicit":
+ identifier = "CType";
+ break;
+ case "Assign":
+ identifier = "=";
+ break;
+ // didn't recognize an operator
+ default:
+ identifier = null;
+ break;
+ }
+ }
if (identifier == null) {
writer.WriteMessage("UnsupportedOperator_" + Language);
return;
diff --git a/tools/Sandcastle/Source/BuildAssembler/SyntaxComponents/VisualBasicUsageSyntax.cs b/tools/Sandcastle/Source/BuildAssembler/SyntaxComponents/VisualBasicUsageSyntax.cs
index a32faf2..702e627 100644
--- a/tools/Sandcastle/Source/BuildAssembler/SyntaxComponents/VisualBasicUsageSyntax.cs
+++ b/tools/Sandcastle/Source/BuildAssembler/SyntaxComponents/VisualBasicUsageSyntax.cs
@@ -249,6 +249,7 @@ namespace Microsoft.Ddue.Tools {
public override void WriteMethodSyntax (XPathNavigator reflection, SyntaxWriter writer) {
if (IsUnsupportedUnsafe(reflection, writer)) return;
+ if (IsUnsupportedVarargs(reflection, writer)) return;
base.WriteMethodSyntax(reflection, writer);
}
@@ -353,131 +354,141 @@ namespace Microsoft.Ddue.Tools {
XPathNavigator returnType = reflection.SelectSingleNode(apiReturnTypeExpression);
// Determine operator identifier and type
- string identifier;
- int type;
- switch (name) {
- // unary math operators
- case "UnaryPlus":
- identifier = "+";
- type = -1;
- break;
- case "UnaryNegation":
- identifier = "-";
- type = -1;
- break;
- case "Increment":
- identifier = "++";
- type = +1;
- break;
- case "Decrement":
- identifier = "--";
- type = +1;
- break;
- // unary logical operators
- case "LogicalNot":
- identifier = "Not";
- type = -1;
- break;
- case "True":
- identifier = "IsTrue";
- type = -1;
- break;
- case "False":
- identifier = "IsFalse";
- type = -1;
- break;
- // binary comparison operators
- case "Equality":
- identifier = "=";
- type = 2;
- break;
- case "Inequality":
- identifier = "<>";
- type = 2;
- break;
- case "LessThan":
- identifier = "<";
- type = 2;
- break;
- case "GreaterThan":
- identifier = ">";
- type = 2;
- break;
- case "LessThanOrEqual":
- identifier = "<=";
- type = 2;
- break;
- case "GreaterThanOrEqual":
- identifier = ">=";
- type = 2;
- break;
- // binary math operators
- case "Addition":
- identifier = "+";
- type = 2;
- break;
- case "Subtraction":
- identifier = "-";
- type = 2;
- break;
- case "Multiply":
- identifier = "*";
- type = 2;
- break;
- case "Division":
- identifier = "/";
- type = 2;
- break;
- case "Exponent":
- identifier = "^";
- type = 2;
- break;
- case "Modulus":
- identifier = "Mod";
- type = 2;
- break;
- case "IntegerDivision":
- identifier = @"\";
- type = 2;
- break;
- // binary logical operators
- case "BitwiseAnd":
- identifier = "And";
- type = 2;
- break;
- case "BitwiseOr":
- identifier = "Or";
- type = 2;
- break;
- case "ExclusiveOr":
- identifier = "Xor";
- type = 2;
- break;
- // bit-array operators
- case "OnesComplement":
- identifier = "~";
- type = -1;
- break;
- case "LeftShift":
- identifier = "<<";
- type = 2;
- break;
- case "RightShift":
- identifier = ">>";
- type = 2;
- break;
- // concatenation
- case "Concatenate":
- identifier = "&";
- type = 2;
- break;
- // didn't recognize an operator
- default:
- identifier = null;
- type = 0;
- break;
- }
+ string identifier = null;
+ int type = 0;
+ if (!(bool)reflection.Evaluate(apiIsUdtReturnExpression))
+ {
+ switch (name)
+ {
+ // unary math operators
+ case "UnaryPlus":
+ identifier = "+";
+ type = -1;
+ break;
+ case "UnaryNegation":
+ identifier = "-";
+ type = -1;
+ break;
+ case "Increment":
+ identifier = "++";
+ type = +1;
+ break;
+ case "Decrement":
+ identifier = "--";
+ type = +1;
+ break;
+ // unary logical operators
+ case "LogicalNot":
+ identifier = "Not";
+ type = -1;
+ break;
+ case "True":
+ identifier = "IsTrue";
+ type = -1;
+ break;
+ case "False":
+ identifier = "IsFalse";
+ type = -1;
+ break;
+ // binary comparison operators
+ case "Equality":
+ identifier = "=";
+ type = 2;
+ break;
+ case "Inequality":
+ identifier = "<>";
+ type = 2;
+ break;
+ case "LessThan":
+ identifier = "<";
+ type = 2;
+ break;
+ case "GreaterThan":
+ identifier = ">";
+ type = 2;
+ break;
+ case "LessThanOrEqual":
+ identifier = "<=";
+ type = 2;
+ break;
+ case "GreaterThanOrEqual":
+ identifier = ">=";
+ type = 2;
+ break;
+ // binary math operators
+ case "Addition":
+ identifier = "+";
+ type = 2;
+ break;
+ case "Subtraction":
+ identifier = "-";
+ type = 2;
+ break;
+ case "Multiply":
+ identifier = "*";
+ type = 2;
+ break;
+ case "Division":
+ identifier = "/";
+ type = 2;
+ break;
+ case "Exponent":
+ identifier = "^";
+ type = 2;
+ break;
+ case "Modulus":
+ identifier = "Mod";
+ type = 2;
+ break;
+ case "IntegerDivision":
+ identifier = @"\";
+ type = 2;
+ break;
+ // binary logical operators
+ case "BitwiseAnd":
+ identifier = "And";
+ type = 2;
+ break;
+ case "BitwiseOr":
+ identifier = "Or";
+ type = 2;
+ break;
+ case "ExclusiveOr":
+ identifier = "Xor";
+ type = 2;
+ break;
+ // bit-array operators
+ case "OnesComplement":
+ identifier = "~";
+ type = -1;
+ break;
+ case "LeftShift":
+ identifier = "<<";
+ type = 2;
+ break;
+ case "RightShift":
+ identifier = ">>";
+ type = 2;
+ break;
+ // concatenation
+ case "Concatenate":
+ identifier = "&";
+ type = 2;
+ break;
+ case "Assign":
+ identifier = "=";
+ type = 2;
+ break;
+
+
+ // didn't recognize an operator
+ default:
+ identifier = null;
+ type = 0;
+ break;
+ }
+ }
if (identifier == null) {
writer.WriteMessage("UnsupportedOperator_" + Language);
} else {
diff --git a/tools/Sandcastle/Source/CCI/ExceptionStrings.cs b/tools/Sandcastle/Source/CCI/ExceptionStrings.cs
index cad0038..bf97f4c 100644
--- a/tools/Sandcastle/Source/CCI/ExceptionStrings.cs
+++ b/tools/Sandcastle/Source/CCI/ExceptionStrings.cs
@@ -28,15 +28,13 @@ namespace System.Compiler
System.Resources.ResourceManager rMgr = ExceptionStrings.resMgr.Target as System.Resources.ResourceManager;
if (rMgr == null)
{
-
- rMgr = new System.Resources.ResourceManager("CCI.ExceptionStrings", typeof(ExceptionStrings).Assembly);
- /*
- #if CCINamespace
- rMgr = new System.Resources.ResourceManager("Microsoft.Cci.ExceptionStrings", typeof(ExceptionStrings).Assembly);
- #else
- rMgr = new System.Resources.ResourceManager("System.Compiler.ExceptionStrings", typeof(ExceptionStrings).Assembly);
- #endif
- */
+
+#if STATIC
+ rMgr = new System.Resources.ResourceManager("Microsoft.Cci.System.Compiler.ExceptionStrings", typeof(ExceptionStrings).Assembly);
+#else
+ rMgr = new System.Resources.ResourceManager("CCI.ExceptionStrings", typeof(ExceptionStrings).Assembly);
+#endif
+
ExceptionStrings.resMgr.Target = rMgr;
}
return rMgr;
diff --git a/tools/Sandcastle/Source/CCI/Properties/AssemblyInfo.cs b/tools/Sandcastle/Source/CCI/Properties/AssemblyInfo.cs
index 7027a51..f9a6ea4 100644
--- a/tools/Sandcastle/Source/CCI/Properties/AssemblyInfo.cs
+++ b/tools/Sandcastle/Source/CCI/Properties/AssemblyInfo.cs
@@ -39,5 +39,5 @@ using System.Runtime.InteropServices;
//
// You can specify all the values or you can default the Revision and Build Numbers
// by using the '*' as shown below:
-[assembly: AssemblyVersion("2.5.10626.00")]
-[assembly: AssemblyFileVersion("2.5.10626.00")]
+[assembly: AssemblyVersion("2.6.10621.1")]
+[assembly: AssemblyFileVersion("2.6.10621.1")]
diff --git a/tools/Sandcastle/Source/ChmBuilder/Properties/AssemblyInfo.cs b/tools/Sandcastle/Source/ChmBuilder/Properties/AssemblyInfo.cs
index 6f99eff..39a2a3a 100644
--- a/tools/Sandcastle/Source/ChmBuilder/Properties/AssemblyInfo.cs
+++ b/tools/Sandcastle/Source/ChmBuilder/Properties/AssemblyInfo.cs
@@ -36,5 +36,5 @@ using System.Runtime.InteropServices;
// Build Number
// Revision
//
-[assembly: AssemblyVersion("2.5.10626.00")]
-[assembly: AssemblyFileVersion("2.5.10626.00")]
+[assembly: AssemblyVersion("2.6.10621.1")]
+[assembly: AssemblyFileVersion("2.6.10621.1")]
diff --git a/tools/Sandcastle/Source/CommandLine/Properties/AssemblyInfo.cs b/tools/Sandcastle/Source/CommandLine/Properties/AssemblyInfo.cs
index cd3d1c8..09ee309 100644
--- a/tools/Sandcastle/Source/CommandLine/Properties/AssemblyInfo.cs
+++ b/tools/Sandcastle/Source/CommandLine/Properties/AssemblyInfo.cs
@@ -38,5 +38,5 @@ using System.Runtime.InteropServices;
//
// You can specify all the values or you can default the Revision and Build Numbers
// by using the '*' as shown below:
-[assembly: AssemblyVersion("2.5.10626.00")]
-[assembly: AssemblyFileVersion("2.5.10626.00")]
+[assembly: AssemblyVersion("2.6.10621.1")]
+[assembly: AssemblyFileVersion("2.6.10621.1")]
diff --git a/tools/Sandcastle/Source/DBCSFix/Properties/AssemblyInfo.cs b/tools/Sandcastle/Source/DBCSFix/Properties/AssemblyInfo.cs
index ae06688..a111754 100644
--- a/tools/Sandcastle/Source/DBCSFix/Properties/AssemblyInfo.cs
+++ b/tools/Sandcastle/Source/DBCSFix/Properties/AssemblyInfo.cs
@@ -33,5 +33,5 @@ using System.Runtime.InteropServices;
// Build Number
// Revision
//
-[assembly: AssemblyVersion("2.5.10626.00")]
-[assembly: AssemblyFileVersion("2.5.10626.00")]
+[assembly: AssemblyVersion("2.6.10621.1")]
+[assembly: AssemblyFileVersion("2.6.10621.1")]
diff --git a/tools/Sandcastle/Source/MRefBuilder/MRefBuilder.config b/tools/Sandcastle/Source/MRefBuilder/MRefBuilder.config
index 2f6c5cd..37c2a9d 100644
--- a/tools/Sandcastle/Source/MRefBuilder/MRefBuilder.config
+++ b/tools/Sandcastle/Source/MRefBuilder/MRefBuilder.config
@@ -18,6 +18,8 @@
</namespace>
</apiFilter>
-->
+ <protectedSealed expose="false" /> <!-- Whether to include protected sealed members -->
+ <!-- <noPIA expose="false" /> --> <!-- Whether to include "no-PIA" COM types, aka types marked with TypeIdentifierAttribute and CompilerGeneratedAttribute -->
<attributeFilter expose="true">
<!-- Most attributes in System.ComponentModel control designer behavior. Don't show them. -->
<!-- The expections are attributes relating to data binding. Do show them. -->
@@ -84,7 +86,6 @@
<!-- Don't show attributes related to XAML serialization details. -->
<namespace name="System.Windows.Markup" expose="true">
<type name="ConstructorArgumentAttribute" expose="false" />
- <type name="DependsOnAttribute" expose="false" />
<type name="DesignerSerializationOptionsAttribute" expose="false" />
<type name="ValueSerializerAttribute" expose="false" />
<type name="XmlnsCompatibleWithAttribute" expose="false" />
diff --git a/tools/Sandcastle/Source/MRefBuilder/MRefWriter.cs b/tools/Sandcastle/Source/MRefBuilder/MRefWriter.cs
index 33ff1dd..bb8a8fa 100644
--- a/tools/Sandcastle/Source/MRefBuilder/MRefWriter.cs
+++ b/tools/Sandcastle/Source/MRefBuilder/MRefWriter.cs
@@ -389,7 +389,7 @@ namespace Microsoft.Ddue.Tools {
List < Interface > exposedContracts = new List < Interface >();
for (int i = 0; i < contracts.Count; i++) {
Interface contract = contracts[i];
- if (this.ApiFilter.IsExposedType(contract)) {
+ if (this.ApiFilter.IsDocumentedInterface(contract)) {
// if generic, check whether specialization types are exposed
exposedContracts.Add(contract);
}
@@ -1015,6 +1015,8 @@ namespace Microsoft.Ddue.Tools {
WriteBooleanAttribute("abstract", method.IsAbstract, false);
WriteBooleanAttribute("virtual", method.IsVirtual);
WriteBooleanAttribute("final", method.IsFinal, false);
+ WriteBooleanAttribute("varargs", method.CallingConvention == CallingConventionFlags.VarArg, false);
+
if (method.IsPrivate && method.IsVirtual) WriteBooleanAttribute("eii", true);
diff --git a/tools/Sandcastle/Source/MRefBuilder/MrefBuilder.exe.config b/tools/Sandcastle/Source/MRefBuilder/MrefBuilder.exe.config
new file mode 100644
index 0000000..d4f4665
--- /dev/null
+++ b/tools/Sandcastle/Source/MRefBuilder/MrefBuilder.exe.config
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<configuration>
+ <startup>
+ <supportedRuntime version="v4.0.30319"/>
+ <supportedRuntime version="v2.0.50727"/>
+ </startup>
+</configuration>
+
diff --git a/tools/Sandcastle/Source/MRefBuilder/Properties/AssemblyInfo.cs b/tools/Sandcastle/Source/MRefBuilder/Properties/AssemblyInfo.cs
index 91fb255..d590c74 100644
--- a/tools/Sandcastle/Source/MRefBuilder/Properties/AssemblyInfo.cs
+++ b/tools/Sandcastle/Source/MRefBuilder/Properties/AssemblyInfo.cs
@@ -36,5 +36,5 @@ using System.Runtime.InteropServices;
// Build Number
// Revision
//
-[assembly: AssemblyVersion("2.5.10626.00")]
-[assembly: AssemblyFileVersion("2.5.10626.00")]
+[assembly: AssemblyVersion("2.6.10621.1")]
+[assembly: AssemblyFileVersion("2.6.10621.1")]
diff --git a/tools/Sandcastle/Source/MRefBuilder/XamlAttachedMembersAddIn.cs b/tools/Sandcastle/Source/MRefBuilder/XamlAttachedMembersAddIn.cs
index 79c7c76..7d2ad2c 100644
--- a/tools/Sandcastle/Source/MRefBuilder/XamlAttachedMembersAddIn.cs
+++ b/tools/Sandcastle/Source/MRefBuilder/XamlAttachedMembersAddIn.cs
@@ -79,7 +79,7 @@ namespace Microsoft.Ddue.Tools {
// make sure there isn't already such a property
Property existingProperty = type.GetProperty(new Identifier(name), new TypeNode[0]);
- if (existingProperty != null) continue;
+ if (existingProperty != null && existingProperty.IsVisibleOutsideAssembly) continue;
// okay, this really is an indication of an attached property, so create one
@@ -126,7 +126,7 @@ namespace Microsoft.Ddue.Tools {
// make sure there isn't already such an event
Event existingEvent = type.GetEvent(new Identifier(name));
- if (existingEvent != null) continue;
+ if (existingEvent != null && existingEvent.IsVisibleOutsideAssembly) continue;
// okay, this really is an indication of an attached event, so create one
diff --git a/tools/Sandcastle/Source/Reflection/ApiFilter.cs b/tools/Sandcastle/Source/Reflection/ApiFilter.cs
index 201878f..b24cbbb 100644
--- a/tools/Sandcastle/Source/Reflection/ApiFilter.cs
+++ b/tools/Sandcastle/Source/Reflection/ApiFilter.cs
@@ -62,6 +62,12 @@ namespace Microsoft.Ddue.Tools.Reflection {
#region Public API
+ public virtual bool IsDocumentedInterface(TypeNode type)
+ {
+ if (type == null) throw new ArgumentException("type");
+ return (apiFilter.IsExposedType(type));
+ }
+
public virtual bool HasExposedMembers(TypeNode type)
{
if (type == null) throw new ArgumentNullException("type");
diff --git a/tools/Sandcastle/Source/Reflection/ExternalDocumentedFilter.cs b/tools/Sandcastle/Source/Reflection/ExternalDocumentedFilter.cs
index e7f0cf7..9044fc5 100644
--- a/tools/Sandcastle/Source/Reflection/ExternalDocumentedFilter.cs
+++ b/tools/Sandcastle/Source/Reflection/ExternalDocumentedFilter.cs
@@ -15,20 +15,31 @@ namespace Microsoft.Ddue.Tools.Reflection {
public class ExternalDocumentedFilter : ApiFilter {
+ bool protectedSealedVisible = false;
+ bool noPIA = false;
+
public ExternalDocumentedFilter() : base() { }
- public ExternalDocumentedFilter(XPathNavigator configuration) : base(configuration) { }
+ public ExternalDocumentedFilter(XPathNavigator configuration)
+ : base(configuration)
+ {
+ protectedSealedVisible = (bool)configuration.Evaluate("boolean(protectedSealed[@expose='true'])");
+ noPIA = (bool)configuration.Evaluate("not(boolean(noPIA[@expose='false']))");
+ }
- public override bool IsExposedMember(Member member) {
+ public override bool IsExposedMember(Member member)
+ {
if (member == null) throw new ArgumentNullException("member");
+ TypeNode type = member.DeclaringType;
// if the member isn't visible, we certainly won't expose it...
- if (!member.IsVisibleOutsideAssembly) return (false);
+ if (!member.IsVisibleOutsideAssembly && !(protectedSealedVisible && type.IsSealed && (member.IsFamily || member.IsFamilyOrAssembly)))
+ return (false);
// ...but there are also some visible members we won't expose.
- TypeNode type = member.DeclaringType;
// member of delegates are not exposed
if (type.NodeType == NodeType.DelegateNode) return (false);
// accessor methods for properties and events are not exposed
- if (member.IsSpecialName && (member.NodeType == NodeType.Method)) {
+ if (member.IsSpecialName && (member.NodeType == NodeType.Method))
+ {
string name = member.Name.Name;
if (NameContains(name, "get_")) return (false);
if (NameContains(name, "set_")) return (false);
@@ -38,7 +49,8 @@ namespace Microsoft.Ddue.Tools.Reflection {
}
// the value field of enumerations is not exposed
- if (member.IsSpecialName && (type.NodeType == NodeType.EnumNode) && (member.NodeType == NodeType.Field)) {
+ if (member.IsSpecialName && (type.NodeType == NodeType.EnumNode) && (member.NodeType == NodeType.Field))
+ {
string name = member.Name.Name;
if (name == "value__") return (false);
}
@@ -47,10 +59,11 @@ namespace Microsoft.Ddue.Tools.Reflection {
// change of plan -- yes they are
// if (type.IsSealed && (member.IsFamily || member.IsFamilyOrAssembly)) return(false);
- // One more test to deal with a case: a private method is an explicit implementation for
+ // One more test to deal with a wierd case: a private method is an explicit implementation for
// a property accessor, but is not marked with the special name flag. To find these, test for
// the accessibility of the methods they implement
- if (member.IsPrivate && member.NodeType == NodeType.Method) {
+ if (member.IsPrivate && member.NodeType == NodeType.Method)
+ {
Method method = (Method)member;
MethodList implements = method.ImplementedInterfaceMethods;
if ((implements.Count > 0) && (!IsExposedMember(implements[0]))) return (false);
@@ -60,19 +73,60 @@ namespace Microsoft.Ddue.Tools.Reflection {
return (base.IsExposedMember(member));
}
+
// we are satistied with the default namespace expose test, so don't override it
- public override bool IsExposedType(TypeNode type) {
+ public override bool IsExposedType(TypeNode type)
+ {
if (type == null) throw new ArgumentNullException("type");
+
+ if (!type.IsVisibleOutsideAssembly)
+ return false;
+
+ // filter out no-PIA COM types
+ if (!noPIA)
+ {
+ if (IsEmbeddedInteropType(type))
+ return false;
+ }
// expose any visible types allowed by the base filter
- if (type.IsVisibleOutsideAssembly) {
- return (base.IsExposedType(type));
- } else {
- return (false);
+ return (base.IsExposedType(type));
+ }
+
+
+ // ApiFilter was extended to support interfaces that are filtered
+ // out (embedded interop types) but still contribute to
+ // the list of a type's implemented interfaces. See change
+ // to MrefWriter.cs, method GetExposedInterfaces.
+
+ public override bool IsDocumentedInterface(TypeNode type)
+ {
+ if (!noPIA && !IsEmbeddedInteropType(type))
+ return true;
+
+ return base.IsDocumentedInterface(type);
+ }
+
+ private bool IsEmbeddedInteropType(TypeNode type)
+ {
+ bool compilerGeneratedAttribute = false;
+ bool typeIdentifierAttribute = false;
+ for (int i = 0; i < type.Attributes.Count; i++)
+ {
+ if (type.Attributes[i].Type.FullName == "System.Runtime.CompilerServices.CompilerGeneratedAttribute")
+ compilerGeneratedAttribute = true;
+ if (type.Attributes[i].Type.FullName == "System.Runtime.InteropServices.TypeIdentifierAttribute")
+ typeIdentifierAttribute = true;
+
}
- // return(type.IsVisibleOutsideAssembly);
+ if (compilerGeneratedAttribute && typeIdentifierAttribute)
+ return true;
+ else
+ return false;
+
}
+
private static bool NameContains(string name, string substring) {
return (name.Contains(substring));
}
diff --git a/tools/Sandcastle/Source/Reflection/GlobalSuppressions.cs b/tools/Sandcastle/Source/Reflection/GlobalSuppressions.cs
index aff5272..8994661 100644
--- a/tools/Sandcastle/Source/Reflection/GlobalSuppressions.cs
+++ b/tools/Sandcastle/Source/Reflection/GlobalSuppressions.cs
@@ -53,3 +53,7 @@
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1002:DoNotExposeGenericLists", Scope = "member", Target = "Microsoft.Ddue.Tools.Reflection.NamespaceFilter.#TypeFilters")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1011:ConsiderPassingBaseTypesAsParameters", Scope = "member", Target = "Microsoft.Ddue.Tools.Reflection.NamespaceFilter.#IsExposedNamespace(System.Compiler.Namespace)")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1011:ConsiderPassingBaseTypesAsParameters", Scope = "member", Target = "Microsoft.Ddue.Tools.Reflection.TypeFilter.#IsExposedType(System.Compiler.TypeNode)")]
+[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2208:InstantiateArgumentExceptionsCorrectly", Scope = "member", Target = "Microsoft.Ddue.Tools.Reflection.ApiFilter.#IsDocumentedInterface(System.Compiler.TypeNode)")]
+[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1805:DoNotInitializeUnnecessarily", Scope = "member", Target = "Microsoft.Ddue.Tools.Reflection.ExternalDocumentedFilter.#.ctor()")]
+[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1805:DoNotInitializeUnnecessarily", Scope = "member", Target = "Microsoft.Ddue.Tools.Reflection.ExternalDocumentedFilter.#.ctor(System.Xml.XPath.XPathNavigator)")]
+[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1822:MarkMembersAsStatic", Scope = "member", Target = "Microsoft.Ddue.Tools.Reflection.ExternalDocumentedFilter.#IsEmbeddedInteropType(System.Compiler.TypeNode)")]
diff --git a/tools/Sandcastle/Source/Reflection/Properties/AssemblyInfo.cs b/tools/Sandcastle/Source/Reflection/Properties/AssemblyInfo.cs
index a18dd70..6aa5a42 100644
--- a/tools/Sandcastle/Source/Reflection/Properties/AssemblyInfo.cs
+++ b/tools/Sandcastle/Source/Reflection/Properties/AssemblyInfo.cs
@@ -36,5 +36,5 @@ using System.Runtime.InteropServices;
//
// You can specify all the values or you can default the Revision and Build Numbers
// by using the '*' as shown below:
-[assembly: AssemblyVersion("2.5.10626.00")]
-[assembly: AssemblyFileVersion("2.5.10626.00")]
+[assembly: AssemblyVersion("2.6.10621.1")]
+[assembly: AssemblyFileVersion("2.6.10621.1")]
diff --git a/tools/Sandcastle/Source/Sandcastle.sln b/tools/Sandcastle/Source/Sandcastle.sln
deleted file mode 100644
index 2815fa0..0000000
--- a/tools/Sandcastle/Source/Sandcastle.sln
+++ /dev/null
@@ -1,155 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 10.00
-# Visual Studio 2008
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BuildAssembler", "BuildAssembler\BuildAssembler\BuildAssembler.csproj", "{5BA19924-5A65-46E0-97CD-948595932584}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BuildAssemblerLibrary", "BuildAssembler\BuildAssemblerLibrary\BuildAssemblerLibrary.csproj", "{399E78F8-4954-409E-991A-37DA9D0579CC}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BuildComponents", "BuildAssembler\BuildComponents\BuildComponents.csproj", "{30773718-BC7C-4FCC-A9C2-7EE61DF4EC41}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CopyComponents", "BuildAssembler\CopyComponents\CopyComponents.csproj", "{E64725D7-2208-4C28-922D-B6543C0BC483}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SyntaxComponents", "BuildAssembler\SyntaxComponents\SyntaxComponents.csproj", "{CEAEC85B-973A-4414-8668-723EB65E5088}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CCI", "CCI\CCI.csproj", "{4CB332D6-976E-44F6-A320-A515A9D1D1D3}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ChmBuilder", "ChmBuilder\ChmBuilder.csproj", "{D17FA1CB-06EF-43A6-B11E-2B8E2661AA6D}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Build Assembler", "Build Assembler", "{9E55F052-6831-473C-82D8-0BA2CDAAEF2C}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CommandLine", "CommandLine\CommandLine.csproj", "{6CF7CA42-3706-4F6B-A2B4-10EF3F511888}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DBCSFix", "DBCSFix\DBCSFix.csproj", "{80407AE8-7A1F-4C28-8627-6C871E1D717A}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MRefBuilder", "MRefBuilder\MRefBuilder.csproj", "{A8DCAD75-879F-4C97-803B-C9A17F227B04}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Reflection", "Reflection\Reflection.csproj", "{74F5EB3F-DC99-4FBE-9495-EE378FC60F65}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MergeXml", "XmlCat\MergeXml.csproj", "{1CEE1BB8-10BF-483E-A54A-F97B308ABA0A}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XslTransform", "XslTransform\XslTransform.csproj", "{88A4B9E2-AE05-4817-879C-15461DA29761}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Any CPU = Debug|Any CPU
- Release|Any CPU = Release|Any CPU
- Sandcastle|Any CPU = Sandcastle|Any CPU
- WebDocsDebug|Any CPU = WebDocsDebug|Any CPU
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {5BA19924-5A65-46E0-97CD-948595932584}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {5BA19924-5A65-46E0-97CD-948595932584}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {5BA19924-5A65-46E0-97CD-948595932584}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {5BA19924-5A65-46E0-97CD-948595932584}.Release|Any CPU.Build.0 = Release|Any CPU
- {5BA19924-5A65-46E0-97CD-948595932584}.Sandcastle|Any CPU.ActiveCfg = Sandcastle|Any CPU
- {5BA19924-5A65-46E0-97CD-948595932584}.Sandcastle|Any CPU.Build.0 = Sandcastle|Any CPU
- {5BA19924-5A65-46E0-97CD-948595932584}.WebDocsDebug|Any CPU.ActiveCfg = WebDocsDebug|Any CPU
- {5BA19924-5A65-46E0-97CD-948595932584}.WebDocsDebug|Any CPU.Build.0 = WebDocsDebug|Any CPU
- {399E78F8-4954-409E-991A-37DA9D0579CC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {399E78F8-4954-409E-991A-37DA9D0579CC}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {399E78F8-4954-409E-991A-37DA9D0579CC}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {399E78F8-4954-409E-991A-37DA9D0579CC}.Release|Any CPU.Build.0 = Release|Any CPU
- {399E78F8-4954-409E-991A-37DA9D0579CC}.Sandcastle|Any CPU.ActiveCfg = Sandcastle|Any CPU
- {399E78F8-4954-409E-991A-37DA9D0579CC}.Sandcastle|Any CPU.Build.0 = Sandcastle|Any CPU
- {399E78F8-4954-409E-991A-37DA9D0579CC}.WebDocsDebug|Any CPU.ActiveCfg = WebDocsDebug|Any CPU
- {399E78F8-4954-409E-991A-37DA9D0579CC}.WebDocsDebug|Any CPU.Build.0 = WebDocsDebug|Any CPU
- {30773718-BC7C-4FCC-A9C2-7EE61DF4EC41}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {30773718-BC7C-4FCC-A9C2-7EE61DF4EC41}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {30773718-BC7C-4FCC-A9C2-7EE61DF4EC41}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {30773718-BC7C-4FCC-A9C2-7EE61DF4EC41}.Release|Any CPU.Build.0 = Release|Any CPU
- {30773718-BC7C-4FCC-A9C2-7EE61DF4EC41}.Sandcastle|Any CPU.ActiveCfg = Sandcastle|Any CPU
- {30773718-BC7C-4FCC-A9C2-7EE61DF4EC41}.Sandcastle|Any CPU.Build.0 = Sandcastle|Any CPU
- {30773718-BC7C-4FCC-A9C2-7EE61DF4EC41}.WebDocsDebug|Any CPU.ActiveCfg = WebDocsDebug|Any CPU
- {30773718-BC7C-4FCC-A9C2-7EE61DF4EC41}.WebDocsDebug|Any CPU.Build.0 = WebDocsDebug|Any CPU
- {E64725D7-2208-4C28-922D-B6543C0BC483}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {E64725D7-2208-4C28-922D-B6543C0BC483}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {E64725D7-2208-4C28-922D-B6543C0BC483}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {E64725D7-2208-4C28-922D-B6543C0BC483}.Release|Any CPU.Build.0 = Release|Any CPU
- {E64725D7-2208-4C28-922D-B6543C0BC483}.Sandcastle|Any CPU.ActiveCfg = Release|Any CPU
- {E64725D7-2208-4C28-922D-B6543C0BC483}.Sandcastle|Any CPU.Build.0 = Release|Any CPU
- {E64725D7-2208-4C28-922D-B6543C0BC483}.WebDocsDebug|Any CPU.ActiveCfg = Debug|Any CPU
- {E64725D7-2208-4C28-922D-B6543C0BC483}.WebDocsDebug|Any CPU.Build.0 = Debug|Any CPU
- {CEAEC85B-973A-4414-8668-723EB65E5088}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {CEAEC85B-973A-4414-8668-723EB65E5088}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {CEAEC85B-973A-4414-8668-723EB65E5088}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {CEAEC85B-973A-4414-8668-723EB65E5088}.Release|Any CPU.Build.0 = Release|Any CPU
- {CEAEC85B-973A-4414-8668-723EB65E5088}.Sandcastle|Any CPU.ActiveCfg = Sandcastle|Any CPU
- {CEAEC85B-973A-4414-8668-723EB65E5088}.Sandcastle|Any CPU.Build.0 = Sandcastle|Any CPU
- {CEAEC85B-973A-4414-8668-723EB65E5088}.WebDocsDebug|Any CPU.ActiveCfg = WebDocsDebug|Any CPU
- {CEAEC85B-973A-4414-8668-723EB65E5088}.WebDocsDebug|Any CPU.Build.0 = WebDocsDebug|Any CPU
- {4CB332D6-976E-44F6-A320-A515A9D1D1D3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {4CB332D6-976E-44F6-A320-A515A9D1D1D3}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {4CB332D6-976E-44F6-A320-A515A9D1D1D3}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {4CB332D6-976E-44F6-A320-A515A9D1D1D3}.Release|Any CPU.Build.0 = Release|Any CPU
- {4CB332D6-976E-44F6-A320-A515A9D1D1D3}.Sandcastle|Any CPU.ActiveCfg = Sandcastle|Any CPU
- {4CB332D6-976E-44F6-A320-A515A9D1D1D3}.Sandcastle|Any CPU.Build.0 = Sandcastle|Any CPU
- {4CB332D6-976E-44F6-A320-A515A9D1D1D3}.WebDocsDebug|Any CPU.ActiveCfg = WebDocsDebug|Any CPU
- {4CB332D6-976E-44F6-A320-A515A9D1D1D3}.WebDocsDebug|Any CPU.Build.0 = WebDocsDebug|Any CPU
- {D17FA1CB-06EF-43A6-B11E-2B8E2661AA6D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {D17FA1CB-06EF-43A6-B11E-2B8E2661AA6D}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {D17FA1CB-06EF-43A6-B11E-2B8E2661AA6D}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {D17FA1CB-06EF-43A6-B11E-2B8E2661AA6D}.Release|Any CPU.Build.0 = Release|Any CPU
- {D17FA1CB-06EF-43A6-B11E-2B8E2661AA6D}.Sandcastle|Any CPU.ActiveCfg = Release|Any CPU
- {D17FA1CB-06EF-43A6-B11E-2B8E2661AA6D}.Sandcastle|Any CPU.Build.0 = Release|Any CPU
- {D17FA1CB-06EF-43A6-B11E-2B8E2661AA6D}.WebDocsDebug|Any CPU.ActiveCfg = Debug|Any CPU
- {D17FA1CB-06EF-43A6-B11E-2B8E2661AA6D}.WebDocsDebug|Any CPU.Build.0 = Debug|Any CPU
- {6CF7CA42-3706-4F6B-A2B4-10EF3F511888}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {6CF7CA42-3706-4F6B-A2B4-10EF3F511888}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {6CF7CA42-3706-4F6B-A2B4-10EF3F511888}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {6CF7CA42-3706-4F6B-A2B4-10EF3F511888}.Release|Any CPU.Build.0 = Release|Any CPU
- {6CF7CA42-3706-4F6B-A2B4-10EF3F511888}.Sandcastle|Any CPU.ActiveCfg = Sandcastle|Any CPU
- {6CF7CA42-3706-4F6B-A2B4-10EF3F511888}.Sandcastle|Any CPU.Build.0 = Sandcastle|Any CPU
- {6CF7CA42-3706-4F6B-A2B4-10EF3F511888}.WebDocsDebug|Any CPU.ActiveCfg = WebDocsDebug|Any CPU
- {6CF7CA42-3706-4F6B-A2B4-10EF3F511888}.WebDocsDebug|Any CPU.Build.0 = WebDocsDebug|Any CPU
- {80407AE8-7A1F-4C28-8627-6C871E1D717A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {80407AE8-7A1F-4C28-8627-6C871E1D717A}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {80407AE8-7A1F-4C28-8627-6C871E1D717A}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {80407AE8-7A1F-4C28-8627-6C871E1D717A}.Release|Any CPU.Build.0 = Release|Any CPU
- {80407AE8-7A1F-4C28-8627-6C871E1D717A}.Sandcastle|Any CPU.ActiveCfg = Release|Any CPU
- {80407AE8-7A1F-4C28-8627-6C871E1D717A}.Sandcastle|Any CPU.Build.0 = Release|Any CPU
- {80407AE8-7A1F-4C28-8627-6C871E1D717A}.WebDocsDebug|Any CPU.ActiveCfg = Debug|Any CPU
- {80407AE8-7A1F-4C28-8627-6C871E1D717A}.WebDocsDebug|Any CPU.Build.0 = Debug|Any CPU
- {A8DCAD75-879F-4C97-803B-C9A17F227B04}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {A8DCAD75-879F-4C97-803B-C9A17F227B04}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {A8DCAD75-879F-4C97-803B-C9A17F227B04}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {A8DCAD75-879F-4C97-803B-C9A17F227B04}.Release|Any CPU.Build.0 = Release|Any CPU
- {A8DCAD75-879F-4C97-803B-C9A17F227B04}.Sandcastle|Any CPU.ActiveCfg = Sandcastle|Any CPU
- {A8DCAD75-879F-4C97-803B-C9A17F227B04}.Sandcastle|Any CPU.Build.0 = Sandcastle|Any CPU
- {A8DCAD75-879F-4C97-803B-C9A17F227B04}.WebDocsDebug|Any CPU.ActiveCfg = WebDocsDebug|Any CPU
- {A8DCAD75-879F-4C97-803B-C9A17F227B04}.WebDocsDebug|Any CPU.Build.0 = WebDocsDebug|Any CPU
- {74F5EB3F-DC99-4FBE-9495-EE378FC60F65}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {74F5EB3F-DC99-4FBE-9495-EE378FC60F65}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {74F5EB3F-DC99-4FBE-9495-EE378FC60F65}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {74F5EB3F-DC99-4FBE-9495-EE378FC60F65}.Release|Any CPU.Build.0 = Release|Any CPU
- {74F5EB3F-DC99-4FBE-9495-EE378FC60F65}.Sandcastle|Any CPU.ActiveCfg = Sandcastle|Any CPU
- {74F5EB3F-DC99-4FBE-9495-EE378FC60F65}.Sandcastle|Any CPU.Build.0 = Sandcastle|Any CPU
- {74F5EB3F-DC99-4FBE-9495-EE378FC60F65}.WebDocsDebug|Any CPU.ActiveCfg = WebDocsDebug|Any CPU
- {74F5EB3F-DC99-4FBE-9495-EE378FC60F65}.WebDocsDebug|Any CPU.Build.0 = WebDocsDebug|Any CPU
- {1CEE1BB8-10BF-483E-A54A-F97B308ABA0A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {1CEE1BB8-10BF-483E-A54A-F97B308ABA0A}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {1CEE1BB8-10BF-483E-A54A-F97B308ABA0A}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {1CEE1BB8-10BF-483E-A54A-F97B308ABA0A}.Release|Any CPU.Build.0 = Release|Any CPU
- {1CEE1BB8-10BF-483E-A54A-F97B308ABA0A}.Sandcastle|Any CPU.ActiveCfg = Release|Any CPU
- {1CEE1BB8-10BF-483E-A54A-F97B308ABA0A}.Sandcastle|Any CPU.Build.0 = Release|Any CPU
- {1CEE1BB8-10BF-483E-A54A-F97B308ABA0A}.WebDocsDebug|Any CPU.ActiveCfg = Debug|Any CPU
- {1CEE1BB8-10BF-483E-A54A-F97B308ABA0A}.WebDocsDebug|Any CPU.Build.0 = Debug|Any CPU
- {88A4B9E2-AE05-4817-879C-15461DA29761}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {88A4B9E2-AE05-4817-879C-15461DA29761}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {88A4B9E2-AE05-4817-879C-15461DA29761}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {88A4B9E2-AE05-4817-879C-15461DA29761}.Release|Any CPU.Build.0 = Release|Any CPU
- {88A4B9E2-AE05-4817-879C-15461DA29761}.Sandcastle|Any CPU.ActiveCfg = Sandcastle|Any CPU
- {88A4B9E2-AE05-4817-879C-15461DA29761}.Sandcastle|Any CPU.Build.0 = Sandcastle|Any CPU
- {88A4B9E2-AE05-4817-879C-15461DA29761}.WebDocsDebug|Any CPU.ActiveCfg = WebDocsDebug|Any CPU
- {88A4B9E2-AE05-4817-879C-15461DA29761}.WebDocsDebug|Any CPU.Build.0 = WebDocsDebug|Any CPU
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
- GlobalSection(NestedProjects) = preSolution
- {399E78F8-4954-409E-991A-37DA9D0579CC} = {9E55F052-6831-473C-82D8-0BA2CDAAEF2C}
- {30773718-BC7C-4FCC-A9C2-7EE61DF4EC41} = {9E55F052-6831-473C-82D8-0BA2CDAAEF2C}
- {E64725D7-2208-4C28-922D-B6543C0BC483} = {9E55F052-6831-473C-82D8-0BA2CDAAEF2C}
- {CEAEC85B-973A-4414-8668-723EB65E5088} = {9E55F052-6831-473C-82D8-0BA2CDAAEF2C}
- {5BA19924-5A65-46E0-97CD-948595932584} = {9E55F052-6831-473C-82D8-0BA2CDAAEF2C}
- EndGlobalSection
-EndGlobal
diff --git a/tools/Sandcastle/Source/XmlCat/Properties/AssemblyInfo.cs b/tools/Sandcastle/Source/XmlCat/Properties/AssemblyInfo.cs
index 1f63295..6d4deed 100644
--- a/tools/Sandcastle/Source/XmlCat/Properties/AssemblyInfo.cs
+++ b/tools/Sandcastle/Source/XmlCat/Properties/AssemblyInfo.cs
@@ -34,5 +34,5 @@ using System.Runtime.InteropServices;
// Build Number
// Revision
//
-[assembly: AssemblyVersion("2.5.10626.00")]
-[assembly: AssemblyFileVersion("2.5.10626.00")]
+[assembly: AssemblyVersion("2.6.10621.1")]
+[assembly: AssemblyFileVersion("2.6.10621.1")]
diff --git a/tools/Sandcastle/Source/XslTransform/Properties/AssemblyInfo.cs b/tools/Sandcastle/Source/XslTransform/Properties/AssemblyInfo.cs
index c0bef2a..bfa031b 100644
--- a/tools/Sandcastle/Source/XslTransform/Properties/AssemblyInfo.cs
+++ b/tools/Sandcastle/Source/XslTransform/Properties/AssemblyInfo.cs
@@ -36,5 +36,5 @@ using System.Runtime.InteropServices;
// Build Number
// Revision
//
-[assembly: AssemblyVersion("2.5.10626.00")]
-[assembly: AssemblyFileVersion("2.5.10626.00")]
+[assembly: AssemblyVersion("2.6.10621.1")]
+[assembly: AssemblyFileVersion("2.6.10621.1")]
diff --git a/tools/Sandcastle/Source/build.proj b/tools/Sandcastle/Source/build.proj
index ca9fe49..f96ce1c 100644
--- a/tools/Sandcastle/Source/build.proj
+++ b/tools/Sandcastle/Source/build.proj
@@ -1,6 +1,6 @@
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
- <SandcastleProjects Include="**\*.csproj" />
+ <SandcastleProjects Include="**\*.csproj" Exclude="BuildAssembler\BuildAssembler\BuildAssemblerConsole.csproj" />
</ItemGroup>
<Target Name="Build">