如何从托管项目引用本机WinRT组件?

时间:2011-09-20 21:31:47

标签: c# windows-8 windows-runtime c++-cx

据说你可以创建一个可以在C#中使用的C ++ WinRT组件。我有一个简单的测试项目 - 一个C#XAML应用程序,以及一个仅使用基本WinRT组件项目模板的C ++项目。当我尝试在C#XAML项目中添加项目引用时,它表示无法添加引用(不确定原因)。我可以构建本机WinRT组件,并生成.winmd文件,我可以使用添加引用对话框中的浏览按钮手动添加对此.winmd文件的引用。这允许我访问本机库中的方法,但是当我构建时,它表示它使用的是Platform.IDisposable,但该类型是在未引用的程序集中定义的。我没有看到任何会议演示这种情况。

3 个答案:

答案 0 :(得分:8)

找到答案!看起来这是一个小故障,但它有一个解决方法: http://social.msdn.microsoft.com/Forums/en-US/winappswithnativecode/thread/1900bd21-8693-4127-800a-f35cfd5daac2

基本上,首先清理WinRT组件项目,然后添加引用,然后手动将引用添加到位于\ VC \ bin中的platform.winmd,那么你应该好好去。

答案 1 :(得分:2)

您正在引用的C ++ WinRT程序集可能使用实现IDisposable接口的对象,因此您还必须引用包含该接口的C ++程序集。

答案 2 :(得分:2)

所以我遇到类似的问题,在添加对Microsoft.VCLibs的引用之后,我无法部署。但是我注意到,默认情况下,WinRT组件被编译为x86代码,而C#Metro风格应用程序针对任何cpu,这是我的情况下的根本原因。将C#app切换到x86解决了这个问题。