C++/CLI项目如何引用可移植类库?

int*_*nit 7 c# c++ portable-class-library prism-6

我们有一堆引用Prism.Core的C#代码.Prism.Core是一个可移植的类库.当我们在C++/CLI中引用它并尝试使用委托命令时,我们得到:

C4691:'System :: Object':引用的类型在未引用的程序集'System.Runtime'中是预期的,在当前使用的转换单元中定义的类型

有谁能解释为什么?还有什么方法可以修复,除了重建源代码,我不想这样做,因为Prism是Nugeted到我们的c#源代码?

小智 0

我有类似的设置,但有相同的警告。C# 项目引用了具有多个目标框架的 NuGet 包。由于托管 NuGet 包无法添加到 C++/CLI 项目中,因此必须手动为该项目添加引用。手动添加的引用最终成为 NuGet 包中不同目标框架的 DLL。就像是:

CSharpProject.csproj -> 包\Prism.Core.6.2.0\lib\portable-win+net45+wp80+wpa81+MonoAndroid10+MonoTouch10+Xamarin.iOS10\Prism.dll
CppCliProject.vcxproj -> packages\Prism.Core.6.2.0\lib\net45\Prism.dll

更改 C++/CLI 项目中的引用以使用与 C# 项目相同的 DLL,在我的情况下修复了该问题。