diff options
author | Joel Martinez <joelmartinez@gmail.com> | 2015-10-08 00:32:52 +0300 |
---|---|---|
committer | Duncan Mak <duncanm@microsoft.com> | 2016-10-08 03:31:05 +0300 |
commit | b72b210ee0ad829d81b47e58928f7b11417b1cf4 (patch) | |
tree | 6cb7d0e25af9284d92515a70d0af1fc8a5c5a204 /mdoc | |
parent | f95711659072d5a632b341e888c7c0e06c13ee3a (diff) |
[mdoc] `multiassembly` option for duplicated types
The new `multiassembly` option lets you run `mdoc update` on assemblies that
contain the same types. This can come into play when you have a set of assemblies
that run on different platforms, with a slightly differing API surface area on
each platform (for example: tvOS, watchOS, iOS); in this case you can maintain
all of the documentation in a single set of XML documents.
With this option enabled, an `AssemblyInfo` node will be added for every assembly
that a type is found in, in addition to every member. While this may seem verbose,
it's really the only way to capture the information about what assemblies a given
type or member can be found in.
Diffstat (limited to 'mdoc')
-rw-r--r-- | mdoc/Makefile | 31 | ||||
-rw-r--r-- | mdoc/Mono.Documentation/monodocer.cs | 105 | ||||
-rw-r--r-- | mdoc/Test/DocTest-DropNS-classic.cs | 4 | ||||
-rw-r--r-- | mdoc/Test/DocTest-DropNS-unified.cs | 5 | ||||
-rw-r--r-- | mdoc/Test/en.expected-dropns-multi/MyFramework.MyNamespace/MyClass.xml | 118 | ||||
-rw-r--r-- | mdoc/Test/en.expected-dropns-multi/MyFramework.MyNamespace/OnlyInMulti.xml | 40 | ||||
-rw-r--r-- | mdoc/Test/en.expected-dropns-multi/index.xml | 53 | ||||
-rw-r--r-- | mdoc/Test/en.expected-dropns-multi/ns-MyFramework.MyNamespace.xml | 6 |
8 files changed, 336 insertions, 26 deletions
diff --git a/mdoc/Makefile b/mdoc/Makefile index 0991269d..26e60874 100644 --- a/mdoc/Makefile +++ b/mdoc/Makefile @@ -60,6 +60,9 @@ EXTRA_DISTFILES = \ $(MDOC_RESOURCES) \ $(MDOC_TEST_FILES) +MULTI-CLASSIC = Test/DocTest-DropNS-classic.dll Test/DocTest-DropNS-classic-multitest.dll +MULTI-UNIFIED = Test/DocTest-DropNS-unified.dll Test/DocTest-DropNS-unified-multitest.dll + $(PROGRAM) : $(MDOC_RESOURCES) $(MONODOC_RESOURCES) $(PROGRAM_DEPS) PROGRAM_COMPILE = $(CSCOMPILE) -platform:x86 @@ -108,6 +111,14 @@ Test/DocTest-DropNS-classic.dll: Test/DocTest-DropNS-unified.dll: $(CSCOMPILE) $(TEST_CSCFLAGS) -debug -unsafe -target:library -out:$@ Test/DocTest-DropNS-unified.cs +Test/DocTest-DropNS-unified-multitest.dll: + rm -f $@ + $(CSCOMPILE) $(TEST_CSCFLAGS) -debug -unsafe -target:library -out:$@ Test/DocTest-DropNS-unified.cs /define:MULTITEST + +Test/DocTest-DropNS-classic-multitest.dll: + rm -f $@ + $(CSCOMPILE) $(TEST_CSCFLAGS) -debug -unsafe -target:library -out:$@ Test/DocTest-DropNS-classic.cs /define:MULTITEST + Test/DocTest-DropNS-unified-deletetest.dll: rm -f Test/DocTest-DropNS-unified-deletetest.dll $(CSCOMPILE) $(TEST_CSCFLAGS) -debug -unsafe -target:library -out:$@ Test/DocTest-DropNS-unified.cs /define:DELETETEST @@ -167,6 +178,23 @@ check-monodocer-dropns-classic: $(PROGRAM) $(MAKE) update-monodocer-dropns-unified diff --exclude=.svn -rup Test/en.expected-dropns-classic-v1 Test/en.actual +check-monodocer-dropns-multi: $(PROGRAM) + -rm -Rf Test/en.actual + $(MAKE) Test/DocTest-DropNS-classic.dll + $(MAKE) Test/DocTest-DropNS-unified.dll + $(MAKE) Test/DocTest-DropNS-classic-multitest.dll + $(MAKE) Test/DocTest-DropNS-unified-multitest.dll + + # mdoc update for both classic and unified + $(MONO) $(PROGRAM) update --exceptions=all -o Test/en.actual $(MULTI-CLASSIC) -multiassembly + $(MONO) $(PROGRAM) update --exceptions=all -o Test/en.actual $(MULTI-UNIFIED) --dropns Test/DocTest-DropNS-unified.dll=MyFramework --dropns Test/DocTest-DropNS-unified-multitest.dll=MyFramework -multiassembly + + # now run it again to verify idempotency + $(MONO) $(PROGRAM) update --exceptions=all -o Test/en.actual $(MULTI-CLASSIC) -multiassembly + $(MONO) $(PROGRAM) update --exceptions=all -o Test/en.actual $(MULTI-UNIFIED) --dropns Test/DocTest-DropNS-unified.dll=MyFramework --dropns Test/DocTest-DropNS-unified-multitest.dll=MyFramework -multiassembly + + diff --exclude=.svn -rup Test/en.expected-dropns-multi Test/en.actual + check-monodocer-dropns-delete: $(PROGRAM) -rm -Rf Test/en.actual rm -Rf Test/DocTest-DropNS-classic-deletetest.dll @@ -370,7 +398,8 @@ check-doc-tools: check-monodocer-since \ check-monodocer-dropns-classic-withsecondary \ check-monodocer-dropns-delete \ check-monodocer-internal-interface \ - check-monodocer-enumerations + check-monodocer-enumerations \ + check-monodocer-dropns-multi check-doc-tools-update: check-monodocer-since-update \ check-monodocer-importecmadoc-update \ diff --git a/mdoc/Mono.Documentation/monodocer.cs b/mdoc/Mono.Documentation/monodocer.cs index 7d54a289..a1f91f3b 100644 --- a/mdoc/Mono.Documentation/monodocer.cs +++ b/mdoc/Mono.Documentation/monodocer.cs @@ -133,6 +133,7 @@ class MDocUpdater : MDocCommand List<AssemblyDefinition> assemblies; readonly DefaultAssemblyResolver assemblyResolver = new DefaultAssemblyResolver(); + bool multiassembly; bool delete; bool show_exceptions; bool no_assembly_versions, ignore_missing_types; @@ -278,6 +279,9 @@ class MDocUpdater : MDocCommand { "preserve", "Do not delete members that don't exist in the assembly, but rather mark them as preserved.", v => PreserveTag = "true" }, + { "multiassembly", + "Allow types to be in multiple assemblies.", + v => multiassembly = true }, }; var assemblies = Parse (p, args, "update", "[OPTIONS]+ ASSEMBLIES", @@ -767,7 +771,13 @@ class MDocUpdater : MDocCommand private void AddIndexAssembly (AssemblyDefinition assembly, XmlElement parent) { - XmlElement index_assembly = parent.OwnerDocument.CreateElement("Assembly"); + XmlElement index_assembly = null; + if (multiassembly) + index_assembly = (XmlElement)parent.SelectSingleNode ("Assembly[@Name='"+ assembly.Name.Name +"']"); + + if (index_assembly == null) + index_assembly = parent.OwnerDocument.CreateElement ("Assembly"); + index_assembly.SetAttribute ("Name", assembly.Name.Name); index_assembly.SetAttribute ("Version", assembly.Name.Version.ToString()); @@ -842,7 +852,8 @@ class MDocUpdater : MDocCommand XmlElement index_types = WriteElement(index.DocumentElement, "Types"); XmlElement index_assemblies = WriteElement(index.DocumentElement, "Assemblies"); - index_assemblies.RemoveAll (); + if (!multiassembly) + index_assemblies.RemoveAll (); HashSet<string> goodfiles = new HashSet<string> (StringComparer.OrdinalIgnoreCase); @@ -1535,28 +1546,15 @@ class MDocUpdater : MDocCommand type); } - string assemblyInfoNodeFilter = MDocUpdater.HasDroppedNamespace (type) ? "[@apistyle='unified']" : "[not(@apistyle) or @apistyle='classic']"; - - AddXmlNode( - root.SelectNodes ("AssemblyInfo" + assemblyInfoNodeFilter).Cast<XmlElement> ().ToArray (), - x => x.SelectSingleNode("AssemblyName").InnerText == type.Module.Assembly.Name.Name, - x => WriteElementText(x, "AssemblyName", type.Module.Assembly.Name.Name), - () => { - XmlElement ass = WriteElement(root, "AssemblyInfo", forceNewElement:true); - - if (MDocUpdater.HasDroppedNamespace (type)) ass.SetAttribute ("apistyle", "unified"); + AddAssemblyNameToNode (root, type); - - - return ass; - }, - type); - - foreach(var ass in root.SelectNodes ("AssemblyInfo" + assemblyInfoNodeFilter).Cast<XmlElement> ()) + string assemblyInfoNodeFilter = MDocUpdater.HasDroppedNamespace (type) ? "[@apistyle='unified']" : "[not(@apistyle) or @apistyle='classic']"; + Func<XmlElement, bool> assemblyFilter = x => x.SelectSingleNode ("AssemblyName").InnerText == type.Module.Assembly.Name.Name; + foreach(var ass in root.SelectNodes ("AssemblyInfo" + assemblyInfoNodeFilter).Cast<XmlElement> ().Where (assemblyFilter)) { WriteElementText(ass, "AssemblyName", type.Module.Assembly.Name.Name); if (!no_assembly_versions) { - UpdateAssemblyVersions (root, type, true); + UpdateAssemblyVersions (ass, type, true); } else { var versions = ass.SelectNodes ("AssemblyVersion").Cast<XmlNode> ().ToList (); @@ -1654,6 +1652,29 @@ class MDocUpdater : MDocCommand NormalizeWhitespace(root); } + /// <summary>Adds an AssemblyInfo with AssemblyName node to an XmlElement.</summary> + /// <returns>The assembly that was either added, or was already present</returns> + static XmlElement AddAssemblyNameToNode (XmlElement root, TypeDefinition type) + { + return AddAssemblyNameToNode (root, type.Module); + } + + /// <summary>Adds an AssemblyInfo with AssemblyName node to an XmlElement.</summary> + /// <returns>The assembly that was either added, or was already present</returns> + static XmlElement AddAssemblyNameToNode (XmlElement root, ModuleDefinition module) + { + Func<XmlElement, bool> assemblyFilter = x => x.SelectSingleNode ("AssemblyName").InnerText == module.Assembly.Name.Name; + return AddAssemblyXmlNode ( + root.SelectNodes ("AssemblyInfo").Cast<XmlElement> ().ToArray (), + assemblyFilter, x => WriteElementText (x, "AssemblyName", module.Assembly.Name.Name), + () => { + XmlElement ass = WriteElement (root, "AssemblyInfo", forceNewElement: true); + if (MDocUpdater.HasDroppedNamespace (module)) + ass.SetAttribute ("apistyle", "unified"); + return ass; + }, module); + } + static readonly string[] TypeNodeOrder = { "TypeSignature", "MemberOfLibrary", @@ -1709,7 +1730,13 @@ class MDocUpdater : MDocCommand WriteElementText(me, "MemberType", GetMemberType(mi)); if (!no_assembly_versions) { - UpdateAssemblyVersions (me, mi, true); + if (!multiassembly) + UpdateAssemblyVersions (me, mi, true); + else { + var node = AddAssemblyNameToNode (me, mi.Module); + + UpdateAssemblyVersionForAssemblyInfo (node, me, new[] { GetAssemblyVersion (mi.Module.Assembly) }, add: true); + } } else { ClearElement (me, "AssemblyInfo"); @@ -1743,6 +1770,25 @@ class MDocUpdater : MDocCommand AddXmlNode (relevant, valueMatches, setValue, makeNewNode, type.Module); } + static XmlElement AddAssemblyXmlNode (XmlElement[] relevant, Func<XmlElement, bool> valueMatches, Action<XmlElement> setValue, Func<XmlElement> makeNewNode, ModuleDefinition module) + { + bool isUnified = MDocUpdater.HasDroppedNamespace (module); + XmlElement thisAssemblyNode = relevant.FirstOrDefault (valueMatches); + if (thisAssemblyNode == null) { + thisAssemblyNode = makeNewNode (); + setValue (thisAssemblyNode); + } + + if (isUnified) { + thisAssemblyNode.AddApiStyle (ApiStyle.Unified); + + foreach (var otherNodes in relevant.Where (n => n != thisAssemblyNode && n.DoesNotHaveApiStyle (ApiStyle.Unified))) { + otherNodes.AddApiStyle (ApiStyle.Classic); + } + } + return thisAssemblyNode; + } + /// <summary>Adds an xml node, reusing the node if it's available</summary> /// <param name="relevant">The existing set of nodes</param> /// <param name="valueMatches">Checks to see if the node's value matches what you're trying to write.</param> @@ -2307,7 +2353,13 @@ class MDocUpdater : MDocCommand TypeDefinition type = member as TypeDefinition; if (type == null) type = member.DeclaringType as TypeDefinition; - return UpdateAssemblyVersions(root, type.Module.Assembly, new string[]{ GetAssemblyVersion (type.Module.Assembly) }, add); + + var versions = new string[] { GetAssemblyVersion (type.Module.Assembly) }; + + if (root.LocalName == "AssemblyInfo") + return UpdateAssemblyVersionForAssemblyInfo (root, root.ParentNode as XmlElement, versions, add: true); + else + return UpdateAssemblyVersions (root, type.Module.Assembly, versions, add); } private static string GetAssemblyVersion (AssemblyDefinition assembly) @@ -2346,9 +2398,12 @@ class MDocUpdater : MDocCommand thatNode.SetAttribute ("apistyle", "classic"); } - List<XmlNode> matches = e.SelectNodes ("AssemblyVersion").Cast<XmlNode>() - .Where(v => Array.IndexOf (assemblyVersions, v.InnerText) >= 0) - .ToList (); + return UpdateAssemblyVersionForAssemblyInfo (e, root, assemblyVersions, add); + } + + static bool UpdateAssemblyVersionForAssemblyInfo (XmlElement e, XmlElement root, string[] assemblyVersions, bool add) + { + List<XmlNode> matches = e.SelectNodes ("AssemblyVersion").Cast<XmlNode> ().Where (v => Array.IndexOf (assemblyVersions, v.InnerText) >= 0).ToList (); // matches.Count > 0 && add: ignore -- already present if (matches.Count > 0 && !add) { foreach (XmlNode c in matches) diff --git a/mdoc/Test/DocTest-DropNS-classic.cs b/mdoc/Test/DocTest-DropNS-classic.cs index 8346834b..13ae56d2 100644 --- a/mdoc/Test/DocTest-DropNS-classic.cs +++ b/mdoc/Test/DocTest-DropNS-classic.cs @@ -25,4 +25,8 @@ namespace MyFramework.MyNamespace { public string Name {get;set;} } #endif + #if MULTITEST + public class OnlyInMulti { + } + #endif } diff --git a/mdoc/Test/DocTest-DropNS-unified.cs b/mdoc/Test/DocTest-DropNS-unified.cs index 9b0c364a..0b74be24 100644 --- a/mdoc/Test/DocTest-DropNS-unified.cs +++ b/mdoc/Test/DocTest-DropNS-unified.cs @@ -30,4 +30,9 @@ namespace MyNamespace { public string Name {get;set;} } #endif + + #if MULTITEST + public class OnlyInMulti { + } + #endif } diff --git a/mdoc/Test/en.expected-dropns-multi/MyFramework.MyNamespace/MyClass.xml b/mdoc/Test/en.expected-dropns-multi/MyFramework.MyNamespace/MyClass.xml new file mode 100644 index 00000000..ee429765 --- /dev/null +++ b/mdoc/Test/en.expected-dropns-multi/MyFramework.MyNamespace/MyClass.xml @@ -0,0 +1,118 @@ +<Type Name="MyClass" FullName="MyFramework.MyNamespace.MyClass"> + <TypeSignature Language="C#" Value="public class MyClass" /> + <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit MyClass extends System.Object" /> + <AssemblyInfo apistyle="classic"> + <AssemblyName>DocTest-DropNS-classic</AssemblyName> + <AssemblyVersion>0.0.0.0</AssemblyVersion> + </AssemblyInfo> + <AssemblyInfo apistyle="classic"> + <AssemblyName>DocTest-DropNS-classic-multitest</AssemblyName> + <AssemblyVersion>0.0.0.0</AssemblyVersion> + </AssemblyInfo> + <AssemblyInfo apistyle="unified"> + <AssemblyName>DocTest-DropNS-unified</AssemblyName> + <AssemblyVersion>0.0.0.0</AssemblyVersion> + </AssemblyInfo> + <AssemblyInfo apistyle="unified"> + <AssemblyName>DocTest-DropNS-unified-multitest</AssemblyName> + <AssemblyVersion>0.0.0.0</AssemblyVersion> + </AssemblyInfo> + <Base> + <BaseTypeName>System.Object</BaseTypeName> + </Base> + <Interfaces /> + <Docs> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + <Members> + <Member MemberName=".ctor"> + <MemberSignature Language="C#" Value="public MyClass ();" /> + <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" /> + <MemberType>Constructor</MemberType> + <AssemblyInfo apistyle="classic"> + <AssemblyName>DocTest-DropNS-classic</AssemblyName> + <AssemblyVersion>0.0.0.0</AssemblyVersion> + </AssemblyInfo> + <AssemblyInfo apistyle="classic"> + <AssemblyName>DocTest-DropNS-classic-multitest</AssemblyName> + <AssemblyVersion>0.0.0.0</AssemblyVersion> + </AssemblyInfo> + <AssemblyInfo apistyle="unified"> + <AssemblyName>DocTest-DropNS-unified</AssemblyName> + <AssemblyVersion>0.0.0.0</AssemblyVersion> + </AssemblyInfo> + <AssemblyInfo apistyle="unified"> + <AssemblyName>DocTest-DropNS-unified-multitest</AssemblyName> + <AssemblyVersion>0.0.0.0</AssemblyVersion> + </AssemblyInfo> + <Parameters /> + <Docs> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="Hello"> + <MemberSignature Language="C#" Value="public float Hello (int value);" /> + <MemberSignature Language="ILAsm" Value=".method public hidebysig instance float32 Hello(int32 value) cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo apistyle="classic"> + <AssemblyName>DocTest-DropNS-classic</AssemblyName> + <AssemblyVersion>0.0.0.0</AssemblyVersion> + </AssemblyInfo> + <AssemblyInfo apistyle="classic"> + <AssemblyName>DocTest-DropNS-classic-multitest</AssemblyName> + <AssemblyVersion>0.0.0.0</AssemblyVersion> + </AssemblyInfo> + <AssemblyInfo apistyle="unified"> + <AssemblyName>DocTest-DropNS-unified</AssemblyName> + <AssemblyVersion>0.0.0.0</AssemblyVersion> + </AssemblyInfo> + <AssemblyInfo apistyle="unified"> + <AssemblyName>DocTest-DropNS-unified-multitest</AssemblyName> + <AssemblyVersion>0.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.Single</ReturnType> + </ReturnValue> + <Parameters> + <Parameter Name="value" Type="System.Int32" /> + </Parameters> + <Docs> + <param name="value">To be added.</param> + <summary>To be added.</summary> + <returns>To be added.</returns> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="MyProperty"> + <MemberSignature Language="C#" Value="public string MyProperty { get; set; }" /> + <MemberSignature Language="ILAsm" Value=".property instance string MyProperty" /> + <MemberType>Property</MemberType> + <AssemblyInfo apistyle="classic"> + <AssemblyName>DocTest-DropNS-classic</AssemblyName> + <AssemblyVersion>0.0.0.0</AssemblyVersion> + </AssemblyInfo> + <AssemblyInfo apistyle="classic"> + <AssemblyName>DocTest-DropNS-classic-multitest</AssemblyName> + <AssemblyVersion>0.0.0.0</AssemblyVersion> + </AssemblyInfo> + <AssemblyInfo apistyle="unified"> + <AssemblyName>DocTest-DropNS-unified</AssemblyName> + <AssemblyVersion>0.0.0.0</AssemblyVersion> + </AssemblyInfo> + <AssemblyInfo apistyle="unified"> + <AssemblyName>DocTest-DropNS-unified-multitest</AssemblyName> + <AssemblyVersion>0.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.String</ReturnType> + </ReturnValue> + <Docs> + <summary>To be added.</summary> + <value>To be added.</value> + <remarks>To be added.</remarks> + </Docs> + </Member> + </Members> +</Type> diff --git a/mdoc/Test/en.expected-dropns-multi/MyFramework.MyNamespace/OnlyInMulti.xml b/mdoc/Test/en.expected-dropns-multi/MyFramework.MyNamespace/OnlyInMulti.xml new file mode 100644 index 00000000..dbcf1304 --- /dev/null +++ b/mdoc/Test/en.expected-dropns-multi/MyFramework.MyNamespace/OnlyInMulti.xml @@ -0,0 +1,40 @@ +<Type Name="OnlyInMulti" FullName="MyFramework.MyNamespace.OnlyInMulti"> + <TypeSignature Language="C#" Value="public class OnlyInMulti" /> + <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit OnlyInMulti extends System.Object" /> + <AssemblyInfo apistyle="classic"> + <AssemblyName>DocTest-DropNS-classic-multitest</AssemblyName> + <AssemblyVersion>0.0.0.0</AssemblyVersion> + </AssemblyInfo> + <AssemblyInfo apistyle="unified"> + <AssemblyName>DocTest-DropNS-unified-multitest</AssemblyName> + <AssemblyVersion>0.0.0.0</AssemblyVersion> + </AssemblyInfo> + <Base> + <BaseTypeName>System.Object</BaseTypeName> + </Base> + <Interfaces /> + <Docs> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + <Members> + <Member MemberName=".ctor"> + <MemberSignature Language="C#" Value="public OnlyInMulti ();" /> + <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" /> + <MemberType>Constructor</MemberType> + <AssemblyInfo apistyle="classic"> + <AssemblyName>DocTest-DropNS-classic-multitest</AssemblyName> + <AssemblyVersion>0.0.0.0</AssemblyVersion> + </AssemblyInfo> + <AssemblyInfo apistyle="unified"> + <AssemblyName>DocTest-DropNS-unified-multitest</AssemblyName> + <AssemblyVersion>0.0.0.0</AssemblyVersion> + </AssemblyInfo> + <Parameters /> + <Docs> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + </Member> + </Members> +</Type> diff --git a/mdoc/Test/en.expected-dropns-multi/index.xml b/mdoc/Test/en.expected-dropns-multi/index.xml new file mode 100644 index 00000000..3baf401c --- /dev/null +++ b/mdoc/Test/en.expected-dropns-multi/index.xml @@ -0,0 +1,53 @@ +<Overview> + <Assemblies> + <Assembly Name="DocTest-DropNS-classic" Version="0.0.0.0"> + <Attributes> + <Attribute> + <AttributeName>System.Diagnostics.Debuggable(System.Diagnostics.DebuggableAttribute+DebuggingModes.IgnoreSymbolStoreSequencePoints)</AttributeName> + </Attribute> + <Attribute> + <AttributeName>System.Runtime.CompilerServices.RuntimeCompatibility(WrapNonExceptionThrows=true)</AttributeName> + </Attribute> + </Attributes> + </Assembly> + <Assembly Name="DocTest-DropNS-classic-multitest" Version="0.0.0.0"> + <Attributes> + <Attribute> + <AttributeName>System.Diagnostics.Debuggable(System.Diagnostics.DebuggableAttribute+DebuggingModes.IgnoreSymbolStoreSequencePoints)</AttributeName> + </Attribute> + <Attribute> + <AttributeName>System.Runtime.CompilerServices.RuntimeCompatibility(WrapNonExceptionThrows=true)</AttributeName> + </Attribute> + </Attributes> + </Assembly> + <Assembly Name="DocTest-DropNS-unified" Version="0.0.0.0"> + <Attributes> + <Attribute> + <AttributeName>System.Diagnostics.Debuggable(System.Diagnostics.DebuggableAttribute+DebuggingModes.IgnoreSymbolStoreSequencePoints)</AttributeName> + </Attribute> + <Attribute> + <AttributeName>System.Runtime.CompilerServices.RuntimeCompatibility(WrapNonExceptionThrows=true)</AttributeName> + </Attribute> + </Attributes> + </Assembly> + <Assembly Name="DocTest-DropNS-unified-multitest" Version="0.0.0.0"> + <Attributes> + <Attribute> + <AttributeName>System.Diagnostics.Debuggable(System.Diagnostics.DebuggableAttribute+DebuggingModes.IgnoreSymbolStoreSequencePoints)</AttributeName> + </Attribute> + <Attribute> + <AttributeName>System.Runtime.CompilerServices.RuntimeCompatibility(WrapNonExceptionThrows=true)</AttributeName> + </Attribute> + </Attributes> + </Assembly> + </Assemblies> + <Remarks>To be added.</Remarks> + <Copyright>To be added.</Copyright> + <Types> + <Namespace Name="MyFramework.MyNamespace"> + <Type Name="MyClass" Kind="Class" /> + <Type Name="OnlyInMulti" Kind="Class" /> + </Namespace> + </Types> + <Title>Untitled</Title> +</Overview> diff --git a/mdoc/Test/en.expected-dropns-multi/ns-MyFramework.MyNamespace.xml b/mdoc/Test/en.expected-dropns-multi/ns-MyFramework.MyNamespace.xml new file mode 100644 index 00000000..74df75af --- /dev/null +++ b/mdoc/Test/en.expected-dropns-multi/ns-MyFramework.MyNamespace.xml @@ -0,0 +1,6 @@ +<Namespace Name="MyFramework.MyNamespace"> + <Docs> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> +</Namespace> |