Update TypeMap attribute handling - #120477

Merged
jtschuster merged 8 commits into
dotnet:mainfrom
jtschuster:ILLinkTypeMapTests
Oct 15, 2025
Merged

Update TypeMap attribute handling#120477
jtschuster merged 8 commits into
dotnet:mainfrom
jtschuster:ILLinkTypeMapTests

Conversation

@jtschuster

Copy link
Copy Markdown
Member

Fixes#120394

  • Mark TypeMapAssemblyTargetAttributes when its TypeMapUniverse is marked
  • Recurse through TypeMapAssemblyTarget assemblies to find all TypeMapAttributes
  • Refactor TypeMapHandler construction and initialization
  • Use TypeReferenceEqualityComparer for Dictionaries
  • Mark TypeMap attribute origin / assembly when a TypeMap attribute is marked. Otherwise, assemblies with only TypeMapAttributes will not be kept.
  • Add more test coverage

- Mark TypeMapAssemblyTargetAttributes when a typemapuniverse is marked
- Recurse through TypeMapAssemblyTarget assemblies to find all TypeMapAttributes
- Refactor TypeMapHandler construction and initialization
- Use TypeReferenceEqualityComparer for Dictionaries
- Add more test coverage
CopilotAI review requested due to automatic review settings October 7, 2025 18:31
@github-actionsgithub-actionsBot added the area-Tools-ILLink .NET linker development as well as trimming analyzers label Oct 7, 2025
@dotnet-policy-servicedotnet-policy-serviceBot added the linkable-framework Issues associated with delivering a linker friendly framework label Oct 7, 2025

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 updates TypeMap attribute handling in the IL linker to fix issues with assembly preservation and attribute marking. The changes improve how TypeMapAttributes are handled across assemblies and ensure assemblies containing only TypeMap attributes are properly preserved.

Key changes:

  • Enhanced TypeMapHandler to recursively process TypeMapAssemblyTarget assemblies
  • Improved attribute marking logic to mark assemblies when TypeMap attributes need to be preserved
  • Added comprehensive test coverage for cross-assembly TypeMap scenarios

Reviewed Changes

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

Show a summary per file
FileDescription
src/tools/illink/test/Mono.Linker.Tests.Cases/Reflection/TypeMap.csExtended test case with cross-assembly TypeMap scenarios and dependency validation
src/tools/illink/test/Mono.Linker.Tests.Cases/Reflection/Dependencies/TypeMapSecondOrderReference.csNew test dependency assembly with TypeMap attributes for second-order reference testing
src/tools/illink/test/Mono.Linker.Tests.Cases/Reflection/Dependencies/TypeMapReferencedAssembly.csNew test dependency assembly with TypeMap attributes for primary reference testing
src/tools/illink/src/linker/Linker/TypeReferenceEqualityComparer.csAdded obsolete marker for Default property to prevent misuse
src/tools/illink/src/linker/Linker/TypeMapHandler.csMajor refactor of TypeMapHandler with improved initialization, recursive assembly processing, and proper assembly marking
src/tools/illink/src/linker/Linker.Steps/SweepStep.csUpdated IsMarkedAssembly to check both assembly and main module marking
src/tools/illink/src/linker/Linker.Steps/MarkStep.csSimplified TypeMapHandler initialization and made MarkAssembly method public

Comment threadsrc/tools/illink/src/linker/Linker/TypeMapHandler.cs Outdated
Comment threadsrc/tools/illink/src/linker/Linker/TypeMapHandler.cs Outdated
Comment threadsrc/tools/illink/src/linker/Linker/TypeMapHandler.cs
Comment threadsrc/tools/illink/test/Mono.Linker.Tests.Cases/Reflection/TypeMap.cs Outdated
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

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

@Sergio0694

Copy link
Copy Markdown
Contributor

@jkoritzinsky does this need to be backported to .NET 10? As in, I assume this bug would break CsWinRT 3.0 too? 🤔

jtschusterand others added 2 commits October 7, 2025 11:40
Comment threadsrc/tools/illink/src/linker/Linker.Steps/SweepStep.cs
@AaronRobinsonMSFTAaronRobinsonMSFT added this to the 11.0.0 milestone Oct 8, 2025
Comment threadsrc/tools/illink/src/linker/Linker/TypeMapHandler.cs Outdated
Comment threadsrc/tools/illink/src/linker/Linker/TypeMapHandler.cs Outdated
Comment threadsrc/tools/illink/src/linker/Linker/TypeMapHandler.cs Outdated
Comment threadsrc/tools/illink/src/linker/Linker/TypeMapHandler.cs Outdated
Comment threadsrc/tools/illink/src/linker/Linker/TypeMapHandler.cs
Comment threadsrc/tools/illink/src/linker/Linker/TypeMapHandler.cs Outdated
Comment threadsrc/tools/illink/src/linker/Linker/TypeMapHandler.cs Outdated
Comment threadsrc/tools/illink/test/Mono.Linker.Tests.Cases/Reflection/TypeMap.cs Outdated
@AaronRobinsonMSFT

Copy link
Copy Markdown
Member

@jkoritzinsky does this need to be backported to .NET 10? As in, I assume this bug would break CsWinRT 3.0 too? 🤔

Yes, we should get this backported into .NET 10 for the first servicing release.

Comment threadsrc/tools/illink/src/linker/Linker/TypeMapHandler.cs Outdated
Comment threadsrc/tools/illink/src/linker/Linker/TypeMapHandler.cs Outdated
Comment threadsrc/tools/illink/src/linker/Linker/TypeMapHandler.cs Outdated

@sbomersbomer left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Thank you!

@jtschuster
jtschuster enabled auto-merge (squash) October 15, 2025 16:45
@jtschuster
jtschuster merged commit 53110aa into dotnet:mainOct 15, 2025
75 of 77 checks passed
@AaronRobinsonMSFT

Copy link
Copy Markdown
Member

@jtschuster Let's make sure we a backport started when the .NET 10 staging branch is open.

@Sergio0694 If this is something your team needs, please remind us in early November so it doesn't get missed.

@github-actionsgithub-actionsBot locked and limited conversation to collaborators Nov 15, 2025
@AaronRobinsonMSFT

Copy link
Copy Markdown
Member

@jtschuster or @jkoritzinsky Have you started the process to get this into .NET 10?

@AaronRobinsonMSFTAaronRobinsonMSFT added the partner-impact This issue impacts a partner who needs to be kept updated label Jan 23, 2026
@jkoritzinsky

Copy link
Copy Markdown
Member

I'm not sure if this ever got backported. I'll trigger the bot.

@jkoritzinsky

Copy link
Copy Markdown
Member

/backport to release/10.0

@github-actionsgithub-actionsBot unlocked this conversation Jan 23, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Started backporting to release/10.0 (link to workflow run)

@github-actionsgithub-actionsBot locked as resolved and limited conversation to collaborators Jan 23, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-Tools-ILLink.NET linker development as well as trimming analyzerslinkable-frameworkIssues associated with delivering a linker friendly frameworkpartner-impactThis issue impacts a partner who needs to be kept updated

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

Trimmer doesn't keep TypeMapAssemblyTargetAttributes

6 participants

@jtschuster@Sergio0694@AaronRobinsonMSFT@jkoritzinsky@sbomer
, '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

Update TypeMap attribute handling - #120477

Merged
jtschuster merged 8 commits into
dotnet:mainfrom
jtschuster:ILLinkTypeMapTests
Oct 15, 2025
Merged

Update TypeMap attribute handling#120477
jtschuster merged 8 commits into
dotnet:mainfrom
jtschuster:ILLinkTypeMapTests

Conversation

@jtschuster

Copy link
Copy Markdown
Member

Fixes#120394

  • Mark TypeMapAssemblyTargetAttributes when its TypeMapUniverse is marked
  • Recurse through TypeMapAssemblyTarget assemblies to find all TypeMapAttributes
  • Refactor TypeMapHandler construction and initialization
  • Use TypeReferenceEqualityComparer for Dictionaries
  • Mark TypeMap attribute origin / assembly when a TypeMap attribute is marked. Otherwise, assemblies with only TypeMapAttributes will not be kept.
  • Add more test coverage

- Mark TypeMapAssemblyTargetAttributes when a typemapuniverse is marked
- Recurse through TypeMapAssemblyTarget assemblies to find all TypeMapAttributes
- Refactor TypeMapHandler construction and initialization
- Use TypeReferenceEqualityComparer for Dictionaries
- Add more test coverage
CopilotAI review requested due to automatic review settings October 7, 2025 18:31
@github-actionsgithub-actionsBot added the area-Tools-ILLink .NET linker development as well as trimming analyzers label Oct 7, 2025
@dotnet-policy-servicedotnet-policy-serviceBot added the linkable-framework Issues associated with delivering a linker friendly framework label Oct 7, 2025

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 updates TypeMap attribute handling in the IL linker to fix issues with assembly preservation and attribute marking. The changes improve how TypeMapAttributes are handled across assemblies and ensure assemblies containing only TypeMap attributes are properly preserved.

Key changes:

  • Enhanced TypeMapHandler to recursively process TypeMapAssemblyTarget assemblies
  • Improved attribute marking logic to mark assemblies when TypeMap attributes need to be preserved
  • Added comprehensive test coverage for cross-assembly TypeMap scenarios

Reviewed Changes

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

Show a summary per file
FileDescription
src/tools/illink/test/Mono.Linker.Tests.Cases/Reflection/TypeMap.csExtended test case with cross-assembly TypeMap scenarios and dependency validation
src/tools/illink/test/Mono.Linker.Tests.Cases/Reflection/Dependencies/TypeMapSecondOrderReference.csNew test dependency assembly with TypeMap attributes for second-order reference testing
src/tools/illink/test/Mono.Linker.Tests.Cases/Reflection/Dependencies/TypeMapReferencedAssembly.csNew test dependency assembly with TypeMap attributes for primary reference testing
src/tools/illink/src/linker/Linker/TypeReferenceEqualityComparer.csAdded obsolete marker for Default property to prevent misuse
src/tools/illink/src/linker/Linker/TypeMapHandler.csMajor refactor of TypeMapHandler with improved initialization, recursive assembly processing, and proper assembly marking
src/tools/illink/src/linker/Linker.Steps/SweepStep.csUpdated IsMarkedAssembly to check both assembly and main module marking
src/tools/illink/src/linker/Linker.Steps/MarkStep.csSimplified TypeMapHandler initialization and made MarkAssembly method public

Comment threadsrc/tools/illink/src/linker/Linker/TypeMapHandler.cs Outdated
Comment threadsrc/tools/illink/src/linker/Linker/TypeMapHandler.cs Outdated
Comment threadsrc/tools/illink/src/linker/Linker/TypeMapHandler.cs
Comment threadsrc/tools/illink/test/Mono.Linker.Tests.Cases/Reflection/TypeMap.cs Outdated
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

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

@Sergio0694

Copy link
Copy Markdown
Contributor

@jkoritzinsky does this need to be backported to .NET 10? As in, I assume this bug would break CsWinRT 3.0 too? 🤔

jtschusterand others added 2 commits October 7, 2025 11:40
Comment threadsrc/tools/illink/src/linker/Linker.Steps/SweepStep.cs
@AaronRobinsonMSFTAaronRobinsonMSFT added this to the 11.0.0 milestone Oct 8, 2025
Comment threadsrc/tools/illink/src/linker/Linker/TypeMapHandler.cs Outdated
Comment threadsrc/tools/illink/src/linker/Linker/TypeMapHandler.cs Outdated
Comment threadsrc/tools/illink/src/linker/Linker/TypeMapHandler.cs Outdated
Comment threadsrc/tools/illink/src/linker/Linker/TypeMapHandler.cs Outdated
Comment threadsrc/tools/illink/src/linker/Linker/TypeMapHandler.cs
Comment threadsrc/tools/illink/src/linker/Linker/TypeMapHandler.cs Outdated
Comment threadsrc/tools/illink/src/linker/Linker/TypeMapHandler.cs Outdated
Comment threadsrc/tools/illink/test/Mono.Linker.Tests.Cases/Reflection/TypeMap.cs Outdated
@AaronRobinsonMSFT

Copy link
Copy Markdown
Member

@jkoritzinsky does this need to be backported to .NET 10? As in, I assume this bug would break CsWinRT 3.0 too? 🤔

Yes, we should get this backported into .NET 10 for the first servicing release.

Comment threadsrc/tools/illink/src/linker/Linker/TypeMapHandler.cs Outdated
Comment threadsrc/tools/illink/src/linker/Linker/TypeMapHandler.cs Outdated
Comment threadsrc/tools/illink/src/linker/Linker/TypeMapHandler.cs Outdated

@sbomersbomer left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Thank you!

@jtschuster
jtschuster enabled auto-merge (squash) October 15, 2025 16:45
@jtschuster
jtschuster merged commit 53110aa into dotnet:mainOct 15, 2025
75 of 77 checks passed
@AaronRobinsonMSFT

Copy link
Copy Markdown
Member

@jtschuster Let's make sure we a backport started when the .NET 10 staging branch is open.

@Sergio0694 If this is something your team needs, please remind us in early November so it doesn't get missed.

@github-actionsgithub-actionsBot locked and limited conversation to collaborators Nov 15, 2025
@AaronRobinsonMSFT

Copy link
Copy Markdown
Member

@jtschuster or @jkoritzinsky Have you started the process to get this into .NET 10?

@AaronRobinsonMSFTAaronRobinsonMSFT added the partner-impact This issue impacts a partner who needs to be kept updated label Jan 23, 2026
@jkoritzinsky

Copy link
Copy Markdown
Member

I'm not sure if this ever got backported. I'll trigger the bot.

@jkoritzinsky

Copy link
Copy Markdown
Member

/backport to release/10.0

@github-actionsgithub-actionsBot unlocked this conversation Jan 23, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Started backporting to release/10.0 (link to workflow run)

@github-actionsgithub-actionsBot locked as resolved and limited conversation to collaborators Jan 23, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-Tools-ILLink.NET linker development as well as trimming analyzerslinkable-frameworkIssues associated with delivering a linker friendly frameworkpartner-impactThis issue impacts a partner who needs to be kept updated

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

Trimmer doesn't keep TypeMapAssemblyTargetAttributes

6 participants

@jtschuster@Sergio0694@AaronRobinsonMSFT@jkoritzinsky@sbomer
, '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

Update TypeMap attribute handling - #120477

Merged
jtschuster merged 8 commits into
dotnet:mainfrom
jtschuster:ILLinkTypeMapTests
Oct 15, 2025
Merged

Update TypeMap attribute handling#120477
jtschuster merged 8 commits into
dotnet:mainfrom
jtschuster:ILLinkTypeMapTests

Conversation

@jtschuster

Copy link
Copy Markdown
Member

Fixes#120394

  • Mark TypeMapAssemblyTargetAttributes when its TypeMapUniverse is marked
  • Recurse through TypeMapAssemblyTarget assemblies to find all TypeMapAttributes
  • Refactor TypeMapHandler construction and initialization
  • Use TypeReferenceEqualityComparer for Dictionaries
  • Mark TypeMap attribute origin / assembly when a TypeMap attribute is marked. Otherwise, assemblies with only TypeMapAttributes will not be kept.
  • Add more test coverage

- Mark TypeMapAssemblyTargetAttributes when a typemapuniverse is marked
- Recurse through TypeMapAssemblyTarget assemblies to find all TypeMapAttributes
- Refactor TypeMapHandler construction and initialization
- Use TypeReferenceEqualityComparer for Dictionaries
- Add more test coverage
CopilotAI review requested due to automatic review settings October 7, 2025 18:31
@github-actionsgithub-actionsBot added the area-Tools-ILLink .NET linker development as well as trimming analyzers label Oct 7, 2025
@dotnet-policy-servicedotnet-policy-serviceBot added the linkable-framework Issues associated with delivering a linker friendly framework label Oct 7, 2025

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 updates TypeMap attribute handling in the IL linker to fix issues with assembly preservation and attribute marking. The changes improve how TypeMapAttributes are handled across assemblies and ensure assemblies containing only TypeMap attributes are properly preserved.

Key changes:

  • Enhanced TypeMapHandler to recursively process TypeMapAssemblyTarget assemblies
  • Improved attribute marking logic to mark assemblies when TypeMap attributes need to be preserved
  • Added comprehensive test coverage for cross-assembly TypeMap scenarios

Reviewed Changes

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

Show a summary per file
FileDescription
src/tools/illink/test/Mono.Linker.Tests.Cases/Reflection/TypeMap.csExtended test case with cross-assembly TypeMap scenarios and dependency validation
src/tools/illink/test/Mono.Linker.Tests.Cases/Reflection/Dependencies/TypeMapSecondOrderReference.csNew test dependency assembly with TypeMap attributes for second-order reference testing
src/tools/illink/test/Mono.Linker.Tests.Cases/Reflection/Dependencies/TypeMapReferencedAssembly.csNew test dependency assembly with TypeMap attributes for primary reference testing
src/tools/illink/src/linker/Linker/TypeReferenceEqualityComparer.csAdded obsolete marker for Default property to prevent misuse
src/tools/illink/src/linker/Linker/TypeMapHandler.csMajor refactor of TypeMapHandler with improved initialization, recursive assembly processing, and proper assembly marking
src/tools/illink/src/linker/Linker.Steps/SweepStep.csUpdated IsMarkedAssembly to check both assembly and main module marking
src/tools/illink/src/linker/Linker.Steps/MarkStep.csSimplified TypeMapHandler initialization and made MarkAssembly method public

Comment threadsrc/tools/illink/src/linker/Linker/TypeMapHandler.cs Outdated
Comment threadsrc/tools/illink/src/linker/Linker/TypeMapHandler.cs Outdated
Comment threadsrc/tools/illink/src/linker/Linker/TypeMapHandler.cs
Comment threadsrc/tools/illink/test/Mono.Linker.Tests.Cases/Reflection/TypeMap.cs Outdated
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

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

@Sergio0694

Copy link
Copy Markdown
Contributor

@jkoritzinsky does this need to be backported to .NET 10? As in, I assume this bug would break CsWinRT 3.0 too? 🤔

jtschusterand others added 2 commits October 7, 2025 11:40
Comment threadsrc/tools/illink/src/linker/Linker.Steps/SweepStep.cs
@AaronRobinsonMSFTAaronRobinsonMSFT added this to the 11.0.0 milestone Oct 8, 2025
Comment threadsrc/tools/illink/src/linker/Linker/TypeMapHandler.cs Outdated
Comment threadsrc/tools/illink/src/linker/Linker/TypeMapHandler.cs Outdated
Comment threadsrc/tools/illink/src/linker/Linker/TypeMapHandler.cs Outdated
Comment threadsrc/tools/illink/src/linker/Linker/TypeMapHandler.cs Outdated
Comment threadsrc/tools/illink/src/linker/Linker/TypeMapHandler.cs
Comment threadsrc/tools/illink/src/linker/Linker/TypeMapHandler.cs Outdated
Comment threadsrc/tools/illink/src/linker/Linker/TypeMapHandler.cs Outdated
Comment threadsrc/tools/illink/test/Mono.Linker.Tests.Cases/Reflection/TypeMap.cs Outdated
@AaronRobinsonMSFT

Copy link
Copy Markdown
Member

@jkoritzinsky does this need to be backported to .NET 10? As in, I assume this bug would break CsWinRT 3.0 too? 🤔

Yes, we should get this backported into .NET 10 for the first servicing release.

Comment threadsrc/tools/illink/src/linker/Linker/TypeMapHandler.cs Outdated
Comment threadsrc/tools/illink/src/linker/Linker/TypeMapHandler.cs Outdated
Comment threadsrc/tools/illink/src/linker/Linker/TypeMapHandler.cs Outdated

@sbomersbomer left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Thank you!

@jtschuster
jtschuster enabled auto-merge (squash) October 15, 2025 16:45
@jtschuster
jtschuster merged commit 53110aa into dotnet:mainOct 15, 2025
75 of 77 checks passed
@AaronRobinsonMSFT

Copy link
Copy Markdown
Member

@jtschuster Let's make sure we a backport started when the .NET 10 staging branch is open.

@Sergio0694 If this is something your team needs, please remind us in early November so it doesn't get missed.

@github-actionsgithub-actionsBot locked and limited conversation to collaborators Nov 15, 2025
@AaronRobinsonMSFT

Copy link
Copy Markdown
Member

@jtschuster or @jkoritzinsky Have you started the process to get this into .NET 10?

@AaronRobinsonMSFTAaronRobinsonMSFT added the partner-impact This issue impacts a partner who needs to be kept updated label Jan 23, 2026
@jkoritzinsky

Copy link
Copy Markdown
Member

I'm not sure if this ever got backported. I'll trigger the bot.

@jkoritzinsky

Copy link
Copy Markdown
Member

/backport to release/10.0

@github-actionsgithub-actionsBot unlocked this conversation Jan 23, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Started backporting to release/10.0 (link to workflow run)

@github-actionsgithub-actionsBot locked as resolved and limited conversation to collaborators Jan 23, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-Tools-ILLink.NET linker development as well as trimming analyzerslinkable-frameworkIssues associated with delivering a linker friendly frameworkpartner-impactThis issue impacts a partner who needs to be kept updated

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

Trimmer doesn't keep TypeMapAssemblyTargetAttributes

6 participants

@jtschuster@Sergio0694@AaronRobinsonMSFT@jkoritzinsky@sbomer
, '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

Update TypeMap attribute handling - #120477

Merged
jtschuster merged 8 commits into
dotnet:mainfrom
jtschuster:ILLinkTypeMapTests
Oct 15, 2025
Merged

Update TypeMap attribute handling#120477
jtschuster merged 8 commits into
dotnet:mainfrom
jtschuster:ILLinkTypeMapTests

Conversation

@jtschuster

Copy link
Copy Markdown
Member

Fixes#120394

  • Mark TypeMapAssemblyTargetAttributes when its TypeMapUniverse is marked
  • Recurse through TypeMapAssemblyTarget assemblies to find all TypeMapAttributes
  • Refactor TypeMapHandler construction and initialization
  • Use TypeReferenceEqualityComparer for Dictionaries
  • Mark TypeMap attribute origin / assembly when a TypeMap attribute is marked. Otherwise, assemblies with only TypeMapAttributes will not be kept.
  • Add more test coverage

- Mark TypeMapAssemblyTargetAttributes when a typemapuniverse is marked
- Recurse through TypeMapAssemblyTarget assemblies to find all TypeMapAttributes
- Refactor TypeMapHandler construction and initialization
- Use TypeReferenceEqualityComparer for Dictionaries
- Add more test coverage
CopilotAI review requested due to automatic review settings October 7, 2025 18:31
@github-actionsgithub-actionsBot added the area-Tools-ILLink .NET linker development as well as trimming analyzers label Oct 7, 2025
@dotnet-policy-servicedotnet-policy-serviceBot added the linkable-framework Issues associated with delivering a linker friendly framework label Oct 7, 2025

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 updates TypeMap attribute handling in the IL linker to fix issues with assembly preservation and attribute marking. The changes improve how TypeMapAttributes are handled across assemblies and ensure assemblies containing only TypeMap attributes are properly preserved.

Key changes:

  • Enhanced TypeMapHandler to recursively process TypeMapAssemblyTarget assemblies
  • Improved attribute marking logic to mark assemblies when TypeMap attributes need to be preserved
  • Added comprehensive test coverage for cross-assembly TypeMap scenarios

Reviewed Changes

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

Show a summary per file
FileDescription
src/tools/illink/test/Mono.Linker.Tests.Cases/Reflection/TypeMap.csExtended test case with cross-assembly TypeMap scenarios and dependency validation
src/tools/illink/test/Mono.Linker.Tests.Cases/Reflection/Dependencies/TypeMapSecondOrderReference.csNew test dependency assembly with TypeMap attributes for second-order reference testing
src/tools/illink/test/Mono.Linker.Tests.Cases/Reflection/Dependencies/TypeMapReferencedAssembly.csNew test dependency assembly with TypeMap attributes for primary reference testing
src/tools/illink/src/linker/Linker/TypeReferenceEqualityComparer.csAdded obsolete marker for Default property to prevent misuse
src/tools/illink/src/linker/Linker/TypeMapHandler.csMajor refactor of TypeMapHandler with improved initialization, recursive assembly processing, and proper assembly marking
src/tools/illink/src/linker/Linker.Steps/SweepStep.csUpdated IsMarkedAssembly to check both assembly and main module marking
src/tools/illink/src/linker/Linker.Steps/MarkStep.csSimplified TypeMapHandler initialization and made MarkAssembly method public

Comment threadsrc/tools/illink/src/linker/Linker/TypeMapHandler.cs Outdated
Comment threadsrc/tools/illink/src/linker/Linker/TypeMapHandler.cs Outdated
Comment threadsrc/tools/illink/src/linker/Linker/TypeMapHandler.cs
Comment threadsrc/tools/illink/test/Mono.Linker.Tests.Cases/Reflection/TypeMap.cs Outdated
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

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

@Sergio0694

Copy link
Copy Markdown
Contributor

@jkoritzinsky does this need to be backported to .NET 10? As in, I assume this bug would break CsWinRT 3.0 too? 🤔

jtschusterand others added 2 commits October 7, 2025 11:40
Comment threadsrc/tools/illink/src/linker/Linker.Steps/SweepStep.cs
@AaronRobinsonMSFTAaronRobinsonMSFT added this to the 11.0.0 milestone Oct 8, 2025
Comment threadsrc/tools/illink/src/linker/Linker/TypeMapHandler.cs Outdated
Comment threadsrc/tools/illink/src/linker/Linker/TypeMapHandler.cs Outdated
Comment threadsrc/tools/illink/src/linker/Linker/TypeMapHandler.cs Outdated
Comment threadsrc/tools/illink/src/linker/Linker/TypeMapHandler.cs Outdated
Comment threadsrc/tools/illink/src/linker/Linker/TypeMapHandler.cs
Comment threadsrc/tools/illink/src/linker/Linker/TypeMapHandler.cs Outdated
Comment threadsrc/tools/illink/src/linker/Linker/TypeMapHandler.cs Outdated
Comment threadsrc/tools/illink/test/Mono.Linker.Tests.Cases/Reflection/TypeMap.cs Outdated
@AaronRobinsonMSFT

Copy link
Copy Markdown
Member

@jkoritzinsky does this need to be backported to .NET 10? As in, I assume this bug would break CsWinRT 3.0 too? 🤔

Yes, we should get this backported into .NET 10 for the first servicing release.

Comment threadsrc/tools/illink/src/linker/Linker/TypeMapHandler.cs Outdated
Comment threadsrc/tools/illink/src/linker/Linker/TypeMapHandler.cs Outdated
Comment threadsrc/tools/illink/src/linker/Linker/TypeMapHandler.cs Outdated

@sbomersbomer left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Thank you!

@jtschuster
jtschuster enabled auto-merge (squash) October 15, 2025 16:45
@jtschuster
jtschuster merged commit 53110aa into dotnet:mainOct 15, 2025
75 of 77 checks passed
@AaronRobinsonMSFT

Copy link
Copy Markdown
Member

@jtschuster Let's make sure we a backport started when the .NET 10 staging branch is open.

@Sergio0694 If this is something your team needs, please remind us in early November so it doesn't get missed.

@github-actionsgithub-actionsBot locked and limited conversation to collaborators Nov 15, 2025
@AaronRobinsonMSFT

Copy link
Copy Markdown
Member

@jtschuster or @jkoritzinsky Have you started the process to get this into .NET 10?

@AaronRobinsonMSFTAaronRobinsonMSFT added the partner-impact This issue impacts a partner who needs to be kept updated label Jan 23, 2026
@jkoritzinsky

Copy link
Copy Markdown
Member

I'm not sure if this ever got backported. I'll trigger the bot.

@jkoritzinsky

Copy link
Copy Markdown
Member

/backport to release/10.0

@github-actionsgithub-actionsBot unlocked this conversation Jan 23, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Started backporting to release/10.0 (link to workflow run)

@github-actionsgithub-actionsBot locked as resolved and limited conversation to collaborators Jan 23, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-Tools-ILLink.NET linker development as well as trimming analyzerslinkable-frameworkIssues associated with delivering a linker friendly frameworkpartner-impactThis issue impacts a partner who needs to be kept updated

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

Trimmer doesn't keep TypeMapAssemblyTargetAttributes

6 participants

@jtschuster@Sergio0694@AaronRobinsonMSFT@jkoritzinsky@sbomer
, '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

Update TypeMap attribute handling - #120477

Merged
jtschuster merged 8 commits into
dotnet:mainfrom
jtschuster:ILLinkTypeMapTests
Oct 15, 2025
Merged

Update TypeMap attribute handling#120477
jtschuster merged 8 commits into
dotnet:mainfrom
jtschuster:ILLinkTypeMapTests

Conversation

@jtschuster

Copy link
Copy Markdown
Member

Fixes#120394

  • Mark TypeMapAssemblyTargetAttributes when its TypeMapUniverse is marked
  • Recurse through TypeMapAssemblyTarget assemblies to find all TypeMapAttributes
  • Refactor TypeMapHandler construction and initialization
  • Use TypeReferenceEqualityComparer for Dictionaries
  • Mark TypeMap attribute origin / assembly when a TypeMap attribute is marked. Otherwise, assemblies with only TypeMapAttributes will not be kept.
  • Add more test coverage

- Mark TypeMapAssemblyTargetAttributes when a typemapuniverse is marked
- Recurse through TypeMapAssemblyTarget assemblies to find all TypeMapAttributes
- Refactor TypeMapHandler construction and initialization
- Use TypeReferenceEqualityComparer for Dictionaries
- Add more test coverage
CopilotAI review requested due to automatic review settings October 7, 2025 18:31
@github-actionsgithub-actionsBot added the area-Tools-ILLink .NET linker development as well as trimming analyzers label Oct 7, 2025
@dotnet-policy-servicedotnet-policy-serviceBot added the linkable-framework Issues associated with delivering a linker friendly framework label Oct 7, 2025

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 updates TypeMap attribute handling in the IL linker to fix issues with assembly preservation and attribute marking. The changes improve how TypeMapAttributes are handled across assemblies and ensure assemblies containing only TypeMap attributes are properly preserved.

Key changes:

  • Enhanced TypeMapHandler to recursively process TypeMapAssemblyTarget assemblies
  • Improved attribute marking logic to mark assemblies when TypeMap attributes need to be preserved
  • Added comprehensive test coverage for cross-assembly TypeMap scenarios

Reviewed Changes

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

Show a summary per file
FileDescription
src/tools/illink/test/Mono.Linker.Tests.Cases/Reflection/TypeMap.csExtended test case with cross-assembly TypeMap scenarios and dependency validation
src/tools/illink/test/Mono.Linker.Tests.Cases/Reflection/Dependencies/TypeMapSecondOrderReference.csNew test dependency assembly with TypeMap attributes for second-order reference testing
src/tools/illink/test/Mono.Linker.Tests.Cases/Reflection/Dependencies/TypeMapReferencedAssembly.csNew test dependency assembly with TypeMap attributes for primary reference testing
src/tools/illink/src/linker/Linker/TypeReferenceEqualityComparer.csAdded obsolete marker for Default property to prevent misuse
src/tools/illink/src/linker/Linker/TypeMapHandler.csMajor refactor of TypeMapHandler with improved initialization, recursive assembly processing, and proper assembly marking
src/tools/illink/src/linker/Linker.Steps/SweepStep.csUpdated IsMarkedAssembly to check both assembly and main module marking
src/tools/illink/src/linker/Linker.Steps/MarkStep.csSimplified TypeMapHandler initialization and made MarkAssembly method public

Comment threadsrc/tools/illink/src/linker/Linker/TypeMapHandler.cs Outdated
Comment threadsrc/tools/illink/src/linker/Linker/TypeMapHandler.cs Outdated
Comment threadsrc/tools/illink/src/linker/Linker/TypeMapHandler.cs
Comment threadsrc/tools/illink/test/Mono.Linker.Tests.Cases/Reflection/TypeMap.cs Outdated
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

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

@Sergio0694

Copy link
Copy Markdown
Contributor

@jkoritzinsky does this need to be backported to .NET 10? As in, I assume this bug would break CsWinRT 3.0 too? 🤔

jtschusterand others added 2 commits October 7, 2025 11:40
Comment threadsrc/tools/illink/src/linker/Linker.Steps/SweepStep.cs
@AaronRobinsonMSFTAaronRobinsonMSFT added this to the 11.0.0 milestone Oct 8, 2025
Comment threadsrc/tools/illink/src/linker/Linker/TypeMapHandler.cs Outdated
Comment threadsrc/tools/illink/src/linker/Linker/TypeMapHandler.cs Outdated
Comment threadsrc/tools/illink/src/linker/Linker/TypeMapHandler.cs Outdated
Comment threadsrc/tools/illink/src/linker/Linker/TypeMapHandler.cs Outdated
Comment threadsrc/tools/illink/src/linker/Linker/TypeMapHandler.cs
Comment threadsrc/tools/illink/src/linker/Linker/TypeMapHandler.cs Outdated
Comment threadsrc/tools/illink/src/linker/Linker/TypeMapHandler.cs Outdated
Comment threadsrc/tools/illink/test/Mono.Linker.Tests.Cases/Reflection/TypeMap.cs Outdated
@AaronRobinsonMSFT

Copy link
Copy Markdown
Member

@jkoritzinsky does this need to be backported to .NET 10? As in, I assume this bug would break CsWinRT 3.0 too? 🤔

Yes, we should get this backported into .NET 10 for the first servicing release.

Comment threadsrc/tools/illink/src/linker/Linker/TypeMapHandler.cs Outdated
Comment threadsrc/tools/illink/src/linker/Linker/TypeMapHandler.cs Outdated
Comment threadsrc/tools/illink/src/linker/Linker/TypeMapHandler.cs Outdated

@sbomersbomer left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Thank you!

@jtschuster
jtschuster enabled auto-merge (squash) October 15, 2025 16:45
@jtschuster
jtschuster merged commit 53110aa into dotnet:mainOct 15, 2025
75 of 77 checks passed
@AaronRobinsonMSFT

Copy link
Copy Markdown
Member

@jtschuster Let's make sure we a backport started when the .NET 10 staging branch is open.

@Sergio0694 If this is something your team needs, please remind us in early November so it doesn't get missed.

@github-actionsgithub-actionsBot locked and limited conversation to collaborators Nov 15, 2025
@AaronRobinsonMSFT

Copy link
Copy Markdown
Member

@jtschuster or @jkoritzinsky Have you started the process to get this into .NET 10?

@AaronRobinsonMSFTAaronRobinsonMSFT added the partner-impact This issue impacts a partner who needs to be kept updated label Jan 23, 2026
@jkoritzinsky

Copy link
Copy Markdown
Member

I'm not sure if this ever got backported. I'll trigger the bot.

@jkoritzinsky

Copy link
Copy Markdown
Member

/backport to release/10.0

@github-actionsgithub-actionsBot unlocked this conversation Jan 23, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Started backporting to release/10.0 (link to workflow run)

@github-actionsgithub-actionsBot locked as resolved and limited conversation to collaborators Jan 23, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-Tools-ILLink.NET linker development as well as trimming analyzerslinkable-frameworkIssues associated with delivering a linker friendly frameworkpartner-impactThis issue impacts a partner who needs to be kept updated

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

Trimmer doesn't keep TypeMapAssemblyTargetAttributes

6 participants

@jtschuster@Sergio0694@AaronRobinsonMSFT@jkoritzinsky@sbomer
, '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

Update TypeMap attribute handling - #120477

Merged
jtschuster merged 8 commits into
dotnet:mainfrom
jtschuster:ILLinkTypeMapTests
Oct 15, 2025
Merged

Update TypeMap attribute handling#120477
jtschuster merged 8 commits into
dotnet:mainfrom
jtschuster:ILLinkTypeMapTests

Conversation

@jtschuster

Copy link
Copy Markdown
Member

Fixes#120394

  • Mark TypeMapAssemblyTargetAttributes when its TypeMapUniverse is marked
  • Recurse through TypeMapAssemblyTarget assemblies to find all TypeMapAttributes
  • Refactor TypeMapHandler construction and initialization
  • Use TypeReferenceEqualityComparer for Dictionaries
  • Mark TypeMap attribute origin / assembly when a TypeMap attribute is marked. Otherwise, assemblies with only TypeMapAttributes will not be kept.
  • Add more test coverage

- Mark TypeMapAssemblyTargetAttributes when a typemapuniverse is marked
- Recurse through TypeMapAssemblyTarget assemblies to find all TypeMapAttributes
- Refactor TypeMapHandler construction and initialization
- Use TypeReferenceEqualityComparer for Dictionaries
- Add more test coverage
CopilotAI review requested due to automatic review settings October 7, 2025 18:31
@github-actionsgithub-actionsBot added the area-Tools-ILLink .NET linker development as well as trimming analyzers label Oct 7, 2025
@dotnet-policy-servicedotnet-policy-serviceBot added the linkable-framework Issues associated with delivering a linker friendly framework label Oct 7, 2025

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 updates TypeMap attribute handling in the IL linker to fix issues with assembly preservation and attribute marking. The changes improve how TypeMapAttributes are handled across assemblies and ensure assemblies containing only TypeMap attributes are properly preserved.

Key changes:

  • Enhanced TypeMapHandler to recursively process TypeMapAssemblyTarget assemblies
  • Improved attribute marking logic to mark assemblies when TypeMap attributes need to be preserved
  • Added comprehensive test coverage for cross-assembly TypeMap scenarios

Reviewed Changes

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

Show a summary per file
FileDescription
src/tools/illink/test/Mono.Linker.Tests.Cases/Reflection/TypeMap.csExtended test case with cross-assembly TypeMap scenarios and dependency validation
src/tools/illink/test/Mono.Linker.Tests.Cases/Reflection/Dependencies/TypeMapSecondOrderReference.csNew test dependency assembly with TypeMap attributes for second-order reference testing
src/tools/illink/test/Mono.Linker.Tests.Cases/Reflection/Dependencies/TypeMapReferencedAssembly.csNew test dependency assembly with TypeMap attributes for primary reference testing
src/tools/illink/src/linker/Linker/TypeReferenceEqualityComparer.csAdded obsolete marker for Default property to prevent misuse
src/tools/illink/src/linker/Linker/TypeMapHandler.csMajor refactor of TypeMapHandler with improved initialization, recursive assembly processing, and proper assembly marking
src/tools/illink/src/linker/Linker.Steps/SweepStep.csUpdated IsMarkedAssembly to check both assembly and main module marking
src/tools/illink/src/linker/Linker.Steps/MarkStep.csSimplified TypeMapHandler initialization and made MarkAssembly method public

Comment threadsrc/tools/illink/src/linker/Linker/TypeMapHandler.cs Outdated
Comment threadsrc/tools/illink/src/linker/Linker/TypeMapHandler.cs Outdated
Comment threadsrc/tools/illink/src/linker/Linker/TypeMapHandler.cs
Comment threadsrc/tools/illink/test/Mono.Linker.Tests.Cases/Reflection/TypeMap.cs Outdated
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

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

@Sergio0694

Copy link
Copy Markdown
Contributor

@jkoritzinsky does this need to be backported to .NET 10? As in, I assume this bug would break CsWinRT 3.0 too? 🤔

jtschusterand others added 2 commits October 7, 2025 11:40
Comment threadsrc/tools/illink/src/linker/Linker.Steps/SweepStep.cs
@AaronRobinsonMSFTAaronRobinsonMSFT added this to the 11.0.0 milestone Oct 8, 2025
Comment threadsrc/tools/illink/src/linker/Linker/TypeMapHandler.cs Outdated
Comment threadsrc/tools/illink/src/linker/Linker/TypeMapHandler.cs Outdated
Comment threadsrc/tools/illink/src/linker/Linker/TypeMapHandler.cs Outdated
Comment threadsrc/tools/illink/src/linker/Linker/TypeMapHandler.cs Outdated
Comment threadsrc/tools/illink/src/linker/Linker/TypeMapHandler.cs
Comment threadsrc/tools/illink/src/linker/Linker/TypeMapHandler.cs Outdated
Comment threadsrc/tools/illink/src/linker/Linker/TypeMapHandler.cs Outdated
Comment threadsrc/tools/illink/test/Mono.Linker.Tests.Cases/Reflection/TypeMap.cs Outdated
@AaronRobinsonMSFT

Copy link
Copy Markdown
Member

@jkoritzinsky does this need to be backported to .NET 10? As in, I assume this bug would break CsWinRT 3.0 too? 🤔

Yes, we should get this backported into .NET 10 for the first servicing release.

Comment threadsrc/tools/illink/src/linker/Linker/TypeMapHandler.cs Outdated
Comment threadsrc/tools/illink/src/linker/Linker/TypeMapHandler.cs Outdated
Comment threadsrc/tools/illink/src/linker/Linker/TypeMapHandler.cs Outdated

@sbomersbomer left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Thank you!

@jtschuster
jtschuster enabled auto-merge (squash) October 15, 2025 16:45
@jtschuster
jtschuster merged commit 53110aa into dotnet:mainOct 15, 2025
75 of 77 checks passed
@AaronRobinsonMSFT

Copy link
Copy Markdown
Member

@jtschuster Let's make sure we a backport started when the .NET 10 staging branch is open.

@Sergio0694 If this is something your team needs, please remind us in early November so it doesn't get missed.

@github-actionsgithub-actionsBot locked and limited conversation to collaborators Nov 15, 2025
@AaronRobinsonMSFT

Copy link
Copy Markdown
Member

@jtschuster or @jkoritzinsky Have you started the process to get this into .NET 10?

@AaronRobinsonMSFTAaronRobinsonMSFT added the partner-impact This issue impacts a partner who needs to be kept updated label Jan 23, 2026
@jkoritzinsky

Copy link
Copy Markdown
Member

I'm not sure if this ever got backported. I'll trigger the bot.

@jkoritzinsky

Copy link
Copy Markdown
Member

/backport to release/10.0

@github-actionsgithub-actionsBot unlocked this conversation Jan 23, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Started backporting to release/10.0 (link to workflow run)

@github-actionsgithub-actionsBot locked as resolved and limited conversation to collaborators Jan 23, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-Tools-ILLink.NET linker development as well as trimming analyzerslinkable-frameworkIssues associated with delivering a linker friendly frameworkpartner-impactThis issue impacts a partner who needs to be kept updated

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

Trimmer doesn't keep TypeMapAssemblyTargetAttributes

6 participants

@jtschuster@Sergio0694@AaronRobinsonMSFT@jkoritzinsky@sbomer
, '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

Update TypeMap attribute handling - #120477

Merged
jtschuster merged 8 commits into
dotnet:mainfrom
jtschuster:ILLinkTypeMapTests
Oct 15, 2025
Merged

Update TypeMap attribute handling#120477
jtschuster merged 8 commits into
dotnet:mainfrom
jtschuster:ILLinkTypeMapTests

Conversation

@jtschuster

Copy link
Copy Markdown
Member

Fixes#120394

  • Mark TypeMapAssemblyTargetAttributes when its TypeMapUniverse is marked
  • Recurse through TypeMapAssemblyTarget assemblies to find all TypeMapAttributes
  • Refactor TypeMapHandler construction and initialization
  • Use TypeReferenceEqualityComparer for Dictionaries
  • Mark TypeMap attribute origin / assembly when a TypeMap attribute is marked. Otherwise, assemblies with only TypeMapAttributes will not be kept.
  • Add more test coverage

- Mark TypeMapAssemblyTargetAttributes when a typemapuniverse is marked
- Recurse through TypeMapAssemblyTarget assemblies to find all TypeMapAttributes
- Refactor TypeMapHandler construction and initialization
- Use TypeReferenceEqualityComparer for Dictionaries
- Add more test coverage
CopilotAI review requested due to automatic review settings October 7, 2025 18:31
@github-actionsgithub-actionsBot added the area-Tools-ILLink .NET linker development as well as trimming analyzers label Oct 7, 2025
@dotnet-policy-servicedotnet-policy-serviceBot added the linkable-framework Issues associated with delivering a linker friendly framework label Oct 7, 2025

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 updates TypeMap attribute handling in the IL linker to fix issues with assembly preservation and attribute marking. The changes improve how TypeMapAttributes are handled across assemblies and ensure assemblies containing only TypeMap attributes are properly preserved.

Key changes:

  • Enhanced TypeMapHandler to recursively process TypeMapAssemblyTarget assemblies
  • Improved attribute marking logic to mark assemblies when TypeMap attributes need to be preserved
  • Added comprehensive test coverage for cross-assembly TypeMap scenarios

Reviewed Changes

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

Show a summary per file
FileDescription
src/tools/illink/test/Mono.Linker.Tests.Cases/Reflection/TypeMap.csExtended test case with cross-assembly TypeMap scenarios and dependency validation
src/tools/illink/test/Mono.Linker.Tests.Cases/Reflection/Dependencies/TypeMapSecondOrderReference.csNew test dependency assembly with TypeMap attributes for second-order reference testing
src/tools/illink/test/Mono.Linker.Tests.Cases/Reflection/Dependencies/TypeMapReferencedAssembly.csNew test dependency assembly with TypeMap attributes for primary reference testing
src/tools/illink/src/linker/Linker/TypeReferenceEqualityComparer.csAdded obsolete marker for Default property to prevent misuse
src/tools/illink/src/linker/Linker/TypeMapHandler.csMajor refactor of TypeMapHandler with improved initialization, recursive assembly processing, and proper assembly marking
src/tools/illink/src/linker/Linker.Steps/SweepStep.csUpdated IsMarkedAssembly to check both assembly and main module marking
src/tools/illink/src/linker/Linker.Steps/MarkStep.csSimplified TypeMapHandler initialization and made MarkAssembly method public

Comment threadsrc/tools/illink/src/linker/Linker/TypeMapHandler.cs Outdated
Comment threadsrc/tools/illink/src/linker/Linker/TypeMapHandler.cs Outdated
Comment threadsrc/tools/illink/src/linker/Linker/TypeMapHandler.cs
Comment threadsrc/tools/illink/test/Mono.Linker.Tests.Cases/Reflection/TypeMap.cs Outdated
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

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

@Sergio0694

Copy link
Copy Markdown
Contributor

@jkoritzinsky does this need to be backported to .NET 10? As in, I assume this bug would break CsWinRT 3.0 too? 🤔

jtschusterand others added 2 commits October 7, 2025 11:40
Comment threadsrc/tools/illink/src/linker/Linker.Steps/SweepStep.cs
@AaronRobinsonMSFTAaronRobinsonMSFT added this to the 11.0.0 milestone Oct 8, 2025
Comment threadsrc/tools/illink/src/linker/Linker/TypeMapHandler.cs Outdated
Comment threadsrc/tools/illink/src/linker/Linker/TypeMapHandler.cs Outdated
Comment threadsrc/tools/illink/src/linker/Linker/TypeMapHandler.cs Outdated
Comment threadsrc/tools/illink/src/linker/Linker/TypeMapHandler.cs Outdated
Comment threadsrc/tools/illink/src/linker/Linker/TypeMapHandler.cs
Comment threadsrc/tools/illink/src/linker/Linker/TypeMapHandler.cs Outdated
Comment threadsrc/tools/illink/src/linker/Linker/TypeMapHandler.cs Outdated
Comment threadsrc/tools/illink/test/Mono.Linker.Tests.Cases/Reflection/TypeMap.cs Outdated
@AaronRobinsonMSFT

Copy link
Copy Markdown
Member

@jkoritzinsky does this need to be backported to .NET 10? As in, I assume this bug would break CsWinRT 3.0 too? 🤔

Yes, we should get this backported into .NET 10 for the first servicing release.

Comment threadsrc/tools/illink/src/linker/Linker/TypeMapHandler.cs Outdated
Comment threadsrc/tools/illink/src/linker/Linker/TypeMapHandler.cs Outdated
Comment threadsrc/tools/illink/src/linker/Linker/TypeMapHandler.cs Outdated

@sbomersbomer left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Thank you!

@jtschuster
jtschuster enabled auto-merge (squash) October 15, 2025 16:45
@jtschuster
jtschuster merged commit 53110aa into dotnet:mainOct 15, 2025
75 of 77 checks passed
@AaronRobinsonMSFT

Copy link
Copy Markdown
Member

@jtschuster Let's make sure we a backport started when the .NET 10 staging branch is open.

@Sergio0694 If this is something your team needs, please remind us in early November so it doesn't get missed.

@github-actionsgithub-actionsBot locked and limited conversation to collaborators Nov 15, 2025
@AaronRobinsonMSFT

Copy link
Copy Markdown
Member

@jtschuster or @jkoritzinsky Have you started the process to get this into .NET 10?

@AaronRobinsonMSFTAaronRobinsonMSFT added the partner-impact This issue impacts a partner who needs to be kept updated label Jan 23, 2026
@jkoritzinsky

Copy link
Copy Markdown
Member

I'm not sure if this ever got backported. I'll trigger the bot.

@jkoritzinsky

Copy link
Copy Markdown
Member

/backport to release/10.0

@github-actionsgithub-actionsBot unlocked this conversation Jan 23, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Started backporting to release/10.0 (link to workflow run)

@github-actionsgithub-actionsBot locked as resolved and limited conversation to collaborators Jan 23, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-Tools-ILLink.NET linker development as well as trimming analyzerslinkable-frameworkIssues associated with delivering a linker friendly frameworkpartner-impactThis issue impacts a partner who needs to be kept updated

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

Trimmer doesn't keep TypeMapAssemblyTargetAttributes

6 participants

@jtschuster@Sergio0694@AaronRobinsonMSFT@jkoritzinsky@sbomer
, '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

Update TypeMap attribute handling - #120477

Merged
jtschuster merged 8 commits into
dotnet:mainfrom
jtschuster:ILLinkTypeMapTests
Oct 15, 2025
Merged

Update TypeMap attribute handling#120477
jtschuster merged 8 commits into
dotnet:mainfrom
jtschuster:ILLinkTypeMapTests

Conversation

@jtschuster

Copy link
Copy Markdown
Member

Fixes#120394

  • Mark TypeMapAssemblyTargetAttributes when its TypeMapUniverse is marked
  • Recurse through TypeMapAssemblyTarget assemblies to find all TypeMapAttributes
  • Refactor TypeMapHandler construction and initialization
  • Use TypeReferenceEqualityComparer for Dictionaries
  • Mark TypeMap attribute origin / assembly when a TypeMap attribute is marked. Otherwise, assemblies with only TypeMapAttributes will not be kept.
  • Add more test coverage

- Mark TypeMapAssemblyTargetAttributes when a typemapuniverse is marked
- Recurse through TypeMapAssemblyTarget assemblies to find all TypeMapAttributes
- Refactor TypeMapHandler construction and initialization
- Use TypeReferenceEqualityComparer for Dictionaries
- Add more test coverage
CopilotAI review requested due to automatic review settings October 7, 2025 18:31
@github-actionsgithub-actionsBot added the area-Tools-ILLink .NET linker development as well as trimming analyzers label Oct 7, 2025
@dotnet-policy-servicedotnet-policy-serviceBot added the linkable-framework Issues associated with delivering a linker friendly framework label Oct 7, 2025

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 updates TypeMap attribute handling in the IL linker to fix issues with assembly preservation and attribute marking. The changes improve how TypeMapAttributes are handled across assemblies and ensure assemblies containing only TypeMap attributes are properly preserved.

Key changes:

  • Enhanced TypeMapHandler to recursively process TypeMapAssemblyTarget assemblies
  • Improved attribute marking logic to mark assemblies when TypeMap attributes need to be preserved
  • Added comprehensive test coverage for cross-assembly TypeMap scenarios

Reviewed Changes

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

Show a summary per file
FileDescription
src/tools/illink/test/Mono.Linker.Tests.Cases/Reflection/TypeMap.csExtended test case with cross-assembly TypeMap scenarios and dependency validation
src/tools/illink/test/Mono.Linker.Tests.Cases/Reflection/Dependencies/TypeMapSecondOrderReference.csNew test dependency assembly with TypeMap attributes for second-order reference testing
src/tools/illink/test/Mono.Linker.Tests.Cases/Reflection/Dependencies/TypeMapReferencedAssembly.csNew test dependency assembly with TypeMap attributes for primary reference testing
src/tools/illink/src/linker/Linker/TypeReferenceEqualityComparer.csAdded obsolete marker for Default property to prevent misuse
src/tools/illink/src/linker/Linker/TypeMapHandler.csMajor refactor of TypeMapHandler with improved initialization, recursive assembly processing, and proper assembly marking
src/tools/illink/src/linker/Linker.Steps/SweepStep.csUpdated IsMarkedAssembly to check both assembly and main module marking
src/tools/illink/src/linker/Linker.Steps/MarkStep.csSimplified TypeMapHandler initialization and made MarkAssembly method public

Comment threadsrc/tools/illink/src/linker/Linker/TypeMapHandler.cs Outdated
Comment threadsrc/tools/illink/src/linker/Linker/TypeMapHandler.cs Outdated
Comment threadsrc/tools/illink/src/linker/Linker/TypeMapHandler.cs
Comment threadsrc/tools/illink/test/Mono.Linker.Tests.Cases/Reflection/TypeMap.cs Outdated
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

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

@Sergio0694

Copy link
Copy Markdown
Contributor

@jkoritzinsky does this need to be backported to .NET 10? As in, I assume this bug would break CsWinRT 3.0 too? 🤔

jtschusterand others added 2 commits October 7, 2025 11:40
Comment threadsrc/tools/illink/src/linker/Linker.Steps/SweepStep.cs
@AaronRobinsonMSFTAaronRobinsonMSFT added this to the 11.0.0 milestone Oct 8, 2025
Comment threadsrc/tools/illink/src/linker/Linker/TypeMapHandler.cs Outdated
Comment threadsrc/tools/illink/src/linker/Linker/TypeMapHandler.cs Outdated
Comment threadsrc/tools/illink/src/linker/Linker/TypeMapHandler.cs Outdated
Comment threadsrc/tools/illink/src/linker/Linker/TypeMapHandler.cs Outdated
Comment threadsrc/tools/illink/src/linker/Linker/TypeMapHandler.cs
Comment threadsrc/tools/illink/src/linker/Linker/TypeMapHandler.cs Outdated
Comment threadsrc/tools/illink/src/linker/Linker/TypeMapHandler.cs Outdated
Comment threadsrc/tools/illink/test/Mono.Linker.Tests.Cases/Reflection/TypeMap.cs Outdated
@AaronRobinsonMSFT

Copy link
Copy Markdown
Member

@jkoritzinsky does this need to be backported to .NET 10? As in, I assume this bug would break CsWinRT 3.0 too? 🤔

Yes, we should get this backported into .NET 10 for the first servicing release.

Comment threadsrc/tools/illink/src/linker/Linker/TypeMapHandler.cs Outdated
Comment threadsrc/tools/illink/src/linker/Linker/TypeMapHandler.cs Outdated
Comment threadsrc/tools/illink/src/linker/Linker/TypeMapHandler.cs Outdated

@sbomersbomer left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Thank you!

@jtschuster
jtschuster enabled auto-merge (squash) October 15, 2025 16:45
@jtschuster
jtschuster merged commit 53110aa into dotnet:mainOct 15, 2025
75 of 77 checks passed
@AaronRobinsonMSFT

Copy link
Copy Markdown
Member

@jtschuster Let's make sure we a backport started when the .NET 10 staging branch is open.

@Sergio0694 If this is something your team needs, please remind us in early November so it doesn't get missed.

@github-actionsgithub-actionsBot locked and limited conversation to collaborators Nov 15, 2025
@AaronRobinsonMSFT

Copy link
Copy Markdown
Member

@jtschuster or @jkoritzinsky Have you started the process to get this into .NET 10?

@AaronRobinsonMSFTAaronRobinsonMSFT added the partner-impact This issue impacts a partner who needs to be kept updated label Jan 23, 2026
@jkoritzinsky

Copy link
Copy Markdown
Member

I'm not sure if this ever got backported. I'll trigger the bot.

@jkoritzinsky

Copy link
Copy Markdown
Member

/backport to release/10.0

@github-actionsgithub-actionsBot unlocked this conversation Jan 23, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Started backporting to release/10.0 (link to workflow run)

@github-actionsgithub-actionsBot locked as resolved and limited conversation to collaborators Jan 23, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-Tools-ILLink.NET linker development as well as trimming analyzerslinkable-frameworkIssues associated with delivering a linker friendly frameworkpartner-impactThis issue impacts a partner who needs to be kept updated

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

Trimmer doesn't keep TypeMapAssemblyTargetAttributes

6 participants

@jtschuster@Sergio0694@AaronRobinsonMSFT@jkoritzinsky@sbomer