Bug: CppWinRTCopyWinMDToOutputDirectory: Outputs mismatch when merged WinMD name differs from RootNamespace
还没有人认领这个 Issue。
评估
- 难度
- 2/5
- 预计耗时
- 1-3 小时
- 新手友好度
- 68/100
- Issue 类型
- 缺陷
- 描述清晰度
- 基本清楚
- 活跃度
- 冷清
- 技术栈
- cpp
- 领域
- build-system
调研方向
找到定义 CppWinRTCopyWinMDToOutputDirectory 的 build target,并检查其 Inputs、Outputs、Copy destination 和 FileWrites 元数据。使声明的 output 和 FileWrites 条目与复制的合并 WinMD 文件名保持一致,然后验证重复构建和下游打包不再进行不必要的重新构建。
由索引模型根据 Issue 内容生成。
描述
Version
2.0.220131.2
Summary
Problem
The CppWinRTCopyWinMDToOutputDirectory target has mismatched Inputs/Outputs:
- Inputs:
@(_MdMergedOutput)— the merged WinMD (e.g.Contoso.Core.winmd) - Outputs:
$(CppWinRTProjectWinMD)— resolves to$(OutDir)$(RootNamespace).winmd(e.g.Contoso.App.winmd) - Copy DestinationFiles:
@(_MdMergedOutput->'$(OutDir)%(Filename)%(Extension)')— writes the correct file
When the merged WinMD filename differs from $(RootNamespace), the declared Output never matches the actual file written. MSBuild always considers the target out-of-date, causing cascading rebuilds in all downstream projects (.xbf copies, PRI regen, MSIX packaging, C# recompiles via CsWinRT).
This happens when a project's IDL files use a different root namespace than the project's RootNamespace property (e.g. IDL uses Contoso.Core but the project's RootNamespace is Contoso.App).
Fix
Change Outputs to a 1:1 transform matching the Copy task:
Outputs="@(_MdMergedOutput->'$(OutDir)%(Filename)%(Extension)')"
Also update FileWrites to match
Reproducible example
Expected behavior
No response
Actual behavior
No response
Additional comments
No response
- 主要语言
- C++
- 星标
- 1.9k
- 派生
- 281
- PR 合并指标
- 30 天内没有已合并 PR
贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
microsoft/cppwinrt 的其他 Issue
-
难度 1/5 1 小时以内 新手友好度 20/100
-
难度 5/5 一周以上 新手友好度 25/100
-
难度 4/5 3-5 天 新手友好度 48/100
-
难度 4/5 3-5 天 新手友好度 30/100
-
难度 3/5 1-2 天 新手友好度 58/100
查看 microsoft/cppwinrt 的全部 Issue
相似的 Issue
-
难度 1/5 1 小时以内 新手友好度 90/100
AXERA-TECH/ax-llm#77 ·
-
难度 1/5 1 小时以内 新手友好度 90/100
games-on-whales/wolf#509 ·
-
难度 2/5 1-3 小时 新手友好度 74/100
-
bug-unconfirmed
难度 2/5 1-3 小时 新手友好度 76/100
-
难度 2/5 1-3 小时 新手友好度 74/100
NVIDIA/cuda-samples#453 ·