diff options
author | Andrew Arnott <andrewarnott@gmail.com> | 2012-03-11 21:16:19 -0700 |
---|---|---|
committer | Andrew Arnott <andrewarnott@gmail.com> | 2012-03-11 21:16:19 -0700 |
commit | 6c29eba4701e48222941981d499eb08686788a22 (patch) | |
tree | 5e8d9e3b9cc175d3b4e7f214e31d6b0e235467cb | |
parent | 4cc2523e6f2c2f9975d3328ae983cc509c449315 (diff) | |
download | DotNetOpenAuth-6c29eba4701e48222941981d499eb08686788a22.zip DotNetOpenAuth-6c29eba4701e48222941981d499eb08686788a22.tar.gz DotNetOpenAuth-6c29eba4701e48222941981d499eb08686788a22.tar.bz2 |
Upgraded to Sandcastle June 2010 release (changeset 54478).
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 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>    </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 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>    </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">© 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 Binary files differnew file mode 100644 index 0000000..5edc31f --- /dev/null +++ b/tools/Sandcastle/Presentation/vs2005/icons/slMobile.gif 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) > 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) > 1])"/> + <xsl:variable name="showMemberFrameworksFilter" select="boolean($group='list' and $subgroup!='DerivedTypeList' and /document/reference/elements//element[count(versions/versions[@name != 'netfwcp']) > 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> </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) > 0"> - <xsl:call-template name="section"> + <xsl:template name="exceptions"> + <xsl:if test="count(/document/comments/exception) > 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) > 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) > 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) > 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"> |