C++ 编译器错误 MDM2009 找到重复类型处理元数据文件引用 2 Windows 都引用另一个库的组件库

C++ compiler error MDM2009 Duplicate type found processing metadata file referencing 2 Windows Component Libraries that both reference another library

我的解决方案结构如下所示:

编译器抱怨它在 WCL1.winmd b/c 中发现重复类型(每个 public interface/class),winmd 文件已经存在于 WCL4 的 bin 目录中。

一个问题是我对 C++ 完全一无所知,link 对此 的回答提供了一个没有帮助的 C++ 解决方法(它实际上就像阅读不同的 -但相关的语言——即当我只懂英语时阅读德语)。

我还发现 this 它提供了另一种解决方法,但没有告诉您将它放在哪里。我将指定的 ItemGroupDescription 元素添加到每个 .csproj 文件以及应用程序的 PropertySheet.props 文件中,但无济于事。

我还做了以下事情:

还有其他人有什么想法吗?不胜感激....

更新:

这是一个 link 重现编译错误的小解决方案。 它似乎来自 C++ 应用程序引用的 Microsoft.Windows.CppWinRT NuGet 包。该包从应用程序引用的组件项目生成的 .winmd 文件自动生成 C++ 头文件。

嗯....它并不完美,但这是我解决问题的方法...将以下行添加到每个 Component .csproj 文件中的每个 ProjectReference:

我不确定这个特定 Xml 元素的意图是什么,但是通过设置 Private=false,编译器不会将 InterfaceDefinitionComponent.winmd 文件复制到其他组件的 bin 中防止 C++ 编译器看到重复的 .winmd 文件和爆炸的目录,因为它试图为同一类型生成多个相同的 C++ 头文件。