Skip to content

Merge 'main' into 'release_mdd'#1602

Merged
WardenGnaw merged 13 commits into
release_mddfrom
main
Jun 29, 2026
Merged

Merge 'main' into 'release_mdd'#1602
WardenGnaw merged 13 commits into
release_mddfrom
main

Conversation

@WardenGnaw

Copy link
Copy Markdown
Member

No description provided.

WardenGnaw and others added 13 commits June 16, 2026 16:18
This PR:
- Adds copilot-instructions.md with links to documentation
- Adds a READMD.md to the various DebugEngineHost implementations to make that more clear
- Fixes a bug with how `DependsOnTest` works which made it so that any test with that attribute couldn't be run with a test filter
Disable NullPointerNotExpandable test for cppvsdbg
…rn (#1579)

* Refactor Docker transport into shared base classes and strategy pattern

Extract shared container transport infrastructure to enable additional
container runtimes without duplicating Docker code.

Key changes:
- `ContainerTransportSettingsBase` shared abstract base eliminates
  duplication in transport settings (exe name, host flag, command format)
- `IContainerDiscoveryStrategy` interface with Docker implementation
  keeps runtime-specific logic out of the ViewModel
- `ContainerRuntimeType` enum threaded through port picker ->
  ConnectionManager -> dialog for future extensibility
- XAML bindings changed from static resources to ViewModel properties
  so labels can vary per runtime

No behavioral changes - Docker works exactly as before.

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

* Address review feedback: remove unused field, add type check

- Remove unused _runtimeType field from ContainerPickerViewModel
- Add explicit type check in DockerExecutionManager.CreateExecSettings
  instead of unsafe cast

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

* Address review: seal classes, use OrdinalIgnoreCase, remove defaults

- Seal DockerDiscoveryStrategy, DockerCommandSettings,
  DockerContainerTransportSettings, DockerExecSettings, DockerCopySettings
- Use StringComparison.OrdinalIgnoreCase for Windows check in
  AssignPlatforms instead of ToTitleCase + Contains
- Remove default parameter values for ContainerRuntimeType to force
  explicit runtime selection by callers

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

* Hoist CultureInfo allocation outside loop

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

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Add Podman container support for Attach to Process

Adds Podman as a container runtime option in the Attach to Process dialog,
enabling developers to discover and debug processes inside Podman containers.

- New PodmanConnection, PodmanContainerInstance, PodmanDiscoveryStrategy,
  PodmanExecutionManager, PodmanHelper, PodmanPortPicker, PodmanPortSupplier,
  and PodmanTransportSettings classes
- Renamed DockerContainerInstance to ContainerInstance (shared by both runtimes)
- Renamed DockerHostPrefixRegex/DockerHostPrefix to HostPrefixRegex/HostPrefix
- Registered Podman port supplier and CLSID in pkgdef files
- Added ContainerRuntimeType.Podman enum value
- Added Podman case in ContainerPickerViewModel and ConnectionManager

NOTE: The Podman port supplier also needs to be registered in vsdbg's
VsIntegration.pkgdef for full VS integration.

* Address PR comments
* Refactor Docker transport into shared base classes and strategy pattern (#1579)

* Refactor Docker transport into shared base classes and strategy pattern

Extract shared container transport infrastructure to enable additional
container runtimes without duplicating Docker code.

Key changes:
- `ContainerTransportSettingsBase` shared abstract base eliminates
  duplication in transport settings (exe name, host flag, command format)
- `IContainerDiscoveryStrategy` interface with Docker implementation
  keeps runtime-specific logic out of the ViewModel
- `ContainerRuntimeType` enum threaded through port picker ->
  ConnectionManager -> dialog for future extensibility
- XAML bindings changed from static resources to ViewModel properties
  so labels can vary per runtime

No behavioral changes - Docker works exactly as before.

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

* Address review feedback: remove unused field, add type check

- Remove unused _runtimeType field from ContainerPickerViewModel
- Add explicit type check in DockerExecutionManager.CreateExecSettings
  instead of unsafe cast

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

* Address review: seal classes, use OrdinalIgnoreCase, remove defaults

- Seal DockerDiscoveryStrategy, DockerCommandSettings,
  DockerContainerTransportSettings, DockerExecSettings, DockerCopySettings
- Use StringComparison.OrdinalIgnoreCase for Windows check in
  AssignPlatforms instead of ToTitleCase + Contains
- Remove default parameter values for ContainerRuntimeType to force
  explicit runtime selection by callers

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

* Hoist CultureInfo allocation outside loop

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

---------

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

* Add Podman container support for Attach to Process (#1582)

* Add Podman container support for Attach to Process

Adds Podman as a container runtime option in the Attach to Process dialog,
enabling developers to discover and debug processes inside Podman containers.

- New PodmanConnection, PodmanContainerInstance, PodmanDiscoveryStrategy,
  PodmanExecutionManager, PodmanHelper, PodmanPortPicker, PodmanPortSupplier,
  and PodmanTransportSettings classes
- Renamed DockerContainerInstance to ContainerInstance (shared by both runtimes)
- Renamed DockerHostPrefixRegex/DockerHostPrefix to HostPrefixRegex/HostPrefix
- Registered Podman port supplier and CLSID in pkgdef files
- Added ContainerRuntimeType.Podman enum value
- Added Podman case in ContainerPickerViewModel and ConnectionManager

NOTE: The Podman port supplier also needs to be registered in vsdbg's
VsIntegration.pkgdef for full VS integration.

* Address PR comments

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…peline

Fix DebuggerTesting Release Pipeline
This PR contains the work to enable nullable reference types for the first project in MIEngine -- the DebugEngineHost implementations.

**Changes:**
- Turn on `<Nullable>enable</Nullable>` for the DebugEngineHost projects and update APIs/fields to nullable annotations (`?`, `is null`, `is not null`, null-forgiving where needed).
- Add shared compatibility code for NRT on older frameworks (`NullableHelpers`, `NullableAttributes`) and flow annotations (e.g., `[MaybeNullWhen(false)]`).
- Set repo-wide C# language version to 12.0 and simplify shared source inclusion via `*.cs` globs + `<Link>`.
…20260627094707947 to main (#1597)

Juno: check in to lego/hb_d72c5677-3f00-4225-b18e-0a1e8a8f5f0e_20260627094707947.
…20260628094630378 to main (#1598)

Juno: check in to lego/hb_d72c5677-3f00-4225-b18e-0a1e8a8f5f0e_20260628094630378.
…20260629094703468 to main (#1599)

Juno: check in to lego/hb_d72c5677-3f00-4225-b18e-0a1e8a8f5f0e_20260629094703468.
This PR contains work to prepare for enabling nullable reference types in MICore. Changes:

- Correct two incorrect annotations in DebugEngineHost
- Refactor MICommandFactory to use constructor injection (readonly _debugger field)
- Move MICommandFactory.GetInstance() from DebuggedProcess to Debugger constructor
- Fix bug: firstException should only be set when null (was checking != null)
- Add null safety: _transport?.Close(), ThreadCreatedEvent?.Invoke, ThreadExitedEvent?.Invoke
- Add null throw in SendToTransport for null transport
- Use GetTargetProcessExitedReason() instead of raw _closeMessage
- Null-safe access to _initialErrors/_initializationLog in OnDebuggerProcessExit
- Pass EventArgs.Empty instead of null for DebuggerExitEvent
- Use pattern matching for IsModuleLoad check
- Make _commandLock readonly, initialize _lastCommandText
@WardenGnaw WardenGnaw merged commit f6639b3 into release_mdd Jun 29, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants