c#-从另一个项目引用Windows Phone运行时组件DLL / WinMD

我需要实现一个包装程序,以将一些本机C代码公开给C#,并且已经按照本教程进行操作:http://www.silverlightshow.net/items/Windows-Phone-8-Native-Code-Support.aspx到目前为止,在我的C#测试项目中,只要我引用了整...

我需要实现一个包装程序,以将一些本机C代码公开给C#,并且已经按照本教程进行操作:

http://www.silverlightshow.net/items/Windows-Phone-8-Native-Code-Support.aspx

到目前为止,在我的C#测试项目中,只要我引用了整个项目(.sln),从运行时组件项目实例化用C/C++X编写的类并使用该类中的方法就不会有问题.

Visual Studio不允许我单独引用运行时组件DLL,但允许我引用项目中的.winmd文件.然后,C#可以正确识别名称空间,但是在运行时,尝试创建同一对象时出现TypeLoadException.

这似乎不是名称空间问题(如此处所述:Changing namespace name of C++ component in Windows Phone causes exception),因为只要我创建项目引用(或者引用项目与.winmd的引用是否会以某种方式影响名称空间?),一切都就可以了.

是否可以以某种形式捆绑运行时组件,使最终用户可以在不需要提供整个项目的情况下引用该组件?

解决方法:

您需要在WMAppManifest.xml中添加以下内容

<ActivatableClasses>
    <InProcessServer>
        <Path>YourComponent.dll</Path>
        <ActivatableClass ThreadingModel="both" ActivatableClassId="YourComponentNamespace.YourComponent"/>
    </InProcessServer>
</ActivatableClasses>

用YourComponent作为WinMD的名称.

本文标题为:c#-从另一个项目引用Windows Phone运行时组件DLL / WinMD

基础教程推荐