Backport XML documentation for CustomReflectionContext - #124365

Merged
gewarren merged 19 commits into
mainfrom
copilot/backport-customreflectioncontext-docs
Apr 15, 2026
Merged

Backport XML documentation for CustomReflectionContext#124365
gewarren merged 19 commits into
mainfrom
copilot/backport-customreflectioncontext-docs

Conversation

CopilotAI commented Feb 13, 2026

Copy link
Copy Markdown
Contributor

Backports XML documentation from dotnet-api-docs to the runtime repository per #124227.

Description

Adds comprehensive XML documentation to the CustomReflectionContext class and all its public/protected members to provide IntelliSense support for developers using this reflection customization API.

Changes:

  • Added XML documentation to CustomReflectionContext class in src assembly with summary and simplified type-level remarks
  • Added summary, param/return documentation, and short member-level remarks to all public/protected members (constructors, MapAssembly, MapType, GetCustomAttributes overloads, AddProperties, CreateProperty overloads)
  • Type-level remarks include only a link to supplemental documentation: https://github.com/dotnet/docs/raw/main/docs/fundamentals/runtime-libraries/system-reflection-context-customreflectioncontext.md
  • Member-level remarks provide brief contextual information (e.g., usage guidance for AddProperties and CreateProperty methods)
  • Ref assembly contains no XML documentation per established guidelines

Customer Impact

Developers using System.Reflection.Context will have IntelliSense documentation with summaries, parameter descriptions, and brief contextual remarks for all members, plus a link to comprehensive documentation showing how to customize reflection behavior through attribute manipulation and virtual properties.

Regression

No. Documentation-only change.

Testing

  • Built successfully for all target frameworks (netstandard2.1, net10.0)
  • XML documentation compiles without errors for non-netstandard2.0 targets
  • Code review completed

Risk

Minimal. Documentation-only change with no runtime impact.

Note: The netstandard2.0 target uses GeneratePlatformNotSupportedAssemblyMessage and generates a stub from the ref assembly. Since the ref assembly has no XML docs (per guidelines), the generated stub lacks documentation. A solution for enabling compiler-generated docs for such assemblies is being determined by maintainers.


💬 We'd love your input! Share your thoughts on Copilot coding agent in our 2 minute survey.

CopilotAIand others added 2 commits February 13, 2026 01:09
Co-authored-by: gewarren <24882762+gewarren@users.noreply.github.com>
Co-authored-by: gewarren <24882762+gewarren@users.noreply.github.com>
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to this area: @dotnet/area-system-reflection
See info in area-owners.md if you want to be subscribed.

CopilotAI changed the title [WIP] Backport documentation for CustomReflectionContextBackport XML documentation for CustomReflectionContextFeb 13, 2026
CopilotAI requested a review from gewarrenFebruary 13, 2026 01:15

@gewarrengewarren left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@copilot Please respond to feedback.

… src remarks
Co-authored-by: gewarren <24882762+gewarren@users.noreply.github.com>

CopilotAI commented Feb 13, 2026

Copy link
Copy Markdown
ContributorAuthor

@copilot Please respond to feedback.

Addressed all feedback in commit 865415d:

  • Removed all XML documentation from the ref assembly
  • Simplified the src file remarks to only include the supplemental docs link
  • Removed detailed remarks from member methods
  • Restored UseCompilerGeneratedDocXmlFile=false to prevent CS1591 errors

Co-authored-by: gewarren <24882762+gewarren@users.noreply.github.com>
CopilotAI requested a review from gewarrenFebruary 13, 2026 01:36
@gewarren
gewarren marked this pull request as ready for review February 13, 2026 04:09
CopilotAI review requested due to automatic review settings February 13, 2026 04:09

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR backports XML documentation from dotnet-api-docs to the runtime repository for the CustomReflectionContext class, following the established pattern from PR #124227. The documentation provides IntelliSense support for developers using this reflection API.

Changes:

  • Added comprehensive XML documentation to CustomReflectionContext class including type-level summary, simplified remarks with a link to supplemental documentation, and complete member-level documentation
  • All public and protected members now have summaries, parameter descriptions, return value documentation, and brief contextual remarks where appropriate
  • Followed the established convention of not adding documentation to ref assemblies

@gewarrengewarren left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@copilot Please update the .csproj file to use the compiler generated docs.

Co-authored-by: gewarren <24882762+gewarren@users.noreply.github.com>

CopilotAI commented Feb 13, 2026

Copy link
Copy Markdown
ContributorAuthor

@copilot Please update the .csproj file to use the compiler generated docs.

Updated the .csproj to use compiler-generated docs in commit ca89848. Also added minimal XML documentation to the ref assembly to prevent CS1591 errors in the generated netstandard2.0 platform-not-supported stub.

@github-actions

This comment has been minimized.

CopilotAI review requested due to automatic review settings April 9, 2026 15:29

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 2 out of 2 changed files in this pull request and generated 2 comments.

@github-actions

This comment has been minimized.

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
CopilotAI review requested due to automatic review settings April 9, 2026 16:30

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 2 out of 2 changed files in this pull request and generated no new comments.

@github-actions

This comment has been minimized.

@gewarren

Copy link
Copy Markdown
Contributor

@ericstj There's a build failure that I don't see in other PRs. Could it be due to the way docs are added for the platform not supported stubs?

@azure-pipelines
azure-pipelines
/ runtime (Build windows-x86 Release Libraries_NET481)

eng\targetingpacks.targets(107,5): error : (NETCORE_ENGINEERING_TELEMETRY=Build) The shared framework must be built before the local targeting pack can be consumed.

@github-actions

Copy link
Copy Markdown
Contributor

🤖 Copilot Code Review — PR #124365

Note

This review was AI-generated by Copilot using multi-model analysis (Claude Opus 4.5, GPT 5.3 Codex, Goldeneye, Claude Opus 4.6).

Holistic Assessment

Motivation: Justified — CustomReflectionContext had zero XML documentation, and this library had UseCompilerGeneratedDocXmlFile=false suppressing doc generation. Adding comprehensive docs is a clear improvement for developer experience.

Approach: Correct — XML doc comments are added directly to the source file for all public/protected members, following the standard dotnet/runtime documentation approach. The UseCompilerGeneratedDocXmlFile=false suppression is appropriately removed now that all public API surface is documented.

Summary: ✅ LGTM. This is a well-crafted documentation-only PR. All 9 public/protected members on CustomReflectionContext are documented with accurate summaries, parameter descriptions, and return value descriptions that follow the conventions in docs.prompt.md. No behavioral changes, no new public API surface (ref assembly is unchanged). Two minor suggestions below for follow-up.


Detailed Findings

✅ Documentation Coverage — Complete

All public/protected members (class summary, 2 constructors, MapAssembly, MapType, 2 GetCustomAttributes overloads, AddProperties, 2 CreateProperty overloads) have accurate XML doc comments. Verified against the ref assembly — no undocumented public members remain, so removing UseCompilerGeneratedDocXmlFile=false from the csproj will not introduce CS1591 warnings.

✅ Convention Compliance — Correct

  • Constructor summaries follow the "Initializes a new instance of the (Class) class" convention.
  • <param> descriptions are noun phrases beginning with articles ("The", "A").
  • <returns> descriptions are noun phrases beginning with articles.
  • <see langword="get"/> and <see langword="set"/> correctly used for accessor keywords.
  • <see cref="CreateProperty(Type, string, Func{object, object?}?, Action{object, object?}?)"/> correctly uses curly braces for generic type parameters in cref syntax.
  • <remarks> on AddProperties and CreateProperty provide useful guidance about the relationship between these methods.

✅ No New Public API Surface

The ref assembly (ref/System.Reflection.Context.cs) is unchanged. No API approval verification is needed.

💡 Missing <exception> Tags — Follow-up suggestion

(Flagged by all four review models)

Three members call ArgumentNullException.ThrowIfNull directly but lack <exception cref="ArgumentNullException"> documentation:

  • CustomReflectionContext(ReflectionContext source) — throws when source is null
  • MapAssembly(Assembly assembly) — throws when assembly is null
  • MapType(TypeInfo type) — throws when type is null

Additionally, both CreateProperty overloads propagate ArgumentException from the VirtualPropertyInfo constructor (when both getter and setter are null, or when propertyType is from a different reflection context).

Per docs.prompt.md: "Document all exceptions thrown directly by the member." This is a legitimate documentation gap, but not a blocker — this PR goes from zero docs to comprehensive docs, and <exception> tags can be added as a follow-up.

💡 Pre-existing Comment — Out-of-scope observation

Line 90 has // The default implementation of GetProperties: just return an empty list. but the method is named AddProperties. This pre-dates the PR and is out of scope, but could be cleaned up while touching the file.

Generated by Code Review for issue #124365 ·

@gewarren

Copy link
Copy Markdown
Contributor

/ba-g Failures unrelated

@gewarren
gewarren merged commit 62fda12 into mainApr 15, 2026
93 of 96 checks passed
@gewarren
gewarren deleted the copilot/backport-customreflectioncontext-docs branch April 15, 2026 02:42
ericstj added a commit that referenced this pull request Apr 22, 2026
When `UseCompilerGeneratedDocXmlFile` is `true` (the default) and a
library is a PNSE assembly, `eng/intellisense.targets` adds a
self-referencing `ProjectReference` with `SetTargetFramework=net11.0` to
pull enriched XML docs from the non-PNSE sibling build. In the NET481
build leg the local targeting pack (`FrameworkList.xml`) is never
produced, so the inner `net11.0` build fails with:
> The shared framework must be built before the local targeting pack can
be consumed.
This became visible after #124365 removed
`<UseCompilerGeneratedDocXmlFile>false</UseCompilerGeneratedDocXmlFile>`
from `System.Reflection.Context`, activating the PNSE doc-source path
for the first time in that project.
### Fix
Disable `AddProjectReferenceToPNSEDocSource` when doing a vertical build
that is not for .NETCore.
This also fixes a build break in VB tests that was introduced while the
NETFx build was broken.
### Verification
Tested locally by building vertical builds for NETFx, Net11, and
packages.
Fixes#127007
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Eric StJohn <ericstj@microsoft.com>
Co-authored-by: Jan Kotas <jkotas@microsoft.com>
@github-actionsgithub-actionsBot locked and limited conversation to collaborators May 15, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@stephentoub@gewarren
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Backport XML documentation for CustomReflectionContext - #124365

Merged
gewarren merged 19 commits into
mainfrom
copilot/backport-customreflectioncontext-docs
Apr 15, 2026
Merged

Backport XML documentation for CustomReflectionContext#124365
gewarren merged 19 commits into
mainfrom
copilot/backport-customreflectioncontext-docs

Conversation

CopilotAI commented Feb 13, 2026

Copy link
Copy Markdown
Contributor

Backports XML documentation from dotnet-api-docs to the runtime repository per #124227.

Description

Adds comprehensive XML documentation to the CustomReflectionContext class and all its public/protected members to provide IntelliSense support for developers using this reflection customization API.

Changes:

  • Added XML documentation to CustomReflectionContext class in src assembly with summary and simplified type-level remarks
  • Added summary, param/return documentation, and short member-level remarks to all public/protected members (constructors, MapAssembly, MapType, GetCustomAttributes overloads, AddProperties, CreateProperty overloads)
  • Type-level remarks include only a link to supplemental documentation: https://github.com/dotnet/docs/raw/main/docs/fundamentals/runtime-libraries/system-reflection-context-customreflectioncontext.md
  • Member-level remarks provide brief contextual information (e.g., usage guidance for AddProperties and CreateProperty methods)
  • Ref assembly contains no XML documentation per established guidelines

Customer Impact

Developers using System.Reflection.Context will have IntelliSense documentation with summaries, parameter descriptions, and brief contextual remarks for all members, plus a link to comprehensive documentation showing how to customize reflection behavior through attribute manipulation and virtual properties.

Regression

No. Documentation-only change.

Testing

  • Built successfully for all target frameworks (netstandard2.1, net10.0)
  • XML documentation compiles without errors for non-netstandard2.0 targets
  • Code review completed

Risk

Minimal. Documentation-only change with no runtime impact.

Note: The netstandard2.0 target uses GeneratePlatformNotSupportedAssemblyMessage and generates a stub from the ref assembly. Since the ref assembly has no XML docs (per guidelines), the generated stub lacks documentation. A solution for enabling compiler-generated docs for such assemblies is being determined by maintainers.


💬 We'd love your input! Share your thoughts on Copilot coding agent in our 2 minute survey.

CopilotAIand others added 2 commits February 13, 2026 01:09
Co-authored-by: gewarren <24882762+gewarren@users.noreply.github.com>
Co-authored-by: gewarren <24882762+gewarren@users.noreply.github.com>
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to this area: @dotnet/area-system-reflection
See info in area-owners.md if you want to be subscribed.

CopilotAI changed the title [WIP] Backport documentation for CustomReflectionContextBackport XML documentation for CustomReflectionContextFeb 13, 2026
CopilotAI requested a review from gewarrenFebruary 13, 2026 01:15

@gewarrengewarren left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@copilot Please respond to feedback.

… src remarks
Co-authored-by: gewarren <24882762+gewarren@users.noreply.github.com>

CopilotAI commented Feb 13, 2026

Copy link
Copy Markdown
ContributorAuthor

@copilot Please respond to feedback.

Addressed all feedback in commit 865415d:

  • Removed all XML documentation from the ref assembly
  • Simplified the src file remarks to only include the supplemental docs link
  • Removed detailed remarks from member methods
  • Restored UseCompilerGeneratedDocXmlFile=false to prevent CS1591 errors

Co-authored-by: gewarren <24882762+gewarren@users.noreply.github.com>
CopilotAI requested a review from gewarrenFebruary 13, 2026 01:36
@gewarren
gewarren marked this pull request as ready for review February 13, 2026 04:09
CopilotAI review requested due to automatic review settings February 13, 2026 04:09

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR backports XML documentation from dotnet-api-docs to the runtime repository for the CustomReflectionContext class, following the established pattern from PR #124227. The documentation provides IntelliSense support for developers using this reflection API.

Changes:

  • Added comprehensive XML documentation to CustomReflectionContext class including type-level summary, simplified remarks with a link to supplemental documentation, and complete member-level documentation
  • All public and protected members now have summaries, parameter descriptions, return value documentation, and brief contextual remarks where appropriate
  • Followed the established convention of not adding documentation to ref assemblies

@gewarrengewarren left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@copilot Please update the .csproj file to use the compiler generated docs.

Co-authored-by: gewarren <24882762+gewarren@users.noreply.github.com>

CopilotAI commented Feb 13, 2026

Copy link
Copy Markdown
ContributorAuthor

@copilot Please update the .csproj file to use the compiler generated docs.

Updated the .csproj to use compiler-generated docs in commit ca89848. Also added minimal XML documentation to the ref assembly to prevent CS1591 errors in the generated netstandard2.0 platform-not-supported stub.

@github-actions

This comment has been minimized.

CopilotAI review requested due to automatic review settings April 9, 2026 15:29

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 2 out of 2 changed files in this pull request and generated 2 comments.

@github-actions

This comment has been minimized.

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
CopilotAI review requested due to automatic review settings April 9, 2026 16:30

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 2 out of 2 changed files in this pull request and generated no new comments.

@github-actions

This comment has been minimized.

@gewarren

Copy link
Copy Markdown
Contributor

@ericstj There's a build failure that I don't see in other PRs. Could it be due to the way docs are added for the platform not supported stubs?

@azure-pipelines
azure-pipelines
/ runtime (Build windows-x86 Release Libraries_NET481)

eng\targetingpacks.targets(107,5): error : (NETCORE_ENGINEERING_TELEMETRY=Build) The shared framework must be built before the local targeting pack can be consumed.

@github-actions

Copy link
Copy Markdown
Contributor

🤖 Copilot Code Review — PR #124365

Note

This review was AI-generated by Copilot using multi-model analysis (Claude Opus 4.5, GPT 5.3 Codex, Goldeneye, Claude Opus 4.6).

Holistic Assessment

Motivation: Justified — CustomReflectionContext had zero XML documentation, and this library had UseCompilerGeneratedDocXmlFile=false suppressing doc generation. Adding comprehensive docs is a clear improvement for developer experience.

Approach: Correct — XML doc comments are added directly to the source file for all public/protected members, following the standard dotnet/runtime documentation approach. The UseCompilerGeneratedDocXmlFile=false suppression is appropriately removed now that all public API surface is documented.

Summary: ✅ LGTM. This is a well-crafted documentation-only PR. All 9 public/protected members on CustomReflectionContext are documented with accurate summaries, parameter descriptions, and return value descriptions that follow the conventions in docs.prompt.md. No behavioral changes, no new public API surface (ref assembly is unchanged). Two minor suggestions below for follow-up.


Detailed Findings

✅ Documentation Coverage — Complete

All public/protected members (class summary, 2 constructors, MapAssembly, MapType, 2 GetCustomAttributes overloads, AddProperties, 2 CreateProperty overloads) have accurate XML doc comments. Verified against the ref assembly — no undocumented public members remain, so removing UseCompilerGeneratedDocXmlFile=false from the csproj will not introduce CS1591 warnings.

✅ Convention Compliance — Correct

  • Constructor summaries follow the "Initializes a new instance of the (Class) class" convention.
  • <param> descriptions are noun phrases beginning with articles ("The", "A").
  • <returns> descriptions are noun phrases beginning with articles.
  • <see langword="get"/> and <see langword="set"/> correctly used for accessor keywords.
  • <see cref="CreateProperty(Type, string, Func{object, object?}?, Action{object, object?}?)"/> correctly uses curly braces for generic type parameters in cref syntax.
  • <remarks> on AddProperties and CreateProperty provide useful guidance about the relationship between these methods.

✅ No New Public API Surface

The ref assembly (ref/System.Reflection.Context.cs) is unchanged. No API approval verification is needed.

💡 Missing <exception> Tags — Follow-up suggestion

(Flagged by all four review models)

Three members call ArgumentNullException.ThrowIfNull directly but lack <exception cref="ArgumentNullException"> documentation:

  • CustomReflectionContext(ReflectionContext source) — throws when source is null
  • MapAssembly(Assembly assembly) — throws when assembly is null
  • MapType(TypeInfo type) — throws when type is null

Additionally, both CreateProperty overloads propagate ArgumentException from the VirtualPropertyInfo constructor (when both getter and setter are null, or when propertyType is from a different reflection context).

Per docs.prompt.md: "Document all exceptions thrown directly by the member." This is a legitimate documentation gap, but not a blocker — this PR goes from zero docs to comprehensive docs, and <exception> tags can be added as a follow-up.

💡 Pre-existing Comment — Out-of-scope observation

Line 90 has // The default implementation of GetProperties: just return an empty list. but the method is named AddProperties. This pre-dates the PR and is out of scope, but could be cleaned up while touching the file.

Generated by Code Review for issue #124365 ·

@gewarren

Copy link
Copy Markdown
Contributor

/ba-g Failures unrelated

@gewarren
gewarren merged commit 62fda12 into mainApr 15, 2026
93 of 96 checks passed
@gewarren
gewarren deleted the copilot/backport-customreflectioncontext-docs branch April 15, 2026 02:42
ericstj added a commit that referenced this pull request Apr 22, 2026
When `UseCompilerGeneratedDocXmlFile` is `true` (the default) and a
library is a PNSE assembly, `eng/intellisense.targets` adds a
self-referencing `ProjectReference` with `SetTargetFramework=net11.0` to
pull enriched XML docs from the non-PNSE sibling build. In the NET481
build leg the local targeting pack (`FrameworkList.xml`) is never
produced, so the inner `net11.0` build fails with:
> The shared framework must be built before the local targeting pack can
be consumed.
This became visible after #124365 removed
`<UseCompilerGeneratedDocXmlFile>false</UseCompilerGeneratedDocXmlFile>`
from `System.Reflection.Context`, activating the PNSE doc-source path
for the first time in that project.
### Fix
Disable `AddProjectReferenceToPNSEDocSource` when doing a vertical build
that is not for .NETCore.
This also fixes a build break in VB tests that was introduced while the
NETFx build was broken.
### Verification
Tested locally by building vertical builds for NETFx, Net11, and
packages.
Fixes#127007
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Eric StJohn <ericstj@microsoft.com>
Co-authored-by: Jan Kotas <jkotas@microsoft.com>
@github-actionsgithub-actionsBot locked and limited conversation to collaborators May 15, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@stephentoub@gewarren
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Backport XML documentation for CustomReflectionContext - #124365

Merged
gewarren merged 19 commits into
mainfrom
copilot/backport-customreflectioncontext-docs
Apr 15, 2026
Merged

Backport XML documentation for CustomReflectionContext#124365
gewarren merged 19 commits into
mainfrom
copilot/backport-customreflectioncontext-docs

Conversation

CopilotAI commented Feb 13, 2026

Copy link
Copy Markdown
Contributor

Backports XML documentation from dotnet-api-docs to the runtime repository per #124227.

Description

Adds comprehensive XML documentation to the CustomReflectionContext class and all its public/protected members to provide IntelliSense support for developers using this reflection customization API.

Changes:

  • Added XML documentation to CustomReflectionContext class in src assembly with summary and simplified type-level remarks
  • Added summary, param/return documentation, and short member-level remarks to all public/protected members (constructors, MapAssembly, MapType, GetCustomAttributes overloads, AddProperties, CreateProperty overloads)
  • Type-level remarks include only a link to supplemental documentation: https://github.com/dotnet/docs/raw/main/docs/fundamentals/runtime-libraries/system-reflection-context-customreflectioncontext.md
  • Member-level remarks provide brief contextual information (e.g., usage guidance for AddProperties and CreateProperty methods)
  • Ref assembly contains no XML documentation per established guidelines

Customer Impact

Developers using System.Reflection.Context will have IntelliSense documentation with summaries, parameter descriptions, and brief contextual remarks for all members, plus a link to comprehensive documentation showing how to customize reflection behavior through attribute manipulation and virtual properties.

Regression

No. Documentation-only change.

Testing

  • Built successfully for all target frameworks (netstandard2.1, net10.0)
  • XML documentation compiles without errors for non-netstandard2.0 targets
  • Code review completed

Risk

Minimal. Documentation-only change with no runtime impact.

Note: The netstandard2.0 target uses GeneratePlatformNotSupportedAssemblyMessage and generates a stub from the ref assembly. Since the ref assembly has no XML docs (per guidelines), the generated stub lacks documentation. A solution for enabling compiler-generated docs for such assemblies is being determined by maintainers.


💬 We'd love your input! Share your thoughts on Copilot coding agent in our 2 minute survey.

CopilotAIand others added 2 commits February 13, 2026 01:09
Co-authored-by: gewarren <24882762+gewarren@users.noreply.github.com>
Co-authored-by: gewarren <24882762+gewarren@users.noreply.github.com>
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to this area: @dotnet/area-system-reflection
See info in area-owners.md if you want to be subscribed.

CopilotAI changed the title [WIP] Backport documentation for CustomReflectionContextBackport XML documentation for CustomReflectionContextFeb 13, 2026
CopilotAI requested a review from gewarrenFebruary 13, 2026 01:15

@gewarrengewarren left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@copilot Please respond to feedback.

… src remarks
Co-authored-by: gewarren <24882762+gewarren@users.noreply.github.com>

CopilotAI commented Feb 13, 2026

Copy link
Copy Markdown
ContributorAuthor

@copilot Please respond to feedback.

Addressed all feedback in commit 865415d:

  • Removed all XML documentation from the ref assembly
  • Simplified the src file remarks to only include the supplemental docs link
  • Removed detailed remarks from member methods
  • Restored UseCompilerGeneratedDocXmlFile=false to prevent CS1591 errors

Co-authored-by: gewarren <24882762+gewarren@users.noreply.github.com>
CopilotAI requested a review from gewarrenFebruary 13, 2026 01:36
@gewarren
gewarren marked this pull request as ready for review February 13, 2026 04:09
CopilotAI review requested due to automatic review settings February 13, 2026 04:09

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR backports XML documentation from dotnet-api-docs to the runtime repository for the CustomReflectionContext class, following the established pattern from PR #124227. The documentation provides IntelliSense support for developers using this reflection API.

Changes:

  • Added comprehensive XML documentation to CustomReflectionContext class including type-level summary, simplified remarks with a link to supplemental documentation, and complete member-level documentation
  • All public and protected members now have summaries, parameter descriptions, return value documentation, and brief contextual remarks where appropriate
  • Followed the established convention of not adding documentation to ref assemblies

@gewarrengewarren left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@copilot Please update the .csproj file to use the compiler generated docs.

Co-authored-by: gewarren <24882762+gewarren@users.noreply.github.com>

CopilotAI commented Feb 13, 2026

Copy link
Copy Markdown
ContributorAuthor

@copilot Please update the .csproj file to use the compiler generated docs.

Updated the .csproj to use compiler-generated docs in commit ca89848. Also added minimal XML documentation to the ref assembly to prevent CS1591 errors in the generated netstandard2.0 platform-not-supported stub.

@github-actions

This comment has been minimized.

CopilotAI review requested due to automatic review settings April 9, 2026 15:29

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 2 out of 2 changed files in this pull request and generated 2 comments.

@github-actions

This comment has been minimized.

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
CopilotAI review requested due to automatic review settings April 9, 2026 16:30

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 2 out of 2 changed files in this pull request and generated no new comments.

@github-actions

This comment has been minimized.

@gewarren

Copy link
Copy Markdown
Contributor

@ericstj There's a build failure that I don't see in other PRs. Could it be due to the way docs are added for the platform not supported stubs?

@azure-pipelines
azure-pipelines
/ runtime (Build windows-x86 Release Libraries_NET481)

eng\targetingpacks.targets(107,5): error : (NETCORE_ENGINEERING_TELEMETRY=Build) The shared framework must be built before the local targeting pack can be consumed.

@github-actions

Copy link
Copy Markdown
Contributor

🤖 Copilot Code Review — PR #124365

Note

This review was AI-generated by Copilot using multi-model analysis (Claude Opus 4.5, GPT 5.3 Codex, Goldeneye, Claude Opus 4.6).

Holistic Assessment

Motivation: Justified — CustomReflectionContext had zero XML documentation, and this library had UseCompilerGeneratedDocXmlFile=false suppressing doc generation. Adding comprehensive docs is a clear improvement for developer experience.

Approach: Correct — XML doc comments are added directly to the source file for all public/protected members, following the standard dotnet/runtime documentation approach. The UseCompilerGeneratedDocXmlFile=false suppression is appropriately removed now that all public API surface is documented.

Summary: ✅ LGTM. This is a well-crafted documentation-only PR. All 9 public/protected members on CustomReflectionContext are documented with accurate summaries, parameter descriptions, and return value descriptions that follow the conventions in docs.prompt.md. No behavioral changes, no new public API surface (ref assembly is unchanged). Two minor suggestions below for follow-up.


Detailed Findings

✅ Documentation Coverage — Complete

All public/protected members (class summary, 2 constructors, MapAssembly, MapType, 2 GetCustomAttributes overloads, AddProperties, 2 CreateProperty overloads) have accurate XML doc comments. Verified against the ref assembly — no undocumented public members remain, so removing UseCompilerGeneratedDocXmlFile=false from the csproj will not introduce CS1591 warnings.

✅ Convention Compliance — Correct

  • Constructor summaries follow the "Initializes a new instance of the (Class) class" convention.
  • <param> descriptions are noun phrases beginning with articles ("The", "A").
  • <returns> descriptions are noun phrases beginning with articles.
  • <see langword="get"/> and <see langword="set"/> correctly used for accessor keywords.
  • <see cref="CreateProperty(Type, string, Func{object, object?}?, Action{object, object?}?)"/> correctly uses curly braces for generic type parameters in cref syntax.
  • <remarks> on AddProperties and CreateProperty provide useful guidance about the relationship between these methods.

✅ No New Public API Surface

The ref assembly (ref/System.Reflection.Context.cs) is unchanged. No API approval verification is needed.

💡 Missing <exception> Tags — Follow-up suggestion

(Flagged by all four review models)

Three members call ArgumentNullException.ThrowIfNull directly but lack <exception cref="ArgumentNullException"> documentation:

  • CustomReflectionContext(ReflectionContext source) — throws when source is null
  • MapAssembly(Assembly assembly) — throws when assembly is null
  • MapType(TypeInfo type) — throws when type is null

Additionally, both CreateProperty overloads propagate ArgumentException from the VirtualPropertyInfo constructor (when both getter and setter are null, or when propertyType is from a different reflection context).

Per docs.prompt.md: "Document all exceptions thrown directly by the member." This is a legitimate documentation gap, but not a blocker — this PR goes from zero docs to comprehensive docs, and <exception> tags can be added as a follow-up.

💡 Pre-existing Comment — Out-of-scope observation

Line 90 has // The default implementation of GetProperties: just return an empty list. but the method is named AddProperties. This pre-dates the PR and is out of scope, but could be cleaned up while touching the file.

Generated by Code Review for issue #124365 ·

@gewarren

Copy link
Copy Markdown
Contributor

/ba-g Failures unrelated

@gewarren
gewarren merged commit 62fda12 into mainApr 15, 2026
93 of 96 checks passed
@gewarren
gewarren deleted the copilot/backport-customreflectioncontext-docs branch April 15, 2026 02:42
ericstj added a commit that referenced this pull request Apr 22, 2026
When `UseCompilerGeneratedDocXmlFile` is `true` (the default) and a
library is a PNSE assembly, `eng/intellisense.targets` adds a
self-referencing `ProjectReference` with `SetTargetFramework=net11.0` to
pull enriched XML docs from the non-PNSE sibling build. In the NET481
build leg the local targeting pack (`FrameworkList.xml`) is never
produced, so the inner `net11.0` build fails with:
> The shared framework must be built before the local targeting pack can
be consumed.
This became visible after #124365 removed
`<UseCompilerGeneratedDocXmlFile>false</UseCompilerGeneratedDocXmlFile>`
from `System.Reflection.Context`, activating the PNSE doc-source path
for the first time in that project.
### Fix
Disable `AddProjectReferenceToPNSEDocSource` when doing a vertical build
that is not for .NETCore.
This also fixes a build break in VB tests that was introduced while the
NETFx build was broken.
### Verification
Tested locally by building vertical builds for NETFx, Net11, and
packages.
Fixes#127007
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Eric StJohn <ericstj@microsoft.com>
Co-authored-by: Jan Kotas <jkotas@microsoft.com>
@github-actionsgithub-actionsBot locked and limited conversation to collaborators May 15, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@stephentoub@gewarren
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Backport XML documentation for CustomReflectionContext - #124365

