0

我的解决方案结构如下所示:在此处输入图像描述

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

一个问题是我对 C++ 完全一无所知,并且该问题的答案中提供的链接提供了一个无济于事的 C++ 解决方法(它实际上就像阅读一种不同但相关的语言——即,当我只知道时阅读德语英语)。

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

我还做了以下事情:

  • 将代码从 WCL2 移至 WCL3 并从解决方案中删除 WCL2。
  • 有应用程序引用 WCL1、WCL3 和 WCL4。

其他人有任何想法吗?这将不胜感激....

更新:

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

4

1 回答 1

1

好吧....它并不完美,但这就是我解决问题的方法...将以下行添加到每个 Component .csproj 文件中的每个 ProjectReference 中: 在此处输入图像描述

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

于 2021-11-12T22:26:21.417 回答