[release/6.0-rc1] PhysicalFileProvider: Use active polling instead of FileSystemWatcher on iOS/tvOS #58165
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Backport of #58142 to release/6.0-rc1
/cc @akoeplinger
Customer Impact
In #57931 a customer reported that the FSEventStream APIs which are used to implement System.IO.FileSystem.Watcher aren't allowed on the App Store.
According to Apple's docs these APIs are only supported on macOS and Mac Catalyst.
Mark System.IO.FileSystem.Watcher as unsupported on iOS/tvOS and throw PNSE.
Switch PhysicalFileProvider to use active polling instead, like we do for Browser.
Without this PR any app that references System.IO.FileSystem.Watcher will be rejected by the App Store review process.
Testing
Verified that System.IO.FileSystem.Watcher.dll for iOS/tvOS no longer contains any P/Invokes to FSEventStream APIs and Microsoft.Extensions.FileProviders.Physical doesn't use it on these platforms anymore.
Risk
Low, this aligns iOS/tvOS with what we already do for Browser.
Fixes #57931