Merged
gewarren merged 19 commits into
mainfrom
copilot/backport-customreflectioncontext-docs
Apr 15, 2026
Merged

Backport XML documentation for CustomReflectionContext#124365
gewarren merged 19 commits into
mainfrom
copilot/backport-customreflectioncontext-docs

Conversation

CopilotAI commented Feb 13, 2026

Copy link
Copy Markdown
Contributor

Backports XML documentation from dotnet-api-docs to the runtime repository per #124227.

Description

Adds comprehensive XML documentation to the CustomReflectionContext class and all its public/protected members to provide IntelliSense support for developers using this reflection customization API.

Changes:

  • Added XML documentation to CustomReflectionContext class in src assembly with summary and simplified type-level remarks
  • Added summary, param/return documentation, and short member-level remarks to all public/protected members (constructors, MapAssembly, MapType, GetCustomAttributes overloads, AddProperties, CreateProperty overloads)
  • Type-level remarks include only a link to supplemental documentation: https://github.com/dotnet/docs/raw/main/docs/fundamentals/runtime-libraries/system-reflection-context-customreflectioncontext.md
  • Member-level remarks provide brief contextual information (e.g., usage guidance for AddProperties and CreateProperty methods)
  • Ref assembly contains no XML documentation per established guidelines

Customer Impact

Developers using System.Reflection.Context will have IntelliSense documentation with summaries, parameter descriptions, and brief contextual remarks for all members, plus a link to comprehensive documentation showing how to customize reflection behavior through attribute manipulation and virtual properties.

Regression

No. Documentation-only change.

Testing

  • Built successfully for all target frameworks (netstandard2.1, net10.0)
  • XML documentation compiles without errors for non-netstandard2.0 targets
  • Code review completed

Risk

Minimal. Documentation-only change with no runtime impact.

Note: The netstandard2.0 target uses GeneratePlatformNotSupportedAssemblyMessage and generates a stub from the ref assembly. Since the ref assembly has no XML docs (per guidelines), the generated stub lacks documentation. A solution for enabling compiler-generated docs for such assemblies is being determined by maintainers.


💬 We'd love your input! Share your thoughts on Copilot coding agent in our 2 minute survey.

CopilotAIand others added 2 commits February 13, 2026 01:09
Co-authored-by: gewarren <24882762+gewarren@users.noreply.github.com>
Co-authored-by: gewarren <24882762+gewarren@users.noreply.github.com>
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to this area: @dotnet/area-system-reflection
See info in area-owners.md if you want to be subscribed.

CopilotAI changed the title [WIP] Backport documentation for CustomReflectionContextBackport XML documentation for CustomReflectionContextFeb 13, 2026
CopilotAI requested a review from gewarrenFebruary 13, 2026 01:15

@gewarrengewarren left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@copilot Please respond to feedback.

… src remarks
Co-authored-by: gewarren <24882762+gewarren@users.noreply.github.com>

CopilotAI commented Feb 13, 2026

Copy link
Copy Markdown
ContributorAuthor

@copilot Please respond to feedback.

Addressed all feedback in commit 865415d:

  • Removed all XML documentation from the ref assembly
  • Simplified the src file remarks to only include the supplemental docs link
  • Removed detailed remarks from member methods
  • Restored UseCompilerGeneratedDocXmlFile=false to prevent CS1591 errors

Co-authored-by: gewarren <24882762+gewarren@users.noreply.github.com>
CopilotAI requested a review from gewarrenFebruary 13, 2026 01:36
@gewarren
gewarren marked this pull request as ready for review February 13, 2026 04:09
CopilotAI review requested due to automatic review settings February 13, 2026 04:09

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR backports XML documentation from dotnet-api-docs to the runtime repository for the CustomReflectionContext class, following the established pattern from PR #124227. The documentation provides IntelliSense support for developers using this reflection API.

Changes:

  • Added comprehensive XML documentation to CustomReflectionContext class including type-level summary, simplified remarks with a link to supplemental documentation, and complete member-level documentation
  • All public and protected members now have summaries, parameter descriptions, return value documentation, and brief contextual remarks where appropriate
  • Followed the established convention of not adding documentation to ref assemblies

@gewarrengewarren left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@copilot Please update the .csproj file to use the compiler generated docs.

Co-authored-by: gewarren <24882762+gewarren@users.noreply.github.com>

CopilotAI commented Feb 13, 2026

Copy link
Copy Markdown
ContributorAuthor

@copilot Please update the .csproj file to use the compiler generated docs.

Updated the .csproj to use compiler-generated docs in commit ca89848. Also added minimal XML documentation to the ref assembly to prevent CS1591 errors in the generated netstandard2.0 platform-not-supported stub.

@github-actions

This comment has been minimized.

CopilotAI review requested due to automatic review settings April 9, 2026 15:29

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 2 out of 2 changed files in this pull request and generated 2 comments.

@github-actions

This comment has been minimized.

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
CopilotAI review requested due to automatic review settings April 9, 2026 16:30

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 2 out of 2 changed files in this pull request and generated no new comments.

@github-actions

This comment has been minimized.

@gewarren

Copy link
Copy Markdown
Contributor

@ericstj There's a build failure that I don't see in other PRs. Could it be due to the way docs are added for the platform not supported stubs?

@azure-pipelines
azure-pipelines
/ runtime (Build windows-x86 Release Libraries_NET481)

eng\targetingpacks.targets(107,5): error : (NETCORE_ENGINEERING_TELEMETRY=Build) The shared framework must be built before the local targeting pack can be consumed.

@github-actions

Copy link
Copy Markdown
Contributor

🤖 Copilot Code Review — PR #124365

Note

This review was AI-generated by Copilot using multi-model analysis (Claude Opus 4.5, GPT 5.3 Codex, Goldeneye, Claude Opus 4.6).

Holistic Assessment

Motivation: Justified — CustomReflectionContext had zero XML documentation, and this library had UseCompilerGeneratedDocXmlFile=false suppressing doc generation. Adding comprehensive docs is a clear improvement for developer experience.

Approach: Correct — XML doc comments are added directly to the source file for all public/protected members, following the standard dotnet/runtime documentation approach. The UseCompilerGeneratedDocXmlFile=false suppression is appropriately removed now that all public API surface is documented.

Summary: ✅ LGTM. This is a well-crafted documentation-only PR. All 9 public/protected members on CustomReflectionContext are documented with accurate summaries, parameter descriptions, and return value descriptions that follow the conventions in docs.prompt.md. No behavioral changes, no new public API surface (ref assembly is unchanged). Two minor suggestions below for follow-up.


Detailed Findings

✅ Documentation Coverage — Complete

All public/protected members (class summary, 2 constructors, MapAssembly, MapType, 2 GetCustomAttributes overloads, AddProperties, 2 CreateProperty overloads) have accurate XML doc comments. Verified against the ref assembly — no undocumented public members remain, so removing UseCompilerGeneratedDocXmlFile=false from the csproj will not introduce CS1591 warnings.

✅ Convention Compliance — Correct

  • Constructor summaries follow the "Initializes a new instance of the (Class) class" convention.
  • <param> descriptions are noun phrases beginning with articles ("The", "A").
  • <returns> descriptions are noun phrases beginning with articles.
  • <see langword="get"/> and <see langword="set"/> correctly used for accessor keywords.
  • <see cref="CreateProperty(Type, string, Func{object, object?}?, Action{object, object?}?)"/> correctly uses curly braces for generic type parameters in cref syntax.
  • <remarks> on AddProperties and CreateProperty provide useful guidance about the relationship between these methods.

✅ No New Public API Surface

The ref assembly (ref/System.Reflection.Context.cs) is unchanged. No API approval verification is needed.

💡 Missing <exception> Tags — Follow-up suggestion

(Flagged by all four review models)

Three members call ArgumentNullException.ThrowIfNull directly but lack <exception cref="ArgumentNullException"> documentation:

  • CustomReflectionContext(ReflectionContext source) — throws when source is null
  • MapAssembly(Assembly assembly) — throws when assembly is null
  • MapType(TypeInfo type) — throws when type is null

Additionally, both CreateProperty overloads propagate ArgumentException from the VirtualPropertyInfo constructor (when both getter and setter are null, or when propertyType is from a different reflection context).

Per docs.prompt.md: "Document all exceptions thrown directly by the member." This is a legitimate documentation gap, but not a blocker — this PR goes from zero docs to comprehensive docs, and <exception> tags can be added as a follow-up.

💡 Pre-existing Comment — Out-of-scope observation

Line 90 has // The default implementation of GetProperties: just return an empty list. but the method is named AddProperties. This pre-dates the PR and is out of scope, but could be cleaned up while touching the file.

Generated by Code Review for issue #124365 ·

@gewarren

Copy link
Copy Markdown
Contributor

/ba-g Failures unrelated

@gewarren
gewarren merged commit 62fda12 into mainApr 15, 2026
93 of 96 checks passed
@gewarren
gewarren deleted the copilot/backport-customreflectioncontext-docs branch April 15, 2026 02:42
ericstj added a commit that referenced this pull request Apr 22, 2026
When `UseCompilerGeneratedDocXmlFile` is `true` (the default) and a
library is a PNSE assembly, `eng/intellisense.targets` adds a
self-referencing `ProjectReference` with `SetTargetFramework=net11.0` to
pull enriched XML docs from the non-PNSE sibling build. In the NET481
build leg the local targeting pack (`FrameworkList.xml`) is never
produced, so the inner `net11.0` build fails with:
> The shared framework must be built before the local targeting pack can
be consumed.
This became visible after #124365 removed
`<UseCompilerGeneratedDocXmlFile>false</UseCompilerGeneratedDocXmlFile>`
from `System.Reflection.Context`, activating the PNSE doc-source path
for the first time in that project.
### Fix
Disable `AddProjectReferenceToPNSEDocSource` when doing a vertical build
that is not for .NETCore.
This also fixes a build break in VB tests that was introduced while the
NETFx build was broken.
### Verification
Tested locally by building vertical builds for NETFx, Net11, and
packages.
Fixes#127007
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Eric StJohn <ericstj@microsoft.com>
Co-authored-by: Jan Kotas <jkotas@microsoft.com>
@github-actionsgithub-actionsBot locked and limited conversation to collaborators May 15, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@stephentoub@gewarren
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Backport XML documentation for CustomReflectionContext - #124365

