【问题标题】:How can a C++/CLI project reference a portable class library?C++/CLI 项目如何引用可移植类库?
【发布时间】:2016-07-09 16:45:08
【问题描述】:
我们有一堆引用 Prism.Core 的 C# 代码。 Prism.Core 是一个可移植的类库。当我们在 C++/CLI 中引用它并尝试使用委托命令时,我们得到:
C4691:“System::Object”:在未引用的程序集“System.Runtime”中需要引用类型,在当前翻译单元中定义的类型改为使用
谁能解释为什么?除了重建源代码之外,还有什么方法可以修复,因为 Prism 被 Nugeted 到我们的 c# 源代码中,所以我不想这样做?
【问题讨论】:
标签:
c#
c++
portable-class-library
prism-6
【解决方案1】:
我有一个类似的设置,但有同样的警告。 C# 项目引用了具有多个目标框架的 NuGet 包。由于无法将托管 NuGet 包添加到 C++/CLI 项目,因此必须为该项目手动添加引用。手动添加的引用最终成为 NuGet 包中不同目标框架的 DLL。比如:
CSharpProject.csproj -> packages\Prism.Core.6.2.0\lib\portable-win+net45+wp80+wpa81+MonoAndroid10+MonoTouch10+Xamarin.iOS10\Prism.dll
CppCliProject.vcxproj -> 包\Prism.Core.6.2.0\lib\net45\Prism.dll
在我的情况下,将 C++/CLI 项目中的引用更改为使用与 C# 项目相同的 DLL。