本文为个人博客备份文章,原文地址:

http://validvoid.net/wp-cpp-typeloadexception/

使用 Visual Studio 2013 update 4 在 WP8/ WP8.1 项目引用 C++ 组件如果遭遇到

System.TypeLoadException: Requested Windows Runtime type 'XXXXX.XXXXX' is not registered.

这一错误,是由于 Visual Studio 2013 update 4 的一个 bug 导致引用 C++ 组件后没有正常为 C++ 在应用的清单文件中进行注册。该问题可以通过两种方法解决。

第一种方法,暴力替换 update 4 版中的如下文件为 update 3 版本:

* Microsoft.AppxPackage.Targets
* Microsoft.Build.AppxPackage.dll

文件路径

C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\AppxPackage\

然而并不推荐这么做,谁也不知道替换之后还会出现什么 bug(s)。

第二种方法,也就是目前的正确姿势是修改应用的清单文件:

在应用的清单文件 (Package.appxmanifest) 中末尾的 </Package>节点前加入如下配置代码:

<Extensions>
<Extension Category="windows.activatableClass.inProcessServer">
<InProcessServer>
<Path>AAA.dll</Path>
<ActivatableClass ActivatableClassId="AAA.BBB" ThreadingModel="both" />
</InProcessServer>
</Extension>
</Extensions>

其中,AAA.dll为 C++ 组件的 .dll 文件名;AAA.BBB 为报错信息中提示的未注册的类型名称。

原本以上这段配置应该是 VS 自动添加的,而它并没有这么做,所以导致里上述问题的发生,手动添加后即可解决问题。

提示

  1. 一般情况下,引用 C++ 组件出现问题,请先确保正确引用了 .winmd 文件而不是 .dll 文件;同时要确保 .winmd 和 .dll 文件名一致。

  2. 在 Visual Studio 2013 update 5 中,上述 bug 已经得到修正。

解决在 WP8/ WP8.1 项目中 引用 C++ 组件时出现的 System.TypeLoadException 错误的更多相关文章

  1. 项目中调用ExcelCom组件时的配置流程

    异常提示如下:         Microsoft Office Excel 不能访问文件“*.xls”. 可能的原因有:        1 文件名称或路径不存在.       2 文件正被其他程序使 ...

  2. ASP.NET CORE MVC 2.0 项目中引用第三方DLL报错的解决办法 - InvalidOperationException: Cannot find compilation library location for package

    目前在学习ASP.NET CORE MVC中,今天看到微软在ASP.NET CORE MVC 2.0中又恢复了允许开发人员引用第三方DLL程序集的功能,感到甚是高兴!于是我急忙写了个Demo想试试,我 ...

  3. ios项目中引用其他项目复习

    ios项目中引用其他开源项目,今天再次复习了,记个备注. 1. 将开源项目的.xcodeproj拖入项目frameworks 2. Build Phases下 Links Binary With Li ...

  4. 在项目中引用android.support.v7

    在Android开发中,新建的项目可能因为缺少对sopport工程的引用而报错,可以这样解决. 1.项目右键 --> import --> Android --> Existing ...

  5. git 在 A 项目中引用 B 项目

    git 在 A 项目中引用 B 项目   场景: 需要在项目calcDLL(http://XXX/XXXA.git) 中 引用 项目libindex(http://XXX/XXXB.git). 解决方 ...

  6. ASP.NET项目中引用全局dll

    在ASP.NET项目中,有些dll是全局dll,也就是说,没有放在单个项目的引用中.它们一般存放在如下目录C:\Windows\assembly中 这个时候,我们需要在单个项目中引用他们,应该如何做呢 ...

  7. 擦他丫的,今天在Django项目中引用静态文件jQuery.js 就是引入报错,终于找到原因了!

    擦 ,今天在Django项目中引用静态文件jQuery.js 就是引入报错,终于找到原因了! 问题在于我使用的谷歌浏览器,默认使用了缓存,导致每次访问同一个url时,都返回的是缓存里面的东西.通过谷歌 ...

  8. Android Studio 在项目中引用第三方jar包

    在Android Studio项目中引用第三方jar包的方法: 步骤: 1.在build.gradle文件中添加如下代码: 备注:要添加在Android作用域下 sourceSets { main { ...

  9. springboot项目中引用其他springboot项目jar

    1. 剔除要引入的springboot项目中不需要的文件:如Application和ApplicationTests等 2.打包 不能使用springboot项目自带的打包插件进行打包: 3.打包 4 ...

随机推荐

  1. String类-小用

    字符串-string (1)string在Java中是一个引用类型,string变量可引用一个字符串对象 (2) 例1: s0,s1,s2引用同一个对象 New创建的两个string是不同的对象只是内 ...

  2. PHP里public和private的区别

    public  公共的,谁都可以用 private 私有的,当前class可以随便用,外部不能调用

  3. Spark大数据处理 之 动手写WordCount

    Spark是主流的大数据处理框架,具体有啥能耐,相信不需要多说.我们开门见山,直接动手写大数据界的HelloWorld:WordCount. 先上完整代码,看看咋样能入门. import org.ap ...

  4. kuangbin专题十二 HDU1074 Doing Homework (状压dp)

    Doing Homework Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)To ...

  5. Android 选择本地图片的demo

    https://github.com/lipanquan/SelectLocalPhoto

  6. 一些不常见的css知识

    margin-top:20%  ----------------20% 是宽度的20%

  7. VMware 无法连接虚拟设备ide1:0,主机上没有相对应的设备,您 要在每次开启此虚拟机时都尝试连接此虚拟设备吗?

    无法连接虚拟设备ide1:0,主机上没有相对应的设备,您 要在每次开启此虚拟机时都尝试连接此虚拟设备吗? 运行VMware,出现以上错误. ide1:0一般是虚拟机的光驱,配置默认选项是“使用物理驱动 ...

  8. python 安装 第三方包

    ########1 (python 虚拟环境(如pycharm 中的 project )是一个独立的环境,所以也要重新安装一次第三方包) 上官网搜索 包 https://pypi.org/projec ...

  9. webstorm中.vue报错(es6语法报错)-转

    1.webstorm中es6语法报错,解决方法: 打开 Settings => Languages & Frameworks => Javascript把 Javascript L ...

  10. 多线程编程_CyclicBarrier

    1.类说明: 一个同步辅助类,它允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point).在涉及一组固定大小的线程的程序中,这些线程必须不时地互相等待,此时 Cycl ...