Merged
gewarren merged 19 commits into
mainfrom
copilot/backport-customreflectioncontext-docs
Apr 15, 2026
Merged

Backport XML documentation for CustomReflectionContext#124365
gewarren merged 19 commits into
mainfrom
copilot/backport-customreflectioncontext-docs

Conversation

CopilotAI commented Feb 13, 2026

Copy link
Copy Markdown
Contributor

Backports XML documentation from dotnet-api-docs to the runtime repository per #124227.

Description

Adds comprehensive XML documentation to the CustomReflectionContext class and all its public/protected members to provide IntelliSense support for developers using this reflection customization API.

Changes:

  • Added XML documentation to CustomReflectionContext class in src assembly with summary and simplified type-level remarks
  • Added summary, param/return documentation, and short member-level remarks to all public/protected members (constructors, MapAssembly, MapType, GetCustomAttributes overloads, AddProperties, CreateProperty overloads)
  • Type-level remarks include only a link to supplemental documentation: https://github.com/dotnet/docs/raw/main/docs/fundamentals/runtime-libraries/system-reflection-context-customreflectioncontext.md
  • Member-level remarks provide brief contextual information (e.g., usage guidance for AddProperties and CreateProperty methods)
  • Ref assembly contains no XML documentation per established guidelines

Customer Impact

Developers using System.Reflection.Context will have IntelliSense documentation with summaries, parameter descriptions, and brief contextual remarks for all members, plus a link to comprehensive documentation showing how to customize reflection behavior through attribute manipulation and virtual properties.

Regression

No. Documentation-only change.

Testing

  • Built successfully for all target frameworks (netstandard2.1, net10.0)
  • XML documentation compiles without errors for non-netstandard2.0 targets
  • Code review completed

Risk

Minimal. Documentation-only change with no runtime impact.

Note: The netstandard2.0 target uses GeneratePlatformNotSupportedAssemblyMessage and generates a stub from the ref assembly. Since the ref assembly has no XML docs (per guidelines), the generated stub lacks documentation. A solution for enabling compiler-generated docs for such assemblies is being determined by maintainers.


💬 We'd love your input! Share your thoughts on Copilot coding agent in our 2 minute survey.

CopilotAIand others added 2 commits February 13, 2026 01:09
Co-authored-by: gewarren <24882762+gewarren@users.noreply.github.com>
Co-authored-by: gewarren <24882762+gewarren@users.noreply.github.com>
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to this area: @dotnet/area-system-reflection
See info in area-owners.md if you want to be subscribed.

CopilotAI changed the title [WIP] Backport documentation for CustomReflectionContextBackport XML documentation for CustomReflectionContextFeb 13, 2026
CopilotAI requested a review from gewarrenFebruary 13, 2026 01:15

@gewarrengewarren left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@copilot Please respond to feedback.

… src remarks
Co-authored-by: gewarren <24882762+gewarren@users.noreply.github.com>

CopilotAI commented Feb 13, 2026

Copy link
Copy Markdown
ContributorAuthor

@copilot Please respond to feedback.

Addressed all feedback in commit 865415d:

  • Removed all XML documentation from the ref assembly
  • Simplified the src file remarks to only include the supplemental docs link
  • Removed detailed remarks from member methods
  • Restored UseCompilerGeneratedDocXmlFile=false to prevent CS1591 errors

Co-authored-by: gewarren <24882762+gewarren@users.noreply.github.com>
CopilotAI requested a review from gewarrenFebruary 13, 2026 01:36
@gewarren
gewarren marked this pull request as ready for review February 13, 2026 04:09
CopilotAI review requested due to automatic review settings February 13, 2026 04:09

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR backports XML documentation from dotnet-api-docs to the runtime repository for the CustomReflectionContext class, following the established pattern from PR #124227. The documentation provides IntelliSense support for developers using this reflection API.

Changes:

  • Added comprehensive XML documentation to CustomReflectionContext class including type-level summary, simplified remarks with a link to supplemental documentation, and complete member-level documentation
  • All public and protected members now have summaries, parameter descriptions, return value documentation, and brief contextual remarks where appropriate
  • Followed the established convention of not adding documentation to ref assemblies

@gewarrengewarren left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@copilot Please update the .csproj file to use the compiler generated docs.

Co-authored-by: gewarren <24882762+gewarren@users.noreply.github.com>

CopilotAI commented Feb 13, 2026

Copy link
Copy Markdown
ContributorAuthor

@copilot Please update the .csproj file to use the compiler generated docs.

Updated the .csproj to use compiler-generated docs in commit ca89848. Also added minimal XML documentation to the ref assembly to prevent CS1591 errors in the generated netstandard2.0 platform-not-supported stub.

@github-actions

This comment has been minimized.

CopilotAI review requested due to automatic review settings April 9, 2026 15:29

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 2 out of 2 changed files in this pull request and generated 2 comments.

@github-actions

This comment has been minimized.

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
CopilotAI review requested due to automatic review settings April 9, 2026 16:30

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 2 out of 2 changed files in this pull request and generated no new comments.

@github-actions

This comment has been minimized.

@gewarren

Copy link
Copy Markdown
Contributor

@ericstj There's a build failure that I don't see in other PRs. Could it be due to the way docs are added for the platform not supported stubs?

@azure-pipelines
azure-pipelines
/ runtime (Build windows-x86 Release Libraries_NET481)

eng\targetingpacks.targets(107,5): error : (NETCORE_ENGINEERING_TELEMETRY=Build) The shared framework must be built before the local targeting pack can be consumed.

@github-actions

Copy link
Copy Markdown
Contributor

🤖 Copilot Code Review — PR #124365

Note

This review was AI-generated by Copilot using multi-model analysis (Claude Opus 4.5, GPT 5.3 Codex, Goldeneye, Claude Opus 4.6).

Holistic Assessment

Motivation: Justified — CustomReflectionContext had zero XML documentation, and this library had UseCompilerGeneratedDocXmlFile=false suppressing doc generation. Adding comprehensive docs is a clear improvement for developer experience.

Approach: Correct — XML doc comments are added directly to the source file for all public/protected members, following the standard dotnet/runtime documentation approach. The UseCompilerGeneratedDocXmlFile=false suppression is appropriately removed now that all public API surface is documented.

Summary: ✅ LGTM. This is a well-crafted documentation-only PR. All 9 public/protected members on CustomReflectionContext are documented with accurate summaries, parameter descriptions, and return value descriptions that follow the conventions in docs.prompt.md. No behavioral changes, no new public API surface (ref assembly is unchanged). Two minor suggestions below for follow-up.


Detailed Findings

✅ Documentation Coverage — Complete

All public/protected members (class summary, 2 constructors, MapAssembly, MapType, 2 GetCustomAttributes overloads, AddProperties, 2 CreateProperty overloads) have accurate XML doc comments. Verified against the ref assembly — no undocumented public members remain, so removing UseCompilerGeneratedDocXmlFile=false from the csproj will not introduce CS1591 warnings.

✅ Convention Compliance — Correct

  • Constructor summaries follow the "Initializes a new instance of the (Class) class" convention.
  • <param> descriptions are noun phrases beginning with articles ("The", "A").
  • <returns> descriptions are noun phrases beginning with articles.
  • <see langword="get"/> and <see langword="set"/> correctly used for accessor keywords.
  • <see cref="CreateProperty(Type, string, Func{object, object?}?, Action{object, object?}?)"/> correctly uses curly braces for generic type parameters in cref syntax.
  • <remarks> on AddProperties and CreateProperty provide useful guidance about the relationship between these methods.

✅ No New Public API Surface

The ref assembly (ref/System.Reflection.Context.cs) is unchanged. No API approval verification is needed.

💡 Missing <exception> Tags — Follow-up suggestion

(Flagged by all four review models)

Three members call ArgumentNullException.ThrowIfNull directly but lack <exception cref="ArgumentNullException"> documentation:

  • CustomReflectionContext(ReflectionContext source) — throws when source is null
  • MapAssembly(Assembly assembly) — throws when assembly is null
  • MapType(TypeInfo type) — throws when type is null

Additionally, both CreateProperty overloads propagate ArgumentException from the VirtualPropertyInfo constructor (when both getter and setter are null, or when propertyType is from a different reflection context).

Per docs.prompt.md: "Document all exceptions thrown directly by the member." This is a legitimate documentation gap, but not a blocker — this PR goes from zero docs to comprehensive docs, and <exception> tags can be added as a follow-up.

💡 Pre-existing Comment — Out-of-scope observation

Line 90 has // The default implementation of GetProperties: just return an empty list. but the method is named AddProperties. This pre-dates the PR and is out of scope, but could be cleaned up while touching the file.

Generated by Code Review for issue #124365 ·

@gewarren

Copy link
Copy Markdown
Contributor

/ba-g Failures unrelated

@gewarren
gewarren merged commit 62fda12 into mainApr 15, 2026
93 of 96 checks passed
@gewarren
gewarren deleted the copilot/backport-customreflectioncontext-docs branch April 15, 2026 02:42
ericstj added a commit that referenced this pull request Apr 22, 2026
When `UseCompilerGeneratedDocXmlFile` is `true` (the default) and a
library is a PNSE assembly, `eng/intellisense.targets` adds a
self-referencing `ProjectReference` with `SetTargetFramework=net11.0` to
pull enriched XML docs from the non-PNSE sibling build. In the NET481
build leg the local targeting pack (`FrameworkList.xml`) is never
produced, so the inner `net11.0` build fails with:
> The shared framework must be built before the local targeting pack can
be consumed.
This became visible after #124365 removed
`<UseCompilerGeneratedDocXmlFile>false</UseCompilerGeneratedDocXmlFile>`
from `System.Reflection.Context`, activating the PNSE doc-source path
for the first time in that project.
### Fix
Disable `AddProjectReferenceToPNSEDocSource` when doing a vertical build
that is not for .NETCore.
This also fixes a build break in VB tests that was introduced while the
NETFx build was broken.
### Verification
Tested locally by building vertical builds for NETFx, Net11, and
packages.
Fixes#127007
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Eric StJohn <ericstj@microsoft.com>
Co-authored-by: Jan Kotas <jkotas@microsoft.com>
@github-actionsgithub-actionsBot locked and limited conversation to collaborators May 15, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@stephentoub@gewarren
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Backport XML documentation for CustomReflectionContext - #124365

Merged
gewarren merged 19 commits into
mainfrom
copilot/backport-customreflectioncontext-docs
Apr 15, 2026
Merged

Backport XML documentation for CustomReflectionContext#124365
gewarren merged 19 commits into
mainfrom
copilot/backport-customreflectioncontext-docs

Conversation

CopilotAI commented Feb 13, 2026

Copy link
Copy Markdown
Contributor

Backports XML documentation from dotnet-api-docs to the runtime repository per #124227.

Description

Adds comprehensive XML documentation to the CustomReflectionContext class and all its public/protected members to provide IntelliSense support for developers using this reflection customization API.

Changes:

  • Added XML documentation to CustomReflectionContext class in src assembly with summary and simplified type-level remarks
  • Added summary, param/return documentation, and short member-level remarks to all public/protected members (constructors, MapAssembly, MapType, GetCustomAttributes overloads, AddProperties, CreateProperty overloads)
  • Type-level remarks include only a link to supplemental documentation: https://github.com/dotnet/docs/raw/main/docs/fundamentals/runtime-libraries/system-reflection-context-customreflectioncontext.md
  • Member-level remarks provide brief contextual information (e.g., usage guidance for AddProperties and CreateProperty methods)
  • Ref assembly contains no XML documentation per established guidelines

Customer Impact

Developers using System.Reflection.Context will have IntelliSense documentation with summaries, parameter descriptions, and brief contextual remarks for all members, plus a link to comprehensive documentation showing how to customize reflection behavior through attribute manipulation and virtual properties.

Regression

No. Documentation-only change.

Testing

  • Built successfully for all target frameworks (netstandard2.1, net10.0)
  • XML documentation compiles without errors for non-netstandard2.0 targets
  • Code review completed

Risk

Minimal. Documentation-only change with no runtime impact.

Note: The netstandard2.0 target uses GeneratePlatformNotSupportedAssemblyMessage and generates a stub from the ref assembly. Since the ref assembly has no XML docs (per guidelines), the generated stub lacks documentation. A solution for enabling compiler-generated docs for such assemblies is being determined by maintainers.


💬 We'd love your input! Share your thoughts on Copilot coding agent in our 2 minute survey.

CopilotAIand others added 2 commits February 13, 2026 01:09
Co-authored-by: gewarren <24882762+gewarren@users.noreply.github.com>
Co-authored-by: gewarren <24882762+gewarren@users.noreply.github.com>
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to this area: @dotnet/area-system-reflection
See info in area-owners.md if you want to be subscribed.

CopilotAI changed the title [WIP] Backport documentation for CustomReflectionContextBackport XML documentation for CustomReflectionContextFeb 13, 2026
CopilotAI requested a review from gewarrenFebruary 13, 2026 01:15

@gewarrengewarren left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@copilot Please respond to feedback.

… src remarks
Co-authored-by: gewarren <24882762+gewarren@users.noreply.github.com>

CopilotAI commented Feb 13, 2026

Copy link
Copy Markdown
ContributorAuthor

@copilot Please respond to feedback.

Addressed all feedback in commit 865415d:

  • Removed all XML documentation from the ref assembly
  • Simplified the src file remarks to only include the supplemental docs link
  • Removed detailed remarks from member methods
  • Restored UseCompilerGeneratedDocXmlFile=false to prevent CS1591 errors

Co-authored-by: gewarren <24882762+gewarren@users.noreply.github.com>
CopilotAI requested a review from gewarrenFebruary 13, 2026 01:36
@gewarren
gewarren marked this pull request as ready for review February 13, 2026 04:09
CopilotAI review requested due to automatic review settings February 13, 2026 04:09

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR backports XML documentation from dotnet-api-docs to the runtime repository for the CustomReflectionContext class, following the established pattern from PR #124227. The documentation provides IntelliSense support for developers using this reflection API.

Changes:

  • Added comprehensive XML documentation to CustomReflectionContext class including type-level summary, simplified remarks with a link to supplemental documentation, and complete member-level documentation
  • All public and protected members now have summaries, parameter descriptions, return value documentation, and brief contextual remarks where appropriate
  • Followed the established convention of not adding documentation to ref assemblies

@gewarrengewarren left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@copilot Please update the .csproj file to use the compiler generated docs.

Co-authored-by: gewarren <24882762+gewarren@users.noreply.github.com>

CopilotAI commented Feb 13, 2026

Copy link
Copy Markdown
ContributorAuthor

@copilot Please update the .csproj file to use the compiler generated docs.

Updated the .csproj to use compiler-generated docs in commit ca89848. Also added minimal XML documentation to the ref assembly to prevent CS1591 errors in the generated netstandard2.0 platform-not-supported stub.

@github-actions

This comment has been minimized.

CopilotAI review requested due to automatic review settings April 9, 2026 15:29

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 2 out of 2 changed files in this pull request and generated 2 comments.

@github-actions

This comment has been minimized.

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
CopilotAI review requested due to automatic review settings April 9, 2026 16:30

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 2 out of 2 changed files in this pull request and generated no new comments.

@github-actions

This comment has been minimized.

@gewarren

Copy link
Copy Markdown
Contributor

@ericstj There's a build failure that I don't see in other PRs. Could it be due to the way docs are added for the platform not supported stubs?

@azure-pipelines
azure-pipelines
/ runtime (Build windows-x86 Release Libraries_NET481)

eng\targetingpacks.targets(107,5): error : (NETCORE_ENGINEERING_TELEMETRY=Build) The shared framework must be built before the local targeting pack can be consumed.

@github-actions

Copy link
Copy Markdown
Contributor

🤖 Copilot Code Review — PR #124365

Note

This review was AI-generated by Copilot using multi-model analysis (Claude Opus 4.5, GPT 5.3 Codex, Goldeneye, Claude Opus 4.6).

Holistic Assessment

Motivation: Justified — CustomReflectionContext had zero XML documentation, and this library had UseCompilerGeneratedDocXmlFile=false suppressing doc generation. Adding comprehensive docs is a clear improvement for developer experience.

Approach: Correct — XML doc comments are added directly to the source file for all public/protected members, following the standard dotnet/runtime documentation approach. The UseCompilerGeneratedDocXmlFile=false suppression is appropriately removed now that all public API surface is documented.

Summary: ✅ LGTM. This is a well-crafted documentation-only PR. All 9 public/protected members on CustomReflectionContext are documented with accurate summaries, parameter descriptions, and return value descriptions that follow the conventions in docs.prompt.md. No behavioral changes, no new public API surface (ref assembly is unchanged). Two minor suggestions below for follow-up.


Detailed Findings

✅ Documentation Coverage — Complete

All public/protected members (class summary, 2 constructors, MapAssembly, MapType, 2 GetCustomAttributes overloads, AddProperties, 2 CreateProperty overloads) have accurate XML doc comments. Verified against the ref assembly — no undocumented public members remain, so removing UseCompilerGeneratedDocXmlFile=false from the csproj will not introduce CS1591 warnings.

✅ Convention Compliance — Correct

  • Constructor summaries follow the "Initializes a new instance of the (Class) class" convention.
  • <param> descriptions are noun phrases beginning with articles ("The", "A").
  • <returns> descriptions are noun phrases beginning with articles.
  • <see langword="get"/> and <see langword="set"/> correctly used for accessor keywords.
  • <see cref="CreateProperty(Type, string, Func{object, object?}?, Action{object, object?}?)"/> correctly uses curly braces for generic type parameters in cref syntax.
  • <remarks> on AddProperties and CreateProperty provide useful guidance about the relationship between these methods.

✅ No New Public API Surface

The ref assembly (ref/System.Reflection.Context.cs) is unchanged. No API approval verification is needed.

💡 Missing <exception> Tags — Follow-up suggestion

(Flagged by all four review models)

Three members call ArgumentNullException.ThrowIfNull directly but lack <exception cref="ArgumentNullException"> documentation:

  • CustomReflectionContext(ReflectionContext source) — throws when source is null
  • MapAssembly(Assembly assembly) — throws when assembly is null
  • MapType(TypeInfo type) — throws when type is null

Additionally, both CreateProperty overloads propagate ArgumentException from the VirtualPropertyInfo constructor (when both getter and setter are null, or when propertyType is from a different reflection context).

Per docs.prompt.md: "Document all exceptions thrown directly by the member." This is a legitimate documentation gap, but not a blocker — this PR goes from zero docs to comprehensive docs, and <exception> tags can be added as a follow-up.

💡 Pre-existing Comment — Out-of-scope observation

Line 90 has // The default implementation of GetProperties: just return an empty list. but the method is named AddProperties. This pre-dates the PR and is out of scope, but could be cleaned up while touching the file.

Generated by Code Review for issue #124365 ·

@gewarren

Copy link
Copy Markdown
Contributor

/ba-g Failures unrelated

@gewarren
gewarren merged commit 62fda12 into mainApr 15, 2026
93 of 96 checks passed
@gewarren
gewarren deleted the copilot/backport-customreflectioncontext-docs branch April 15, 2026 02:42
ericstj added a commit that referenced this pull request Apr 22, 2026
When `UseCompilerGeneratedDocXmlFile` is `true` (the default) and a
library is a PNSE assembly, `eng/intellisense.targets` adds a
self-referencing `ProjectReference` with `SetTargetFramework=net11.0` to
pull enriched XML docs from the non-PNSE sibling build. In the NET481
build leg the local targeting pack (`FrameworkList.xml`) is never
produced, so the inner `net11.0` build fails with:
> The shared framework must be built before the local targeting pack can
be consumed.
This became visible after #124365 removed
`<UseCompilerGeneratedDocXmlFile>false</UseCompilerGeneratedDocXmlFile>`
from `System.Reflection.Context`, activating the PNSE doc-source path
for the first time in that project.
### Fix
Disable `AddProjectReferenceToPNSEDocSource` when doing a vertical build
that is not for .NETCore.
This also fixes a build break in VB tests that was introduced while the
NETFx build was broken.
### Verification
Tested locally by building vertical builds for NETFx, Net11, and
packages.
Fixes#127007
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Eric StJohn <ericstj@microsoft.com>
Co-authored-by: Jan Kotas <jkotas@microsoft.com>
@github-actionsgithub-actionsBot locked and limited conversation to collaborators May 15, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@stephentoub@gewarren
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Backport XML documentation for CustomReflectionContext - #124365

Merged
gewarren merged 19 commits into
mainfrom
copilot/backport-customreflectioncontext-docs
Apr 15, 2026
Merged

Backport XML documentation for CustomReflectionContext#124365
gewarren merged 19 commits into
mainfrom
copilot/backport-customreflectioncontext-docs

Conversation

CopilotAI commented Feb 13, 2026

Copy link
Copy Markdown
Contributor

Backports XML documentation from dotnet-api-docs to the runtime repository per #124227.

Description

Adds comprehensive XML documentation to the CustomReflectionContext class and all its public/protected members to provide IntelliSense support for developers using this reflection customization API.

Changes:

  • Added XML documentation to CustomReflectionContext class in src assembly with summary and simplified type-level remarks
  • Added summary, param/return documentation, and short member-level remarks to all public/protected members (constructors, MapAssembly, MapType, GetCustomAttributes overloads, AddProperties, CreateProperty overloads)
  • Type-level remarks include only a link to supplemental documentation: https://github.com/dotnet/docs/raw/main/docs/fundamentals/runtime-libraries/system-reflection-context-customreflectioncontext.md
  • Member-level remarks provide brief contextual information (e.g., usage guidance for AddProperties and CreateProperty methods)
  • Ref assembly contains no XML documentation per established guidelines

Customer Impact

Developers using System.Reflection.Context will have IntelliSense documentation with summaries, parameter descriptions, and brief contextual remarks for all members, plus a link to comprehensive documentation showing how to customize reflection behavior through attribute manipulation and virtual properties.

Regression

No. Documentation-only change.

Testing

  • Built successfully for all target frameworks (netstandard2.1, net10.0)
  • XML documentation compiles without errors for non-netstandard2.0 targets
  • Code review completed

Risk

Minimal. Documentation-only change with no runtime impact.

Note: The netstandard2.0 target uses GeneratePlatformNotSupportedAssemblyMessage and generates a stub from the ref assembly. Since the ref assembly has no XML docs (per guidelines), the generated stub lacks documentation. A solution for enabling compiler-generated docs for such assemblies is being determined by maintainers.


💬 We'd love your input! Share your thoughts on Copilot coding agent in our 2 minute survey.

CopilotAIand others added 2 commits February 13, 2026 01:09
Co-authored-by: gewarren <24882762+gewarren@users.noreply.github.com>
Co-authored-by: gewarren <24882762+gewarren@users.noreply.github.com>
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to this area: @dotnet/area-system-reflection
See info in area-owners.md if you want to be subscribed.

CopilotAI changed the title [WIP] Backport documentation for CustomReflectionContextBackport XML documentation for CustomReflectionContextFeb 13, 2026
CopilotAI requested a review from gewarrenFebruary 13, 2026 01:15

@gewarrengewarren left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@copilot Please respond to feedback.

… src remarks
Co-authored-by: gewarren <24882762+gewarren@users.noreply.github.com>

CopilotAI commented Feb 13, 2026

Copy link
Copy Markdown
ContributorAuthor

@copilot Please respond to feedback.

Addressed all feedback in commit 865415d:

  • Removed all XML documentation from the ref assembly
  • Simplified the src file remarks to only include the supplemental docs link
  • Removed detailed remarks from member methods
  • Restored UseCompilerGeneratedDocXmlFile=false to prevent CS1591 errors

Co-authored-by: gewarren <24882762+gewarren@users.noreply.github.com>
CopilotAI requested a review from gewarrenFebruary 13, 2026 01:36
@gewarren
gewarren marked this pull request as ready for review February 13, 2026 04:09
CopilotAI review requested due to automatic review settings February 13, 2026 04:09

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR backports XML documentation from dotnet-api-docs to the runtime repository for the CustomReflectionContext class, following the established pattern from PR #124227. The documentation provides IntelliSense support for developers using this reflection API.

Changes:

  • Added comprehensive XML documentation to CustomReflectionContext class including type-level summary, simplified remarks with a link to supplemental documentation, and complete member-level documentation
  • All public and protected members now have summaries, parameter descriptions, return value documentation, and brief contextual remarks where appropriate
  • Followed the established convention of not adding documentation to ref assemblies

@gewarrengewarren left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@copilot Please update the .csproj file to use the compiler generated docs.

Co-authored-by: gewarren <24882762+gewarren@users.noreply.github.com>

CopilotAI commented Feb 13, 2026

Copy link
Copy Markdown
ContributorAuthor

@copilot Please update the .csproj file to use the compiler generated docs.

Updated the .csproj to use compiler-generated docs in commit ca89848. Also added minimal XML documentation to the ref assembly to prevent CS1591 errors in the generated netstandard2.0 platform-not-supported stub.

@github-actions

This comment has been minimized.

CopilotAI review requested due to automatic review settings April 9, 2026 15:29

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 2 out of 2 changed files in this pull request and generated 2 comments.

@github-actions

This comment has been minimized.

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
CopilotAI review requested due to automatic review settings April 9, 2026 16:30

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 2 out of 2 changed files in this pull request and generated no new comments.

@github-actions

This comment has been minimized.

@gewarren

Copy link
Copy Markdown
Contributor

@ericstj There's a build failure that I don't see in other PRs. Could it be due to the way docs are added for the platform not supported stubs?

@azure-pipelines
azure-pipelines
/ runtime (Build windows-x86 Release Libraries_NET481)

eng\targetingpacks.targets(107,5): error : (NETCORE_ENGINEERING_TELEMETRY=Build) The shared framework must be built before the local targeting pack can be consumed.

@github-actions

Copy link
Copy Markdown
Contributor

🤖 Copilot Code Review — PR #124365

Note

This review was AI-generated by Copilot using multi-model analysis (Claude Opus 4.5, GPT 5.3 Codex, Goldeneye, Claude Opus 4.6).

Holistic Assessment

Motivation: Justified — CustomReflectionContext had zero XML documentation, and this library had UseCompilerGeneratedDocXmlFile=false suppressing doc generation. Adding comprehensive docs is a clear improvement for developer experience.

Approach: Correct — XML doc comments are added directly to the source file for all public/protected members, following the standard dotnet/runtime documentation approach. The UseCompilerGeneratedDocXmlFile=false suppression is appropriately removed now that all public API surface is documented.

Summary: ✅ LGTM. This is a well-crafted documentation-only PR. All 9 public/protected members on CustomReflectionContext are documented with accurate summaries, parameter descriptions, and return value descriptions that follow the conventions in docs.prompt.md. No behavioral changes, no new public API surface (ref assembly is unchanged). Two minor suggestions below for follow-up.


Detailed Findings

✅ Documentation Coverage — Complete

All public/protected members (class summary, 2 constructors, MapAssembly, MapType, 2 GetCustomAttributes overloads, AddProperties, 2 CreateProperty overloads) have accurate XML doc comments. Verified against the ref assembly — no undocumented public members remain, so removing UseCompilerGeneratedDocXmlFile=false from the csproj will not introduce CS1591 warnings.

✅ Convention Compliance — Correct

  • Constructor summaries follow the "Initializes a new instance of the (Class) class" convention.
  • <param> descriptions are noun phrases beginning with articles ("The", "A").
  • <returns> descriptions are noun phrases beginning with articles.
  • <see langword="get"/> and <see langword="set"/> correctly used for accessor keywords.
  • <see cref="CreateProperty(Type, string, Func{object, object?}?, Action{object, object?}?)"/> correctly uses curly braces for generic type parameters in cref syntax.
  • <remarks> on AddProperties and CreateProperty provide useful guidance about the relationship between these methods.

✅ No New Public API Surface

The ref assembly (ref/System.Reflection.Context.cs) is unchanged. No API approval verification is needed.

💡 Missing <exception> Tags — Follow-up suggestion

(Flagged by all four review models)

Three members call ArgumentNullException.ThrowIfNull directly but lack <exception cref="ArgumentNullException"> documentation:

  • CustomReflectionContext(ReflectionContext source) — throws when source is null
  • MapAssembly(Assembly assembly) — throws when assembly is null
  • MapType(TypeInfo type) — throws when type is null

Additionally, both CreateProperty overloads propagate ArgumentException from the VirtualPropertyInfo constructor (when both getter and setter are null, or when propertyType is from a different reflection context).

Per docs.prompt.md: "Document all exceptions thrown directly by the member." This is a legitimate documentation gap, but not a blocker — this PR goes from zero docs to comprehensive docs, and <exception> tags can be added as a follow-up.

💡 Pre-existing Comment — Out-of-scope observation

Line 90 has // The default implementation of GetProperties: just return an empty list. but the method is named AddProperties. This pre-dates the PR and is out of scope, but could be cleaned up while touching the file.

Generated by Code Review for issue #124365 ·

@gewarren

Copy link
Copy Markdown
Contributor

/ba-g Failures unrelated

@gewarren
gewarren merged commit 62fda12 into mainApr 15, 2026
93 of 96 checks passed
@gewarren
gewarren deleted the copilot/backport-customreflectioncontext-docs branch April 15, 2026 02:42
ericstj added a commit that referenced this pull request Apr 22, 2026
When `UseCompilerGeneratedDocXmlFile` is `true` (the default) and a
library is a PNSE assembly, `eng/intellisense.targets` adds a
self-referencing `ProjectReference` with `SetTargetFramework=net11.0` to
pull enriched XML docs from the non-PNSE sibling build. In the NET481
build leg the local targeting pack (`FrameworkList.xml`) is never
produced, so the inner `net11.0` build fails with:
> The shared framework must be built before the local targeting pack can
be consumed.
This became visible after #124365 removed
`<UseCompilerGeneratedDocXmlFile>false</UseCompilerGeneratedDocXmlFile>`
from `System.Reflection.Context`, activating the PNSE doc-source path
for the first time in that project.
### Fix
Disable `AddProjectReferenceToPNSEDocSource` when doing a vertical build
that is not for .NETCore.
This also fixes a build break in VB tests that was introduced while the
NETFx build was broken.
### Verification
Tested locally by building vertical builds for NETFx, Net11, and
packages.
Fixes#127007
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Eric StJohn <ericstj@microsoft.com>
Co-authored-by: Jan Kotas <jkotas@microsoft.com>
@github-actionsgithub-actionsBot locked and limited conversation to collaborators May 15, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@stephentoub@gewarren
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Backport XML documentation for CustomReflectionContext - #124365

Merged
gewarren merged 19 commits into
mainfrom
copilot/backport-customreflectioncontext-docs
Apr 15, 2026
Merged

Backport XML documentation for CustomReflectionContext#124365
gewarren merged 19 commits into
mainfrom
copilot/backport-customreflectioncontext-docs

Conversation

CopilotAI commented Feb 13, 2026

Copy link
Copy Markdown
Contributor

Backports XML documentation from dotnet-api-docs to the runtime repository per #124227.

Description

Adds comprehensive XML documentation to the CustomReflectionContext class and all its public/protected members to provide IntelliSense support for developers using this reflection customization API.

Changes:

  • Added XML documentation to CustomReflectionContext class in src assembly with summary and simplified type-level remarks
  • Added summary, param/return documentation, and short member-level remarks to all public/protected members (constructors, MapAssembly, MapType, GetCustomAttributes overloads, AddProperties, CreateProperty overloads)
  • Type-level remarks include only a link to supplemental documentation: https://github.com/dotnet/docs/raw/main/docs/fundamentals/runtime-libraries/system-reflection-context-customreflectioncontext.md
  • Member-level remarks provide brief contextual information (e.g., usage guidance for AddProperties and CreateProperty methods)
  • Ref assembly contains no XML documentation per established guidelines

Customer Impact

Developers using System.Reflection.Context will have IntelliSense documentation with summaries, parameter descriptions, and brief contextual remarks for all members, plus a link to comprehensive documentation showing how to customize reflection behavior through attribute manipulation and virtual properties.

Regression

No. Documentation-only change.

Testing

  • Built successfully for all target frameworks (netstandard2.1, net10.0)
  • XML documentation compiles without errors for non-netstandard2.0 targets
  • Code review completed

Risk

Minimal. Documentation-only change with no runtime impact.

Note: The netstandard2.0 target uses GeneratePlatformNotSupportedAssemblyMessage and generates a stub from the ref assembly. Since the ref assembly has no XML docs (per guidelines), the generated stub lacks documentation. A solution for enabling compiler-generated docs for such assemblies is being determined by maintainers.


💬 We'd love your input! Share your thoughts on Copilot coding agent in our 2 minute survey.

CopilotAIand others added 2 commits February 13, 2026 01:09
Co-authored-by: gewarren <24882762+gewarren@users.noreply.github.com>
Co-authored-by: gewarren <24882762+gewarren@users.noreply.github.com>
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to this area: @dotnet/area-system-reflection
See info in area-owners.md if you want to be subscribed.

CopilotAI changed the title [WIP] Backport documentation for CustomReflectionContextBackport XML documentation for CustomReflectionContextFeb 13, 2026
CopilotAI requested a review from gewarrenFebruary 13, 2026 01:15

@gewarrengewarren left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@copilot Please respond to feedback.

… src remarks
Co-authored-by: gewarren <24882762+gewarren@users.noreply.github.com>

CopilotAI commented Feb 13, 2026

Copy link
Copy Markdown
ContributorAuthor

@copilot Please respond to feedback.

Addressed all feedback in commit 865415d:

  • Removed all XML documentation from the ref assembly
  • Simplified the src file remarks to only include the supplemental docs link
  • Removed detailed remarks from member methods
  • Restored UseCompilerGeneratedDocXmlFile=false to prevent CS1591 errors

Co-authored-by: gewarren <24882762+gewarren@users.noreply.github.com>
CopilotAI requested a review from gewarrenFebruary 13, 2026 01:36
@gewarren
gewarren marked this pull request as ready for review February 13, 2026 04:09
CopilotAI review requested due to automatic review settings February 13, 2026 04:09

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR backports XML documentation from dotnet-api-docs to the runtime repository for the CustomReflectionContext class, following the established pattern from PR #124227. The documentation provides IntelliSense support for developers using this reflection API.

Changes:

  • Added comprehensive XML documentation to CustomReflectionContext class including type-level summary, simplified remarks with a link to supplemental documentation, and complete member-level documentation
  • All public and protected members now have summaries, parameter descriptions, return value documentation, and brief contextual remarks where appropriate
  • Followed the established convention of not adding documentation to ref assemblies

@gewarrengewarren left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@copilot Please update the .csproj file to use the compiler generated docs.

Co-authored-by: gewarren <24882762+gewarren@users.noreply.github.com>

CopilotAI commented Feb 13, 2026

Copy link
Copy Markdown
ContributorAuthor

@copilot Please update the .csproj file to use the compiler generated docs.

Updated the .csproj to use compiler-generated docs in commit ca89848. Also added minimal XML documentation to the ref assembly to prevent CS1591 errors in the generated netstandard2.0 platform-not-supported stub.

@github-actions

This comment has been minimized.

CopilotAI review requested due to automatic review settings April 9, 2026 15:29

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 2 out of 2 changed files in this pull request and generated 2 comments.

@github-actions

This comment has been minimized.

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
CopilotAI review requested due to automatic review settings April 9, 2026 16:30

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 2 out of 2 changed files in this pull request and generated no new comments.

@github-actions

This comment has been minimized.

@gewarren

Copy link
Copy Markdown
Contributor

@ericstj There's a build failure that I don't see in other PRs. Could it be due to the way docs are added for the platform not supported stubs?

@azure-pipelines
azure-pipelines
/ runtime (Build windows-x86 Release Libraries_NET481)

eng\targetingpacks.targets(107,5): error : (NETCORE_ENGINEERING_TELEMETRY=Build) The shared framework must be built before the local targeting pack can be consumed.

@github-actions

Copy link
Copy Markdown
Contributor

🤖 Copilot Code Review — PR #124365

Note

This review was AI-generated by Copilot using multi-model analysis (Claude Opus 4.5, GPT 5.3 Codex, Goldeneye, Claude Opus 4.6).

Holistic Assessment

Motivation: Justified — CustomReflectionContext had zero XML documentation, and this library had UseCompilerGeneratedDocXmlFile=false suppressing doc generation. Adding comprehensive docs is a clear improvement for developer experience.

Approach: Correct — XML doc comments are added directly to the source file for all public/protected members, following the standard dotnet/runtime documentation approach. The UseCompilerGeneratedDocXmlFile=false suppression is appropriately removed now that all public API surface is documented.

Summary: ✅ LGTM. This is a well-crafted documentation-only PR. All 9 public/protected members on CustomReflectionContext are documented with accurate summaries, parameter descriptions, and return value descriptions that follow the conventions in docs.prompt.md. No behavioral changes, no new public API surface (ref assembly is unchanged). Two minor suggestions below for follow-up.


Detailed Findings

✅ Documentation Coverage — Complete

All public/protected members (class summary, 2 constructors, MapAssembly, MapType, 2 GetCustomAttributes overloads, AddProperties, 2 CreateProperty overloads) have accurate XML doc comments. Verified against the ref assembly — no undocumented public members remain, so removing UseCompilerGeneratedDocXmlFile=false from the csproj will not introduce CS1591 warnings.

✅ Convention Compliance — Correct

  • Constructor summaries follow the "Initializes a new instance of the (Class) class" convention.
  • <param> descriptions are noun phrases beginning with articles ("The", "A").
  • <returns> descriptions are noun phrases beginning with articles.
  • <see langword="get"/> and <see langword="set"/> correctly used for accessor keywords.
  • <see cref="CreateProperty(Type, string, Func{object, object?}?, Action{object, object?}?)"/> correctly uses curly braces for generic type parameters in cref syntax.
  • <remarks> on AddProperties and CreateProperty provide useful guidance about the relationship between these methods.

✅ No New Public API Surface

The ref assembly (ref/System.Reflection.Context.cs) is unchanged. No API approval verification is needed.

💡 Missing <exception> Tags — Follow-up suggestion

(Flagged by all four review models)

Three members call ArgumentNullException.ThrowIfNull directly but lack <exception cref="ArgumentNullException"> documentation:

  • CustomReflectionContext(ReflectionContext source) — throws when source is null
  • MapAssembly(Assembly assembly) — throws when assembly is null
  • MapType(TypeInfo type) — throws when type is null

Additionally, both CreateProperty overloads propagate ArgumentException from the VirtualPropertyInfo constructor (when both getter and setter are null, or when propertyType is from a different reflection context).

Per docs.prompt.md: "Document all exceptions thrown directly by the member." This is a legitimate documentation gap, but not a blocker — this PR goes from zero docs to comprehensive docs, and <exception> tags can be added as a follow-up.

💡 Pre-existing Comment — Out-of-scope observation

Line 90 has // The default implementation of GetProperties: just return an empty list. but the method is named AddProperties. This pre-dates the PR and is out of scope, but could be cleaned up while touching the file.

Generated by Code Review for issue #124365 ·

@gewarren

Copy link
Copy Markdown
Contributor

/ba-g Failures unrelated

@gewarren
gewarren merged commit 62fda12 into mainApr 15, 2026
93 of 96 checks passed
@gewarren
gewarren deleted the copilot/backport-customreflectioncontext-docs branch April 15, 2026 02:42
ericstj added a commit that referenced this pull request Apr 22, 2026
When `UseCompilerGeneratedDocXmlFile` is `true` (the default) and a
library is a PNSE assembly, `eng/intellisense.targets` adds a
self-referencing `ProjectReference` with `SetTargetFramework=net11.0` to
pull enriched XML docs from the non-PNSE sibling build. In the NET481
build leg the local targeting pack (`FrameworkList.xml`) is never
produced, so the inner `net11.0` build fails with:
> The shared framework must be built before the local targeting pack can
be consumed.
This became visible after #124365 removed
`<UseCompilerGeneratedDocXmlFile>false</UseCompilerGeneratedDocXmlFile>`
from `System.Reflection.Context`, activating the PNSE doc-source path
for the first time in that project.
### Fix
Disable `AddProjectReferenceToPNSEDocSource` when doing a vertical build
that is not for .NETCore.
This also fixes a build break in VB tests that was introduced while the
NETFx build was broken.
### Verification
Tested locally by building vertical builds for NETFx, Net11, and
packages.
Fixes#127007
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Eric StJohn <ericstj@microsoft.com>
Co-authored-by: Jan Kotas <jkotas@microsoft.com>
@github-actionsgithub-actionsBot locked and limited conversation to collaborators May 15, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@stephentoub@gewarren