[PR #11806] [MERGED] Fixes the wapproj fast-up-to-date check #28734

Open
opened 2026-01-31 09:30:26 +00:00 by claunia · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/microsoft/terminal/pull/11806
Author: @zadjii-msft
Created: 11/22/2021
Status: Merged
Merged: 11/23/2021
Merged by: @undefined

Base: mainHead: dev/migrie/eim/fast-up-to-date-wapproj


📝 Commits (1)

  • 9333eda This really fixes the wapproj f5 scenario

📊 Changes

4 files changed (+70 additions, -6 deletions)

View changed files

📝 scratch/ScratchIslandApp/WindowExe/WindowExe.vcxproj (+17 -0)
📝 src/cascadia/CascadiaPackage/CascadiaPackage.wapproj (+19 -6)
📝 src/cascadia/TerminalAzBridge/TerminalAzBridge.vcxproj (+17 -0)
📝 src/cascadia/WindowsTerminal/WindowsTerminal.vcxproj (+17 -0)

📄 Description

I'm working on making the FastUpToDate check in Vs work for the Terminal project. This is one of a few PRs in this area.

FastUpToDate lets vs check quickly determine that it doesn't need to do anything for a given project.

However, a few of our projects don't produce all the right artifacts, or check too many things, and this eventually causes the wapproj to rebuild, EVERY TIME YOU F5 in VS.

This third PR deals with the Actual fast up to date check for the CascadiaPackage.wapproj. When #11804, #11805 and this PR are all merged, you should be able to just F5 the Terminal in VS, and then change NOTHING, and F5 it again, without doing a build at all.

The wapproj GetResolvedWinMD target tries to get a winmd from every cppwinrt
executable we put in the package. But we DON'T produce a winmd. This makes the
FastUpToDate check fail every time, and leads to the whole wapproj build
running even if you're just f5'ing the package. EVEN AFTER A SUCCESSFUL BUILD.

Setting GenerateWindowsMetadata=false is enough to tell the build system that
we don't produce one, and get it off our backs.

teams chat where we figured this out

[3:38 PM] Dustin Howett
however, that's not the only thing that "GetTargetPath" checks.

[3:38 PM] Dustin Howett
oh yeah more info: wapproj calls GetTargetPath on all projects it references

[3:38 PM] Dustin Howett
when it calls GTP on WindowsTerminal.vcxproj it is getting back a winmd (!)

[3:39 PM] Dustin Howett
here's the magic

[3:39 PM] Dustin Howett
image

[3:39 PM] Dustin Howett
it checks if any Link items specify GenerateWindowsMetadata

image


🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/microsoft/terminal/pull/11806 **Author:** [@zadjii-msft](https://github.com/zadjii-msft) **Created:** 11/22/2021 **Status:** ✅ Merged **Merged:** 11/23/2021 **Merged by:** [@undefined](undefined) **Base:** `main` ← **Head:** `dev/migrie/eim/fast-up-to-date-wapproj` --- ### 📝 Commits (1) - [`9333eda`](https://github.com/microsoft/terminal/commit/9333eda84b249221513d924ef32ed10449630e8c) This _really_ fixes the wapproj f5 scenario ### 📊 Changes **4 files changed** (+70 additions, -6 deletions) <details> <summary>View changed files</summary> 📝 `scratch/ScratchIslandApp/WindowExe/WindowExe.vcxproj` (+17 -0) 📝 `src/cascadia/CascadiaPackage/CascadiaPackage.wapproj` (+19 -6) 📝 `src/cascadia/TerminalAzBridge/TerminalAzBridge.vcxproj` (+17 -0) 📝 `src/cascadia/WindowsTerminal/WindowsTerminal.vcxproj` (+17 -0) </details> ### 📄 Description I'm working on making the FastUpToDate check in Vs work for the Terminal project. This is one of a few PRs in this area. FastUpToDate lets vs check quickly determine that it doesn't need to do anything for a given project. However, a few of our projects don't produce all the right artifacts, or check too many things, and this eventually causes the `wapproj` to rebuild, EVERY TIME YOU F5 in VS. This third PR deals with the Actual fast up to date check for the CascadiaPackage.wapproj. When #11804, #11805 and this PR are all merged, you should be able to just F5 the Terminal in VS, and then change NOTHING, and F5 it again, without doing a build at all. The wapproj `GetResolvedWinMD` target tries to get a winmd from every cppwinrt executable we put in the package. But we DON'T produce a winmd. This makes the FastUpToDate check fail every time, and leads to the whole wapproj build running even if you're just f5'ing the package. EVEN AFTER A SUCCESSFUL BUILD. Setting GenerateWindowsMetadata=false is enough to tell the build system that we don't produce one, and get it off our backs. ### teams chat where we figured this out [3:38 PM] Dustin Howett however, that's not the only thing that "GetTargetPath" checks. [3:38 PM] Dustin Howett oh yeah more info: wapproj calls GetTargetPath on all projects it references [3:38 PM] Dustin Howett when it calls GTP on WindowsTerminal.vcxproj it is getting back a winmd (!) [3:39 PM] Dustin Howett here's the magic [3:39 PM] Dustin Howett ![image](https://user-images.githubusercontent.com/18356694/142945542-74734836-20d8-4f50-bf3a-be4e1170ae13.png) [3:39 PM] Dustin Howett it checks if any Link items specify GenerateWindowsMetadata ![image](https://user-images.githubusercontent.com/18356694/142945593-fd232243-0175-4653-8c34-cdc364a16031.png) --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
claunia added the pull-request label 2026-01-31 09:30:26 +00:00
Sign in to join this conversation.
No Label pull-request
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/terminal#28734