-
Notifications
You must be signed in to change notification settings - Fork 538
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
Support Visual Studio "Build Acceleration" #8581
Comments
I've taken a look at the ItemGroups, I'm not sure which ones we should be using. Most of them are about files which MSBuild does NOT know about. But in this case it does. I'll read through the source code and see what they are actually doing. |
I tested in VS 17.9 Preview 2.1 with this setting: This project also has some instructions to cause it: https://github.com/jonathanpeppers/MauiBuildAcceleration
|
After playing with this more, the current behavior is:
Had some conversation with the project system team, and I think we could try:
|
Odd I can't seem to repo on the latest Preview of VS... |
Fixes dotnet#8581 The Visual Studio FastUpdate check flags the Resource Designer assembly as newer than the output assembly (which it is). But it 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 ``` So lets remove it. We MUST remove the item from the @ReferencePathWithRefAssemblies ItemGroup BEFORE the CollectResolvedCompilationReferencesDesignTime target runs. This is because that target uses the Returns functionality. It turns out you cannot modify the ItemGroup that is being returned via a Returns 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.
PR is up #9042 |
Fixes dotnet#8581 The Visual Studio FastUpdate check flags the Resource Designer assembly as newer than the output assembly (which it is). But it 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 ``` So lets remove it. We MUST remove the item from the @ReferencePathWithRefAssemblies ItemGroup BEFORE the CollectResolvedCompilationReferencesDesignTime target runs. This is because that target uses the Returns functionality. It turns out you cannot modify the ItemGroup that is being returned via a Returns 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.
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
Android application type
.NET Android (net7.0-android, net8.0-android, etc.)
Affected platform version
.NET 8
Description
Context: https://github.com/dotnet/project-system/blob/main/docs/build-acceleration.md
Context: https://github.com/dotnet/project-system/blob/main/docs/up-to-date-check.md
Using Visual Studio 17.8, there is a new feature that skips running MSBuild "builds" in some cases during incremental builds.
This currently has an issue in Android projects:
There is a new item group we can add
_Microsoft.Android.Resource.Designer.dll
to that will solve this problem and improve build performance inside VS./cc @davidortinau
Steps to Reproduce
Did you find any workaround?
No
Relevant log output
No response
The text was updated successfully, but these errors were encountered: