Skip to content

Gracefully handle and surface projects that fail to load, instead of failing the whole solution silently #3338

Description

@JakeRadMSFT

Summary

When a solution contains a project that cannot be evaluated or built in the current environment (e.g. a project targeting an OS-specific framework that isn't buildable on the host OS), the whole solution's design-time build is reported as failed and there is no clear, first-class surface telling the user which project failed and why. The rest of the solution is effectively degraded with no actionable signal.

Impact

  • One un-loadable project silently degrades the experience for the entire solution.
  • Users have no easy way to see which project failed or how to remediate it.
  • Common cross-platform case: a project targeting a Windows-only framework opened on macOS/Linux fails to resolve targeting packs, but the remediation (e.g. enabling cross-OS targeting) is not surfaced.

Requested behavior

  1. Load-what-you-can: projects that evaluate/build successfully should continue to provide full IntelliSense and be cached, independent of projects that fail.
  2. Visible partial load: projects that fail to load should be shown explicitly (e.g. a badge in the solution view and entries in the Problems surface) with the reason for the failure — never silently dropped.
  3. Actionable diagnostics: where the failure is a known/recoverable class (such as OS/framework-targeting incompatibility), include the specific remediation hint.
  4. Dependency awareness: if a loadable project depends on a failed one, indicate the degraded state rather than reporting a generic solution-wide failure.

Notes

  • Precedent: the full desktop IDE loads what it can and surfaces unloaded projects with a reason plus a reload affordance, rather than failing the whole solution.
  • Silent auto-exclusion is explicitly not desired — exclusion/degradation must be visible and explained.

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions