Skip to content

Conversation

@tmat
Copy link
Member

@tmat tmat commented Sep 6, 2025

Microsoft Reviewers: Open in CodeFlow

Replaces the use of default DeltaApplier implemented in WebTools with one from dotnet-watch (DefaultHotReloadClient type shared via Microsoft.DotNet.HotReload.Client source package).
The Hot Reload client is wrapped in DeltaApplier type that implements the existing IDeltaApplier interface.

Adds a new interface IProjectHotReloadSessionWebAssemblyCallback for Web Project to implement. Once implemented the Hot Reload session implementation will switch to using dotnet-watch WebAssemblyHotReloadClient as the underlying implementation of the DeltaApplier for WASM app.

Adds AbstractBrowserRefreshServerAccessor that exposes Browser Refresh server implementation from Microsoft.DotNet.HotReload.Client source package to WebTools, so that we can replace the implementation in WebTools.

Adds Browser Refresh middleware (package Microsoft.DotNet.HotReload.Web.Middleware published by dotnet/sdk) to Managed Project System VSIX to distribute with VS. Once we switch WebTools to AbstractBrowserRefreshServerAccessor it will stop using the middleware from the SDK and switch to the middleware included in Project System VSIX. This will allow us to version the client (IDE) and the middleware together instead of having to support all combinations of VS and SDK versions.

Contributes to
https://devdiv.visualstudio.com/DevDiv/_workitems/edit/2398434
https://devdiv.visualstudio.com/DevDiv/_workitems/edit/2398433
https://devdiv.visualstudio.com/DevDiv/_workitems/edit/2398432

@tmat tmat force-pushed the DeltaApplier branch 5 times, most recently from ad8a1af to 9f0b5ec Compare September 16, 2025 19:08
@tmat tmat changed the title Delta applier Switch to dotnet-watch delta appliers Sep 16, 2025
@tmat tmat marked this pull request as ready for review September 16, 2025 19:30
@tmat tmat requested a review from a team as a code owner September 16, 2025 19:30
@tmat
Copy link
Member Author

tmat commented Sep 16, 2025

@LittleLittleCloud @drewnoakes ptal

@drewnoakes
Copy link
Member

LGTM though will defer to @LittleLittleCloud for final sign off.

@LittleLittleCloud LittleLittleCloud merged commit 1d06808 into dotnet:main Sep 17, 2025
5 checks passed
@dotnet-policy-service dotnet-policy-service bot added this to the 18.0 milestone Sep 17, 2025
@tmat tmat deleted the DeltaApplier branch September 17, 2025 17:39
LittleLittleCloud added a commit that referenced this pull request Sep 26, 2025
* Add URL for package web UI to NuGet.config file

* Document how to specify the project type GUID in SLNX

A customer recently filed a ticket to which this document was a good response. However, in reviewing it, I noticed there was no mention of the newer SLNX file format. This adds information for such cases.

* Revert "Revert "Use metadata to control when to load dynamic components.""

* Clean up IProjectHotReloadAgent and IProjectHotReloadSession APIs (#9741)

* Prevent launch settings provider to capture and depend on main thread
when it is initialized by another extension.

Basically, when external code accessess its dataflow block on UI thread and initialize the object, the lazy compuation would try to resume on UI thread, which leads performance/deadlock problems to appear.

* remove underscore

* Disallow properties in rules to start with underscore

The project data caches don't include any properties that start with underscores, as these are considered 'private' and are therefore ignored to save cache space. Having a rule that uses a private property means that the consumer will see different data depending upon whether it comes from MSBuild or from a cache. The difference in behaviour would very likely cause downstream problems, so we should disallow it.

* Revert "Allow Razor cohosting to work with non-Razor SDK projects"

* Remove explicit SourceLink package refs (#9755)

* Remove explicit SourceLink package refs

* Add Test target back

* Whitespace

---------

Co-authored-by: Drew Noakes <[email protected]>

* Remove unused link definitions

* Remove list of VS versions

Qualifying that this applies to SDK-style projects is enough.

* Remove broken link

* Remove unused square brackets

* Update milestone to 18.0

* Remove codeflow links from PRs

* Remove non-existant branches

* Update Xunit to 2.9.0

* Add xunit.runner.json

* Enable detailed console log

* Skip failing tests

* Eliminate Verify.Xunit

* Feedback

* Add inventory metadata

* Use the new INotifyProcess1800 API from debugger (#9763)

* Add Microsoft.VisualStudio.Debugger.Interop.18.0 package references and enhance debugging interfaces

* Enhance OnAfterLaunchAsync method to include debug launch settings and improve Hot Reload support checks

* Refactor LaunchProfilesDebugLaunchProvider and ProjectLaunchTargetsProvider for improved process management and Hot Reload state handling

* Refactor Hot Reload session management and update interfaces for improved debugging support

* Add IDebugProfileLaunchTargetsProvider5 interface for enhanced launch process handling and remove unused code from ProjectLaunchTargetsProvider

* Refactor OnAfterLaunchAsync method to return completed task for improved performance

* Refactor LaunchProfilesDebugLaunchProvider and ProjectLaunchTargetsProvider to improve code clarity and remove unused dependencies

* Refactor IDebugProfileLaunchTargetsProvider5 interface and ProjectHotReloadSessionManager class to improve clarity and remove unused dependencies

* Refactor IProjectHotReloadSessionManager and ProjectHotReloadSessionManager to mark obsolete methods and improve session management; add unit tests for Hot Reload session functionality

* Refactor IDebugProfileLaunchTargetsProvider5 and related classes to improve documentation and remove obsolete methods; update session state handling in ProjectHotReloadSessionManager and enhance unit tests for clarity and maintainability

* Refactor IDebugProfileLaunchTargetsProvider5 documentation to simplify method references and update Public API declaration for OnAfterLaunchAsync

* Refactor ProjectHotReloadSessionManager to improve session state handling by optimizing the removal of active session states and updating the hot reload state notification logic.

* Refactor IDebugProfileLaunchTargetsProvider5 and LaunchProfilesDebugLaunchProvider to correct documentation and improve session handling; update IProjectHotReloadSessionManagerFactory for method signature consistency.

* Switch to dotnet-watch delta appliers (#9758)

* Include HotReload web middleware and switch to shared implementation of delta appliers

* Update package tests

* Update to 10.0.100-rc.2.25466.104

* Feedback

* Merge

* Update HotReload packages and remove workaround (#9768)

* Do not NGEN .NET assemblies (#9769)

* Change NgenPriority from 1 to 2 in csproj

* don't assume pending session to be null (#9770)

* Add GitHub Copilot instructions for dotnet/project-system repository (#9778)

* Initial plan

* Create comprehensive GitHub Copilot instructions for project-system repo

Co-authored-by: drewnoakes <[email protected]>

* Clean up repository - remove temporary files

Co-authored-by: drewnoakes <[email protected]>

---------

Co-authored-by: copilot-swe-agent[bot] <[email protected]>
Co-authored-by: drewnoakes <[email protected]>

* Integrate into new Visual Studio retargeting UI (#9771)

This change integrates into the new retargeting UI in Visual Studio 2026.

When a global.json is present and it is not the latest version in that feature band we will supply retargeting information to Visual Studio to allow the customer to visit the download link to install a suggested SDK.

At this time the suggestion is confined to the same Major.Minor sdk which was specified in the global.json. Note that we will make this suggest even if the customer has a later SDK version globally installed.

We do not, as of this version update global.json or initiate the download or install.

* Remove ReleaseVersion from interface definition and ProjectRetargetHandler to avoid premature image load of assembly (#9779)

We will only use this internally in DotNetReleasesProvider

---------

Co-authored-by: Drew Noakes <[email protected]>
Co-authored-by: Tomáš Matoušek <[email protected]>
Co-authored-by: Lifeng Lu <[email protected]>
Co-authored-by: Lifeng Lu <[email protected]>
Co-authored-by: Nikolche Kolev <[email protected]>
Co-authored-by: Adam Ratzman <[email protected]>
Co-authored-by: Tomas Matousek <[email protected]>
Co-authored-by: Alex Delepine <[email protected]>
Co-authored-by: Copilot <[email protected]>
Co-authored-by: drewnoakes <[email protected]>
Co-authored-by: Phil Henning <[email protected]>
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