[dotnet-svcutil] Replace forked System.Web.Services source with System.Web.Services.Description package#5902
[dotnet-svcutil] Replace forked System.Web.Services source with System.Web.Services.Description package#5902imcarolwang wants to merge 3 commits intodotnet:mainfrom
Conversation
There was a problem hiding this comment.
Pull request overview
Note
Copilot was unable to run its full agentic suite in this review.
This PR continues the dotnet-svcutil migration away from the FrameworkFork Microsoft.Xml dependency by deleting large portions of the forked XML implementation and switching remaining usage sites to standard System.Xml / System.Xml.Schema types.
Changes:
- Removed many fork-only
Microsoft.XmlCore/BinaryXml/Cache implementations that are no longer needed for the importer/exporter subset. - Rewired helpers/usages to reference
System.Xml/System.Xml.Serializationtypes in codegen and fixup visitors. - Simplified namespace-rewriting logic by dropping
Microsoft.Xmlremapping inNamespaceFixer.
Reviewed changes
Copilot reviewed 67 out of 737 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| src/dotnet-svcutil/lib/src/FrameworkFork/Microsoft.Xml/Xml/Core/XmlParserContext.cs | Removed forked XmlParserContext implementation. |
| src/dotnet-svcutil/lib/src/FrameworkFork/Microsoft.Xml/Xml/Core/XmlEventCache.cs | Removed forked event-caching writer implementation. |
| src/dotnet-svcutil/lib/src/FrameworkFork/Microsoft.Xml/Xml/Core/XmlConfiguration.cs | Removed forked XML configuration surface. |
| src/dotnet-svcutil/lib/src/FrameworkFork/Microsoft.Xml/Xml/Core/XmlCharCheckingWriter.cs | Removed forked char-checking writer wrapper. |
| src/dotnet-svcutil/lib/src/FrameworkFork/Microsoft.Xml/Xml/Core/XmlCharCheckingReaderAsync.cs | Removed async portion of forked char-checking reader. |
| src/dotnet-svcutil/lib/src/FrameworkFork/Microsoft.Xml/Xml/Core/XmlAutoDetectWriter.cs | Removed forked auto-detect writer and its event cache usage. |
| src/dotnet-svcutil/lib/src/FrameworkFork/Microsoft.Xml/Xml/Core/WhiteSpaceHandling.cs | Removed forked whitespace handling enum. |
| src/dotnet-svcutil/lib/src/FrameworkFork/Microsoft.Xml/Xml/Core/ValidationType.cs | Removed forked validation type enum. |
| src/dotnet-svcutil/lib/src/FrameworkFork/Microsoft.Xml/Xml/Core/ValidatingReaderNodeData.cs | Removed forked validating-reader node storage. |
| src/dotnet-svcutil/lib/src/FrameworkFork/Microsoft.Xml/Xml/Core/TextUtf8RawTextWriter.cs | Removed forked UTF8 “text-only” raw writer. |
| src/dotnet-svcutil/lib/src/FrameworkFork/Microsoft.Xml/Xml/Core/TextRawTextWriterGenerator.cxxbak | Removed generator backup file. |
| src/dotnet-svcutil/lib/src/FrameworkFork/Microsoft.Xml/Xml/Core/TextEncodedRawTextWriter.cs | Removed forked encoded “text-only” raw writer. |
| src/dotnet-svcutil/lib/src/FrameworkFork/Microsoft.Xml/Xml/Core/SecureStringHasher.cs | Removed fork-only hashing helper. |
| src/dotnet-svcutil/lib/src/FrameworkFork/Microsoft.Xml/Xml/Core/ReadState.cs | Removed forked ReadState enum. |
| src/dotnet-svcutil/lib/src/FrameworkFork/Microsoft.Xml/Xml/Core/ReadOnlyTernaryTree.cs | Removed forked ternary-tree lookup implementation. |
| src/dotnet-svcutil/lib/src/FrameworkFork/Microsoft.Xml/Xml/Core/ReadContentAsBinaryHelperAsync.cs | Removed forked async binary-content helper. |
| src/dotnet-svcutil/lib/src/FrameworkFork/Microsoft.Xml/Xml/Core/ReadContentAsBinaryHelper.cs | Removed forked sync binary-content helper. |
| src/dotnet-svcutil/lib/src/FrameworkFork/Microsoft.Xml/Xml/Core/QueryOutputWriterV1.cs | Removed forked V1 query output writer wrapper. |
| src/dotnet-svcutil/lib/src/FrameworkFork/Microsoft.Xml/Xml/Core/QueryOutputWriter.cs | Removed forked query output raw-writer wrapper. |
| src/dotnet-svcutil/lib/src/FrameworkFork/Microsoft.Xml/Xml/Core/NewLineHandling.cs | Removed forked newline handling enum. |
| src/dotnet-svcutil/lib/src/FrameworkFork/Microsoft.Xml/Xml/Core/NamespaceHandling.cs | Removed forked namespace-handling flags enum. |
| src/dotnet-svcutil/lib/src/FrameworkFork/Microsoft.Xml/Xml/Core/IncrementalReadDecoders.cs | Removed forked incremental decoder types. |
| src/dotnet-svcutil/lib/src/FrameworkFork/Microsoft.Xml/Xml/Core/IValidationEventHandling.cs | Removed forked validation-event abstraction. |
| src/dotnet-svcutil/lib/src/FrameworkFork/Microsoft.Xml/Xml/Core/IRemovableWriter.cs | Removed forked removable-writer plumbing. |
| src/dotnet-svcutil/lib/src/FrameworkFork/Microsoft.Xml/Xml/Core/IDtdParserAdapter.cs | Removed forked DTD parser adapter interfaces. |
| src/dotnet-svcutil/lib/src/FrameworkFork/Microsoft.Xml/Xml/Core/IDtdParser.cs | Removed forked DTD parser interface. |
| src/dotnet-svcutil/lib/src/FrameworkFork/Microsoft.Xml/Xml/Core/IDtdInfo.cs | Removed forked DTD compiled-info interfaces. |
| src/dotnet-svcutil/lib/src/FrameworkFork/Microsoft.Xml/Xml/Core/HtmlTernaryTree.cs | Removed generated HTML ternary-tree data. |
| src/dotnet-svcutil/lib/src/FrameworkFork/Microsoft.Xml/Xml/Core/EntityHandling.cs | Removed forked entity-handling enum. |
| src/dotnet-svcutil/lib/src/FrameworkFork/Microsoft.Xml/Xml/Core/DtdProcessing.cs | Removed forked DTD processing enum. |
| src/dotnet-svcutil/lib/src/FrameworkFork/Microsoft.Xml/Xml/Core/ConformanceLevel.cs | Removed forked conformance level enum. |
| src/dotnet-svcutil/lib/src/FrameworkFork/Microsoft.Xml/Xml/Core/CharEntityEncoderFallback.cs | Removed forked encoder fallback implementation. |
| src/dotnet-svcutil/lib/src/FrameworkFork/Microsoft.Xml/Xml/Cache/XPathNodeViewPropertyDescriptor.cs | Removed forked databinding-only cache code. |
| src/dotnet-svcutil/lib/src/FrameworkFork/Microsoft.Xml/Xml/Cache/XPathNodeView.cs | Removed forked databinding-only cache code. |
| src/dotnet-svcutil/lib/src/FrameworkFork/Microsoft.Xml/Xml/Cache/XPathNodeInfoAtom.cs | Removed forked XPath cache atom table implementation. |
| src/dotnet-svcutil/lib/src/FrameworkFork/Microsoft.Xml/Xml/Cache/XPathNode.cs | Removed forked XPath node/page structures. |
| src/dotnet-svcutil/lib/src/FrameworkFork/Microsoft.Xml/Xml/Cache/XPathDocumentIterator.cs | Removed forked XPathDocument iterators. |
| src/dotnet-svcutil/lib/src/FrameworkFork/Microsoft.Xml/Xml/Cache/ShapeGenerator.cs | Removed forked databinding shape generation. |
| src/dotnet-svcutil/lib/src/FrameworkFork/Microsoft.Xml/Xml/Cache/Shape.cs | Removed forked databinding shape implementation. |
| src/dotnet-svcutil/lib/src/FrameworkFork/Microsoft.Xml/Xml/ByteStack.cs | Moved namespace from Microsoft.Xml to System.Xml. |
| src/dotnet-svcutil/lib/src/FrameworkFork/Microsoft.Xml/Xml/BufferBuilder.cs | Moved namespace from Microsoft.Xml to System.Xml. |
| src/dotnet-svcutil/lib/src/FrameworkFork/Microsoft.Xml/Xml/Bits.cs | Moved namespace from Microsoft.Xml to System.Xml. |
| src/dotnet-svcutil/lib/src/FrameworkFork/Microsoft.Xml/Xml/BitStack.cs | Moved namespace from Microsoft.Xml to System.Xml. |
| src/dotnet-svcutil/lib/src/FrameworkFork/Microsoft.Xml/Xml/BinaryXml/XmlBinaryReaderAsync.cs | Removed forked async surface for binary reader. |
| src/dotnet-svcutil/lib/src/FrameworkFork/Microsoft.Xml/Xml/BinaryXml/BinXmlToken.cs | Removed forked BinaryXml token enum. |
| src/dotnet-svcutil/lib/src/FrameworkFork/Microsoft.Xml/Xml/BinHexEncoder.cs | Removed forked BinHex encoder helper. |
| src/dotnet-svcutil/lib/src/FrameworkFork/Microsoft.Xml/Xml/BinHexDecoder.cs | Removed forked BinHex decoder implementation. |
| src/dotnet-svcutil/lib/src/FrameworkFork/Microsoft.Xml/Xml/Base64Encoder.cs | Removed forked Base64 encoder implementation. |
| src/dotnet-svcutil/lib/src/FrameworkFork/Microsoft.Xml/Xml/Base64Decoder.cs | Removed forked Base64 decoder implementation. |
| src/dotnet-svcutil/lib/src/FrameworkFork/Microsoft.Xml/Xml/AsyncHelper.cs | Moved namespace from Microsoft.Xml to System.Xml. |
| src/dotnet-svcutil/lib/src/FrameworkFork/Microsoft.Xml/External/Extensions.cs | Moved namespace from Microsoft.Xml to System.Xml. |
| src/dotnet-svcutil/lib/src/CodeSerializer.cs | Switched imports from Microsoft.Xml to System.Xml. |
| src/dotnet-svcutil/lib/src/CodeDomFixup/MethodCreationHelper.cs | Switched imports from Microsoft.Xml to System.Xml. |
| src/dotnet-svcutil/lib/src/CodeDomFixup/CodeDomVisitors/XmlDomAttributeFixer.cs | Updated filtered type to System.Xml.XmlAttribute. |
| src/dotnet-svcutil/lib/src/CodeDomFixup/CodeDomVisitors/SpecialIXmlSerializableRemapper.cs | Updated IXmlSerializable matching to System.Xml.Serialization. |
| src/dotnet-svcutil/lib/src/CodeDomFixup/CodeDomVisitors/NamespaceFixer.cs | Removed Microsoft.Xml remapping logic; kept CodeDom remapping. |
| src/dotnet-svcutil/lib/src/CodeDomFixup/ArrayOfXElementTypeHelper.cs | Updated generated types/attributes to System.Xml.* equivalents. |
| internal class NamespaceFixup : CodeDomVisitor | ||
| { | ||
| private static string s_microsoftXml = "Microsoft.Xml"; | ||
| private static string s_systemXml = "System.Xml"; | ||
| private static string s_microsoftCodeDom = "Microsoft.CodeDom"; | ||
| private static string s_systemCodeDom = "System.CodeDom"; |
There was a problem hiding this comment.
After removing the Microsoft.Xml rewrite logic, NamespaceFixup now appears to only fix CodeDom namespaces. Consider renaming the visitor (and/or adding a clarifying comment) so its intent stays accurate (e.g., CodeDomNamespaceFixup), which will reduce confusion when debugging or extending codegen fixups.
…r logic to reduce FrameworkFork dependencies and migrate to System.Xml types.
For issue #5898:
Work has begun on removing the System.Web.Services source fork and transitioning to the official System.Web.Services.Description NuGet package.
A direct replacement was blocked by a type system mismatch: the current implementation depends on a custom Microsoft.Xml fork, while the NuGet package relies on standard System.Xml types. In addition, required importer/exporter logic (e.g., SoapSchemaImporter) exists only in the fork and is not available in modern .NET.
To unblock the migration, a partial extraction and modernization of the Microsoft.Xml layer was completed:
During refactoring, regressions affecting RPC/Encoded WSDL scenarios were identified and resolved, including:
The Microsoft.Xml layer now functions as a lightweight compatibility bridge using standard .NET types, clearing the primary blocker for the eventual removal of the System.Web.Services and the broader framework source fork.
Update notes
This PR now also includes two follow-up commits added after rebase:
This extends the original migration work beyond the Microsoft.Xml importer/exporter bridge and moves the PR toward its broader goal: replacing forked System.Web.Services source with the package-based implementation.
This completes related post-rebase integration work, including wiring and compatibility updates needed to keep DataSetSchemaImporterExtension aligned with the new System.Xml-based importer flow.
With these follow-up changes, the PR now represents both: