Add a flag to hostfxr_resolve_sdk2_flags_t to silence error messages - #119729

Merged
jtschuster merged 2 commits into
dotnet:mainfrom
jtschuster:SilenceSdkResolutionErrors
Sep 15, 2025
Merged

Add a flag to hostfxr_resolve_sdk2_flags_t to silence error messages#119729
jtschuster merged 2 commits into
dotnet:mainfrom
jtschuster:SilenceSdkResolutionErrors

Conversation

@jtschuster

@jtschusterjtschuster commented Sep 15, 2025

Copy link
Copy Markdown
Member

See dotnet/sdk#50632 for context.

hostfxr_resolve_sdk2 will print error messages to stderr by default. We can add a flag to the enum to allow for silencing these errors when we want to try to resolve an sdk, but a failure to resolve shouldn't be surfaced to the console.

Alternatives:

  • Add a callback parameter for error messages the way we do for returning result paths. This could have a default to print to stderr and still be reasonable to backport.
  • Add a new boolean parameter to silence warnings. I think flags make more sense, especially since there's already a flags parameter.
  • Add a new API that only gets global.json information.

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 adds a do_not_print_errors flag to the hostfxr_resolve_sdk2 API to allow callers to suppress error messages when SDK resolution fails. This enables scenarios where SDK resolution is attempted but failures should not be surfaced to the console.

Key Changes:

  • Added a new do_not_print_errors flag (0x2) to the hostfxr_resolve_sdk2_flags_t enum
  • Modified the SDK resolver to respect this flag when printing error messages
  • Added comprehensive tests to verify the flag behavior in both success and failure scenarios

Reviewed Changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated 1 comment.

FileDescription
src/native/corehost/fxr/hostfxr.cppAdded do_not_print_errors flag to enum and passed it to the SDK resolver
src/installer/tests/HostActivation.Tests/NativeHostApis.csAdded test cases to verify the new flag works correctly
src/installer/tests/Assets/Projects/HostApiInvokerApp/HostFXR.csAdded do_not_print_errors flag to the C# enum definition
docs/design/features/hosting-layer-apis.mdUpdated API documentation to include the new flag

Comment threadsrc/installer/tests/HostActivation.Tests/NativeHostApis.cs Outdated
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to this area: @vitek-karas, @agocke, @VSadov
See info in area-owners.md if you want to be subscribed.

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

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 4 out of 4 changed files in this pull request and generated no new comments.

@marcpopMSFT

Copy link
Copy Markdown
Member

Do we know why hostfxr is reporting errors in 50632? In those cases, the SDK is actually found by the host so it feels like the primary bug is that the ResolveSdk api is failing (and secondarily, we don't want duplicate errors from the resolvesdk call and the host when the sdk truly can't be found). We actually don't call that api anywhere else in the SDK from .net core (we do call it in VS from teh resolver running in .net framework_). Everywhere else in core, we call GetAvailableSdks.

@jtschuster

jtschuster commented Sep 15, 2025

Copy link
Copy Markdown
MemberAuthor

I think it's expected that sdk resolution always fails in that call in the sdk. It's passing an empty string as the dotnet_exe argument and only is trying to get the global.json state.

@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.

Implementation LGTM as someone not familiar with the host. I wonder if there's a way to avoid introducing a new public flag, but this makes sense to me given the way the telemetry is currently implemented. I don't have context to tell whether that could easily be changed (for example to only emit the global.json telemetry when actually doing the SDK resolution).

@jtschuster
jtschuster merged commit fc5252e into dotnet:mainSep 15, 2025
155 checks passed
@jtschuster

Copy link
Copy Markdown
MemberAuthor

/backport to release/10.0

@github-actions

Copy link
Copy Markdown
Contributor

Started backporting to release/10.0: https://github.com/dotnet/runtime/actions/runs/17748919764

jtschuster added a commit that referenced this pull request Sep 30, 2025
…essages (#119729)" (#120231)
This reverts commit fc5252e (#119729). That change isn't required after sdk reverted the telemetry change, and it adds unnecessarily to the API. The best workaround for similar functionality would be to use hostfxr_set_error_writer to swallow the messages before the call to hostfxr_resolve_sdk2.
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Oct 30, 2025
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

6 participants

@jtschuster@marcpopMSFT@agocke@sbomer@teo-tsirpanis
, '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

Add a flag to hostfxr_resolve_sdk2_flags_t to silence error messages - #119729

Merged
jtschuster merged 2 commits into
dotnet:mainfrom
jtschuster:SilenceSdkResolutionErrors
Sep 15, 2025
Merged

Add a flag to hostfxr_resolve_sdk2_flags_t to silence error messages#119729
jtschuster merged 2 commits into
dotnet:mainfrom
jtschuster:SilenceSdkResolutionErrors

Conversation

@jtschuster

@jtschusterjtschuster commented Sep 15, 2025

Copy link
Copy Markdown
Member

See dotnet/sdk#50632 for context.

hostfxr_resolve_sdk2 will print error messages to stderr by default. We can add a flag to the enum to allow for silencing these errors when we want to try to resolve an sdk, but a failure to resolve shouldn't be surfaced to the console.

Alternatives:

  • Add a callback parameter for error messages the way we do for returning result paths. This could have a default to print to stderr and still be reasonable to backport.
  • Add a new boolean parameter to silence warnings. I think flags make more sense, especially since there's already a flags parameter.
  • Add a new API that only gets global.json information.

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 adds a do_not_print_errors flag to the hostfxr_resolve_sdk2 API to allow callers to suppress error messages when SDK resolution fails. This enables scenarios where SDK resolution is attempted but failures should not be surfaced to the console.

Key Changes:

  • Added a new do_not_print_errors flag (0x2) to the hostfxr_resolve_sdk2_flags_t enum
  • Modified the SDK resolver to respect this flag when printing error messages
  • Added comprehensive tests to verify the flag behavior in both success and failure scenarios

Reviewed Changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated 1 comment.

FileDescription
src/native/corehost/fxr/hostfxr.cppAdded do_not_print_errors flag to enum and passed it to the SDK resolver
src/installer/tests/HostActivation.Tests/NativeHostApis.csAdded test cases to verify the new flag works correctly
src/installer/tests/Assets/Projects/HostApiInvokerApp/HostFXR.csAdded do_not_print_errors flag to the C# enum definition
docs/design/features/hosting-layer-apis.mdUpdated API documentation to include the new flag

Comment threadsrc/installer/tests/HostActivation.Tests/NativeHostApis.cs Outdated
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to this area: @vitek-karas, @agocke, @VSadov
See info in area-owners.md if you want to be subscribed.

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

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 4 out of 4 changed files in this pull request and generated no new comments.

@marcpopMSFT

Copy link
Copy Markdown
Member

Do we know why hostfxr is reporting errors in 50632? In those cases, the SDK is actually found by the host so it feels like the primary bug is that the ResolveSdk api is failing (and secondarily, we don't want duplicate errors from the resolvesdk call and the host when the sdk truly can't be found). We actually don't call that api anywhere else in the SDK from .net core (we do call it in VS from teh resolver running in .net framework_). Everywhere else in core, we call GetAvailableSdks.

@jtschuster

jtschuster commented Sep 15, 2025

Copy link
Copy Markdown
MemberAuthor

I think it's expected that sdk resolution always fails in that call in the sdk. It's passing an empty string as the dotnet_exe argument and only is trying to get the global.json state.

@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.

Implementation LGTM as someone not familiar with the host. I wonder if there's a way to avoid introducing a new public flag, but this makes sense to me given the way the telemetry is currently implemented. I don't have context to tell whether that could easily be changed (for example to only emit the global.json telemetry when actually doing the SDK resolution).

@jtschuster
jtschuster merged commit fc5252e into dotnet:mainSep 15, 2025
155 checks passed
@jtschuster

Copy link
Copy Markdown
MemberAuthor

/backport to release/10.0

@github-actions

Copy link
Copy Markdown
Contributor

Started backporting to release/10.0: https://github.com/dotnet/runtime/actions/runs/17748919764

jtschuster added a commit that referenced this pull request Sep 30, 2025
…essages (#119729)" (#120231)
This reverts commit fc5252e (#119729). That change isn't required after sdk reverted the telemetry change, and it adds unnecessarily to the API. The best workaround for similar functionality would be to use hostfxr_set_error_writer to swallow the messages before the call to hostfxr_resolve_sdk2.
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Oct 30, 2025
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

6 participants

@jtschuster@marcpopMSFT@agocke@sbomer@teo-tsirpanis
, '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

Add a flag to hostfxr_resolve_sdk2_flags_t to silence error messages - #119729

Merged
jtschuster merged 2 commits into
dotnet:mainfrom
jtschuster:SilenceSdkResolutionErrors
Sep 15, 2025
Merged

Add a flag to hostfxr_resolve_sdk2_flags_t to silence error messages#119729
jtschuster merged 2 commits into
dotnet:mainfrom
jtschuster:SilenceSdkResolutionErrors

Conversation

@jtschuster

@jtschusterjtschuster commented Sep 15, 2025

Copy link
Copy Markdown
Member

See dotnet/sdk#50632 for context.

hostfxr_resolve_sdk2 will print error messages to stderr by default. We can add a flag to the enum to allow for silencing these errors when we want to try to resolve an sdk, but a failure to resolve shouldn't be surfaced to the console.

Alternatives:

  • Add a callback parameter for error messages the way we do for returning result paths. This could have a default to print to stderr and still be reasonable to backport.
  • Add a new boolean parameter to silence warnings. I think flags make more sense, especially since there's already a flags parameter.
  • Add a new API that only gets global.json information.

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 adds a do_not_print_errors flag to the hostfxr_resolve_sdk2 API to allow callers to suppress error messages when SDK resolution fails. This enables scenarios where SDK resolution is attempted but failures should not be surfaced to the console.

Key Changes:

  • Added a new do_not_print_errors flag (0x2) to the hostfxr_resolve_sdk2_flags_t enum
  • Modified the SDK resolver to respect this flag when printing error messages
  • Added comprehensive tests to verify the flag behavior in both success and failure scenarios

Reviewed Changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated 1 comment.

FileDescription
src/native/corehost/fxr/hostfxr.cppAdded do_not_print_errors flag to enum and passed it to the SDK resolver
src/installer/tests/HostActivation.Tests/NativeHostApis.csAdded test cases to verify the new flag works correctly
src/installer/tests/Assets/Projects/HostApiInvokerApp/HostFXR.csAdded do_not_print_errors flag to the C# enum definition
docs/design/features/hosting-layer-apis.mdUpdated API documentation to include the new flag

Comment threadsrc/installer/tests/HostActivation.Tests/NativeHostApis.cs Outdated
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to this area: @vitek-karas, @agocke, @VSadov
See info in area-owners.md if you want to be subscribed.

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

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 4 out of 4 changed files in this pull request and generated no new comments.

@marcpopMSFT

Copy link
Copy Markdown
Member

Do we know why hostfxr is reporting errors in 50632? In those cases, the SDK is actually found by the host so it feels like the primary bug is that the ResolveSdk api is failing (and secondarily, we don't want duplicate errors from the resolvesdk call and the host when the sdk truly can't be found). We actually don't call that api anywhere else in the SDK from .net core (we do call it in VS from teh resolver running in .net framework_). Everywhere else in core, we call GetAvailableSdks.

@jtschuster

jtschuster commented Sep 15, 2025

Copy link
Copy Markdown
MemberAuthor

I think it's expected that sdk resolution always fails in that call in the sdk. It's passing an empty string as the dotnet_exe argument and only is trying to get the global.json state.

@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.

Implementation LGTM as someone not familiar with the host. I wonder if there's a way to avoid introducing a new public flag, but this makes sense to me given the way the telemetry is currently implemented. I don't have context to tell whether that could easily be changed (for example to only emit the global.json telemetry when actually doing the SDK resolution).

@jtschuster
jtschuster merged commit fc5252e into dotnet:mainSep 15, 2025
155 checks passed
@jtschuster

Copy link
Copy Markdown
MemberAuthor

/backport to release/10.0

@github-actions

Copy link
Copy Markdown
Contributor

Started backporting to release/10.0: https://github.com/dotnet/runtime/actions/runs/17748919764

jtschuster added a commit that referenced this pull request Sep 30, 2025
…essages (#119729)" (#120231)
This reverts commit fc5252e (#119729). That change isn't required after sdk reverted the telemetry change, and it adds unnecessarily to the API. The best workaround for similar functionality would be to use hostfxr_set_error_writer to swallow the messages before the call to hostfxr_resolve_sdk2.
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Oct 30, 2025
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

6 participants

@jtschuster@marcpopMSFT@agocke@sbomer@teo-tsirpanis
, '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

Add a flag to hostfxr_resolve_sdk2_flags_t to silence error messages - #119729

Merged
jtschuster merged 2 commits into
dotnet:mainfrom
jtschuster:SilenceSdkResolutionErrors
Sep 15, 2025
Merged

Add a flag to hostfxr_resolve_sdk2_flags_t to silence error messages#119729
jtschuster merged 2 commits into
dotnet:mainfrom
jtschuster:SilenceSdkResolutionErrors

Conversation

@jtschuster

@jtschusterjtschuster commented Sep 15, 2025

Copy link
Copy Markdown
Member

See dotnet/sdk#50632 for context.

hostfxr_resolve_sdk2 will print error messages to stderr by default. We can add a flag to the enum to allow for silencing these errors when we want to try to resolve an sdk, but a failure to resolve shouldn't be surfaced to the console.

Alternatives:

  • Add a callback parameter for error messages the way we do for returning result paths. This could have a default to print to stderr and still be reasonable to backport.
  • Add a new boolean parameter to silence warnings. I think flags make more sense, especially since there's already a flags parameter.
  • Add a new API that only gets global.json information.

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 adds a do_not_print_errors flag to the hostfxr_resolve_sdk2 API to allow callers to suppress error messages when SDK resolution fails. This enables scenarios where SDK resolution is attempted but failures should not be surfaced to the console.

Key Changes:

  • Added a new do_not_print_errors flag (0x2) to the hostfxr_resolve_sdk2_flags_t enum
  • Modified the SDK resolver to respect this flag when printing error messages
  • Added comprehensive tests to verify the flag behavior in both success and failure scenarios

Reviewed Changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated 1 comment.

FileDescription
src/native/corehost/fxr/hostfxr.cppAdded do_not_print_errors flag to enum and passed it to the SDK resolver
src/installer/tests/HostActivation.Tests/NativeHostApis.csAdded test cases to verify the new flag works correctly
src/installer/tests/Assets/Projects/HostApiInvokerApp/HostFXR.csAdded do_not_print_errors flag to the C# enum definition
docs/design/features/hosting-layer-apis.mdUpdated API documentation to include the new flag

Comment threadsrc/installer/tests/HostActivation.Tests/NativeHostApis.cs Outdated
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to this area: @vitek-karas, @agocke, @VSadov
See info in area-owners.md if you want to be subscribed.

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

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 4 out of 4 changed files in this pull request and generated no new comments.

@marcpopMSFT

Copy link
Copy Markdown
Member

Do we know why hostfxr is reporting errors in 50632? In those cases, the SDK is actually found by the host so it feels like the primary bug is that the ResolveSdk api is failing (and secondarily, we don't want duplicate errors from the resolvesdk call and the host when the sdk truly can't be found). We actually don't call that api anywhere else in the SDK from .net core (we do call it in VS from teh resolver running in .net framework_). Everywhere else in core, we call GetAvailableSdks.

@jtschuster

jtschuster commented Sep 15, 2025

Copy link
Copy Markdown
MemberAuthor

I think it's expected that sdk resolution always fails in that call in the sdk. It's passing an empty string as the dotnet_exe argument and only is trying to get the global.json state.

@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.

Implementation LGTM as someone not familiar with the host. I wonder if there's a way to avoid introducing a new public flag, but this makes sense to me given the way the telemetry is currently implemented. I don't have context to tell whether that could easily be changed (for example to only emit the global.json telemetry when actually doing the SDK resolution).

@jtschuster
jtschuster merged commit fc5252e into dotnet:mainSep 15, 2025
155 checks passed
@jtschuster

Copy link
Copy Markdown
MemberAuthor

/backport to release/10.0

@github-actions

Copy link
Copy Markdown
Contributor

Started backporting to release/10.0: https://github.com/dotnet/runtime/actions/runs/17748919764

jtschuster added a commit that referenced this pull request Sep 30, 2025
…essages (#119729)" (#120231)
This reverts commit fc5252e (#119729). That change isn't required after sdk reverted the telemetry change, and it adds unnecessarily to the API. The best workaround for similar functionality would be to use hostfxr_set_error_writer to swallow the messages before the call to hostfxr_resolve_sdk2.
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Oct 30, 2025
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

6 participants

@jtschuster@marcpopMSFT@agocke@sbomer@teo-tsirpanis
, '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

Add a flag to hostfxr_resolve_sdk2_flags_t to silence error messages - #119729

Merged
jtschuster merged 2 commits into
dotnet:mainfrom
jtschuster:SilenceSdkResolutionErrors
Sep 15, 2025
Merged

Add a flag to hostfxr_resolve_sdk2_flags_t to silence error messages#119729
jtschuster merged 2 commits into
dotnet:mainfrom
jtschuster:SilenceSdkResolutionErrors

Conversation

@jtschuster

@jtschusterjtschuster commented Sep 15, 2025

Copy link
Copy Markdown
Member

See dotnet/sdk#50632 for context.

hostfxr_resolve_sdk2 will print error messages to stderr by default. We can add a flag to the enum to allow for silencing these errors when we want to try to resolve an sdk, but a failure to resolve shouldn't be surfaced to the console.

Alternatives:

  • Add a callback parameter for error messages the way we do for returning result paths. This could have a default to print to stderr and still be reasonable to backport.
  • Add a new boolean parameter to silence warnings. I think flags make more sense, especially since there's already a flags parameter.
  • Add a new API that only gets global.json information.

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 adds a do_not_print_errors flag to the hostfxr_resolve_sdk2 API to allow callers to suppress error messages when SDK resolution fails. This enables scenarios where SDK resolution is attempted but failures should not be surfaced to the console.

Key Changes:

  • Added a new do_not_print_errors flag (0x2) to the hostfxr_resolve_sdk2_flags_t enum
  • Modified the SDK resolver to respect this flag when printing error messages
  • Added comprehensive tests to verify the flag behavior in both success and failure scenarios

Reviewed Changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated 1 comment.

FileDescription
src/native/corehost/fxr/hostfxr.cppAdded do_not_print_errors flag to enum and passed it to the SDK resolver
src/installer/tests/HostActivation.Tests/NativeHostApis.csAdded test cases to verify the new flag works correctly
src/installer/tests/Assets/Projects/HostApiInvokerApp/HostFXR.csAdded do_not_print_errors flag to the C# enum definition
docs/design/features/hosting-layer-apis.mdUpdated API documentation to include the new flag

Comment threadsrc/installer/tests/HostActivation.Tests/NativeHostApis.cs Outdated
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to this area: @vitek-karas, @agocke, @VSadov
See info in area-owners.md if you want to be subscribed.

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

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 4 out of 4 changed files in this pull request and generated no new comments.

@marcpopMSFT

Copy link
Copy Markdown
Member

Do we know why hostfxr is reporting errors in 50632? In those cases, the SDK is actually found by the host so it feels like the primary bug is that the ResolveSdk api is failing (and secondarily, we don't want duplicate errors from the resolvesdk call and the host when the sdk truly can't be found). We actually don't call that api anywhere else in the SDK from .net core (we do call it in VS from teh resolver running in .net framework_). Everywhere else in core, we call GetAvailableSdks.

@jtschuster

jtschuster commented Sep 15, 2025

Copy link
Copy Markdown
MemberAuthor

I think it's expected that sdk resolution always fails in that call in the sdk. It's passing an empty string as the dotnet_exe argument and only is trying to get the global.json state.

@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.

Implementation LGTM as someone not familiar with the host. I wonder if there's a way to avoid introducing a new public flag, but this makes sense to me given the way the telemetry is currently implemented. I don't have context to tell whether that could easily be changed (for example to only emit the global.json telemetry when actually doing the SDK resolution).

@jtschuster
jtschuster merged commit fc5252e into dotnet:mainSep 15, 2025
155 checks passed
@jtschuster

Copy link
Copy Markdown
MemberAuthor

/backport to release/10.0

@github-actions

Copy link
Copy Markdown
Contributor

Started backporting to release/10.0: https://github.com/dotnet/runtime/actions/runs/17748919764

jtschuster added a commit that referenced this pull request Sep 30, 2025
…essages (#119729)" (#120231)
This reverts commit fc5252e (#119729). That change isn't required after sdk reverted the telemetry change, and it adds unnecessarily to the API. The best workaround for similar functionality would be to use hostfxr_set_error_writer to swallow the messages before the call to hostfxr_resolve_sdk2.
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Oct 30, 2025
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

6 participants

@jtschuster@marcpopMSFT@agocke@sbomer@teo-tsirpanis
, '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

Add a flag to hostfxr_resolve_sdk2_flags_t to silence error messages - #119729

Merged
jtschuster merged 2 commits into
dotnet:mainfrom
jtschuster:SilenceSdkResolutionErrors
Sep 15, 2025
Merged

Add a flag to hostfxr_resolve_sdk2_flags_t to silence error messages#119729
jtschuster merged 2 commits into
dotnet:mainfrom
jtschuster:SilenceSdkResolutionErrors

Conversation

@jtschuster

@jtschusterjtschuster commented Sep 15, 2025

Copy link
Copy Markdown
Member

See dotnet/sdk#50632 for context.

hostfxr_resolve_sdk2 will print error messages to stderr by default. We can add a flag to the enum to allow for silencing these errors when we want to try to resolve an sdk, but a failure to resolve shouldn't be surfaced to the console.

Alternatives:

  • Add a callback parameter for error messages the way we do for returning result paths. This could have a default to print to stderr and still be reasonable to backport.
  • Add a new boolean parameter to silence warnings. I think flags make more sense, especially since there's already a flags parameter.
  • Add a new API that only gets global.json information.

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 adds a do_not_print_errors flag to the hostfxr_resolve_sdk2 API to allow callers to suppress error messages when SDK resolution fails. This enables scenarios where SDK resolution is attempted but failures should not be surfaced to the console.

Key Changes:

  • Added a new do_not_print_errors flag (0x2) to the hostfxr_resolve_sdk2_flags_t enum
  • Modified the SDK resolver to respect this flag when printing error messages
  • Added comprehensive tests to verify the flag behavior in both success and failure scenarios

Reviewed Changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated 1 comment.

FileDescription
src/native/corehost/fxr/hostfxr.cppAdded do_not_print_errors flag to enum and passed it to the SDK resolver
src/installer/tests/HostActivation.Tests/NativeHostApis.csAdded test cases to verify the new flag works correctly
src/installer/tests/Assets/Projects/HostApiInvokerApp/HostFXR.csAdded do_not_print_errors flag to the C# enum definition
docs/design/features/hosting-layer-apis.mdUpdated API documentation to include the new flag

Comment threadsrc/installer/tests/HostActivation.Tests/NativeHostApis.cs Outdated
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to this area: @vitek-karas, @agocke, @VSadov
See info in area-owners.md if you want to be subscribed.

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

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 4 out of 4 changed files in this pull request and generated no new comments.

@marcpopMSFT

Copy link
Copy Markdown
Member

Do we know why hostfxr is reporting errors in 50632? In those cases, the SDK is actually found by the host so it feels like the primary bug is that the ResolveSdk api is failing (and secondarily, we don't want duplicate errors from the resolvesdk call and the host when the sdk truly can't be found). We actually don't call that api anywhere else in the SDK from .net core (we do call it in VS from teh resolver running in .net framework_). Everywhere else in core, we call GetAvailableSdks.

@jtschuster

jtschuster commented Sep 15, 2025

Copy link
Copy Markdown
MemberAuthor

I think it's expected that sdk resolution always fails in that call in the sdk. It's passing an empty string as the dotnet_exe argument and only is trying to get the global.json state.

@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.

Implementation LGTM as someone not familiar with the host. I wonder if there's a way to avoid introducing a new public flag, but this makes sense to me given the way the telemetry is currently implemented. I don't have context to tell whether that could easily be changed (for example to only emit the global.json telemetry when actually doing the SDK resolution).

@jtschuster
jtschuster merged commit fc5252e into dotnet:mainSep 15, 2025
155 checks passed
@jtschuster

Copy link
Copy Markdown
MemberAuthor

/backport to release/10.0

@github-actions

Copy link
Copy Markdown
Contributor

Started backporting to release/10.0: https://github.com/dotnet/runtime/actions/runs/17748919764

jtschuster added a commit that referenced this pull request Sep 30, 2025
…essages (#119729)" (#120231)
This reverts commit fc5252e (#119729). That change isn't required after sdk reverted the telemetry change, and it adds unnecessarily to the API. The best workaround for similar functionality would be to use hostfxr_set_error_writer to swallow the messages before the call to hostfxr_resolve_sdk2.
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Oct 30, 2025
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

6 participants

@jtschuster@marcpopMSFT@agocke@sbomer@teo-tsirpanis
, '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

Add a flag to hostfxr_resolve_sdk2_flags_t to silence error messages - #119729

Merged
jtschuster merged 2 commits into
dotnet:mainfrom
jtschuster:SilenceSdkResolutionErrors
Sep 15, 2025
Merged

Add a flag to hostfxr_resolve_sdk2_flags_t to silence error messages#119729
jtschuster merged 2 commits into
dotnet:mainfrom
jtschuster:SilenceSdkResolutionErrors

Conversation

@jtschuster

@jtschusterjtschuster commented Sep 15, 2025

Copy link
Copy Markdown
Member

See dotnet/sdk#50632 for context.

hostfxr_resolve_sdk2 will print error messages to stderr by default. We can add a flag to the enum to allow for silencing these errors when we want to try to resolve an sdk, but a failure to resolve shouldn't be surfaced to the console.

Alternatives:

  • Add a callback parameter for error messages the way we do for returning result paths. This could have a default to print to stderr and still be reasonable to backport.
  • Add a new boolean parameter to silence warnings. I think flags make more sense, especially since there's already a flags parameter.
  • Add a new API that only gets global.json information.

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 adds a do_not_print_errors flag to the hostfxr_resolve_sdk2 API to allow callers to suppress error messages when SDK resolution fails. This enables scenarios where SDK resolution is attempted but failures should not be surfaced to the console.

Key Changes:

  • Added a new do_not_print_errors flag (0x2) to the hostfxr_resolve_sdk2_flags_t enum
  • Modified the SDK resolver to respect this flag when printing error messages
  • Added comprehensive tests to verify the flag behavior in both success and failure scenarios

Reviewed Changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated 1 comment.

FileDescription
src/native/corehost/fxr/hostfxr.cppAdded do_not_print_errors flag to enum and passed it to the SDK resolver
src/installer/tests/HostActivation.Tests/NativeHostApis.csAdded test cases to verify the new flag works correctly
src/installer/tests/Assets/Projects/HostApiInvokerApp/HostFXR.csAdded do_not_print_errors flag to the C# enum definition
docs/design/features/hosting-layer-apis.mdUpdated API documentation to include the new flag

Comment threadsrc/installer/tests/HostActivation.Tests/NativeHostApis.cs Outdated
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to this area: @vitek-karas, @agocke, @VSadov
See info in area-owners.md if you want to be subscribed.

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

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 4 out of 4 changed files in this pull request and generated no new comments.

@marcpopMSFT

Copy link
Copy Markdown
Member

Do we know why hostfxr is reporting errors in 50632? In those cases, the SDK is actually found by the host so it feels like the primary bug is that the ResolveSdk api is failing (and secondarily, we don't want duplicate errors from the resolvesdk call and the host when the sdk truly can't be found). We actually don't call that api anywhere else in the SDK from .net core (we do call it in VS from teh resolver running in .net framework_). Everywhere else in core, we call GetAvailableSdks.

@jtschuster

jtschuster commented Sep 15, 2025

Copy link
Copy Markdown
MemberAuthor

I think it's expected that sdk resolution always fails in that call in the sdk. It's passing an empty string as the dotnet_exe argument and only is trying to get the global.json state.

@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.

Implementation LGTM as someone not familiar with the host. I wonder if there's a way to avoid introducing a new public flag, but this makes sense to me given the way the telemetry is currently implemented. I don't have context to tell whether that could easily be changed (for example to only emit the global.json telemetry when actually doing the SDK resolution).

@jtschuster
jtschuster merged commit fc5252e into dotnet:mainSep 15, 2025
155 checks passed
@jtschuster

Copy link
Copy Markdown
MemberAuthor

/backport to release/10.0

@github-actions

Copy link
Copy Markdown
Contributor

Started backporting to release/10.0: https://github.com/dotnet/runtime/actions/runs/17748919764

jtschuster added a commit that referenced this pull request Sep 30, 2025
…essages (#119729)" (#120231)
This reverts commit fc5252e (#119729). That change isn't required after sdk reverted the telemetry change, and it adds unnecessarily to the API. The best workaround for similar functionality would be to use hostfxr_set_error_writer to swallow the messages before the call to hostfxr_resolve_sdk2.
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Oct 30, 2025
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

6 participants

@jtschuster@marcpopMSFT@agocke@sbomer@teo-tsirpanis
, '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

Add a flag to hostfxr_resolve_sdk2_flags_t to silence error messages - #119729

Merged
jtschuster merged 2 commits into
dotnet:mainfrom
jtschuster:SilenceSdkResolutionErrors
Sep 15, 2025
Merged

Add a flag to hostfxr_resolve_sdk2_flags_t to silence error messages#119729
jtschuster merged 2 commits into
dotnet:mainfrom
jtschuster:SilenceSdkResolutionErrors

Conversation

@jtschuster

@jtschusterjtschuster commented Sep 15, 2025

Copy link
Copy Markdown
Member

See dotnet/sdk#50632 for context.

hostfxr_resolve_sdk2 will print error messages to stderr by default. We can add a flag to the enum to allow for silencing these errors when we want to try to resolve an sdk, but a failure to resolve shouldn't be surfaced to the console.

Alternatives:

  • Add a callback parameter for error messages the way we do for returning result paths. This could have a default to print to stderr and still be reasonable to backport.
  • Add a new boolean parameter to silence warnings. I think flags make more sense, especially since there's already a flags parameter.
  • Add a new API that only gets global.json information.

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 adds a do_not_print_errors flag to the hostfxr_resolve_sdk2 API to allow callers to suppress error messages when SDK resolution fails. This enables scenarios where SDK resolution is attempted but failures should not be surfaced to the console.

Key Changes:

  • Added a new do_not_print_errors flag (0x2) to the hostfxr_resolve_sdk2_flags_t enum
  • Modified the SDK resolver to respect this flag when printing error messages
  • Added comprehensive tests to verify the flag behavior in both success and failure scenarios

Reviewed Changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated 1 comment.

FileDescription
src/native/corehost/fxr/hostfxr.cppAdded do_not_print_errors flag to enum and passed it to the SDK resolver
src/installer/tests/HostActivation.Tests/NativeHostApis.csAdded test cases to verify the new flag works correctly
src/installer/tests/Assets/Projects/HostApiInvokerApp/HostFXR.csAdded do_not_print_errors flag to the C# enum definition
docs/design/features/hosting-layer-apis.mdUpdated API documentation to include the new flag

Comment threadsrc/installer/tests/HostActivation.Tests/NativeHostApis.cs Outdated
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to this area: @vitek-karas, @agocke, @VSadov
See info in area-owners.md if you want to be subscribed.

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

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 4 out of 4 changed files in this pull request and generated no new comments.

@marcpopMSFT

Copy link
Copy Markdown
Member

Do we know why hostfxr is reporting errors in 50632? In those cases, the SDK is actually found by the host so it feels like the primary bug is that the ResolveSdk api is failing (and secondarily, we don't want duplicate errors from the resolvesdk call and the host when the sdk truly can't be found). We actually don't call that api anywhere else in the SDK from .net core (we do call it in VS from teh resolver running in .net framework_). Everywhere else in core, we call GetAvailableSdks.

@jtschuster

jtschuster commented Sep 15, 2025

Copy link
Copy Markdown
MemberAuthor

I think it's expected that sdk resolution always fails in that call in the sdk. It's passing an empty string as the dotnet_exe argument and only is trying to get the global.json state.

@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.

Implementation LGTM as someone not familiar with the host. I wonder if there's a way to avoid introducing a new public flag, but this makes sense to me given the way the telemetry is currently implemented. I don't have context to tell whether that could easily be changed (for example to only emit the global.json telemetry when actually doing the SDK resolution).

@jtschuster
jtschuster merged commit fc5252e into dotnet:mainSep 15, 2025
155 checks passed
@jtschuster

Copy link
Copy Markdown
MemberAuthor

/backport to release/10.0

@github-actions

Copy link
Copy Markdown
Contributor

Started backporting to release/10.0: https://github.com/dotnet/runtime/actions/runs/17748919764

jtschuster added a commit that referenced this pull request Sep 30, 2025
…essages (#119729)" (#120231)
This reverts commit fc5252e (#119729). That change isn't required after sdk reverted the telemetry change, and it adds unnecessarily to the API. The best workaround for similar functionality would be to use hostfxr_set_error_writer to swallow the messages before the call to hostfxr_resolve_sdk2.
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Oct 30, 2025
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

6 participants

@jtschuster@marcpopMSFT@agocke@sbomer@teo-tsirpanis