Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[Xamarin.Android.Build.Tasks] Support VS "Build Acceleration" (#9042)
Fixes: #8581 Fixes: https://dev.azure.com/devdiv/DevDiv/_workitems/edit/2051915 Context: https://github.com/dotnet/project-system/blob/9c9efad1d986e38232cbd74bec9dbd794883a91c/docs/build-acceleration.md Context: https://github.com/dotnet/project-system/blob/dd9431b535a6158060d7ab64597276eb2c354aab/docs/design-time-builds.md#targets-that-run-during-design-time-builds Context: https://github.com/dotnet/project-system/blob/dd9431b535a6158060d7ab64597276eb2c354aab/docs/up-to-date-check.md#default-inputs-and-outputs Context: https://github.com/dotnet/project-system/blob/dd9431b535a6158060d7ab64597276eb2c354aab/src/Microsoft.VisualStudio.ProjectSystem.Managed/ProjectSystem/DesignTimeTargets/Microsoft.Managed.DesignTime.targets#L448-L449 Context: dc3ccf2 The Visual Studio Fast Up-to-Date Check (FUTDC) flags `_Microsoft.Android.Resource.Designer.dll` (dc3ccf2) as newer than the output assembly (which it is). But this flagging also causes it to incorrectly think the build is out of date. WARNING: Potential build performance issue in 'Foo.csproj'. The project does not appear up-to-date after a successful build: Input ResolvedCompilationReference item 'obj\Debug\net8.0-android\_Microsoft.Android.Resource.Designer.dll' (2023-12-11 11:34:12.546) has been modified since the last successful build started. Fix this by removing `_Microsoft.Android.Resource.Designer.dll` from the list of files checked. To do so, we *must* remove the item from the `@(ReferencePathWithRefAssemblies)` item group *before* the [`CollectResolvedCompilationReferencesDesignTime`][0] target runs. This is because that Target uses the [`Returns` attribute][1]; it turns out you cannot modify the ItemGroup that is being returned via the `Returns` attribute on a target. Unfortunately there isn't a way to unit test this since the Fast Update check *only* runs in Visual Studio. The targets do not even exist on the command line. [0]: https://github.com/dotnet/project-system/blob/dd9431b535a6158060d7ab64597276eb2c354aab/src/Microsoft.VisualStudio.ProjectSystem.Managed/ProjectSystem/DesignTimeTargets/Microsoft.Managed.DesignTime.targets#L448-L449 [1]: https://learn.microsoft.com/visualstudio/msbuild/target-element-msbuild?view=vs-2022
- Loading branch information