解决在 WP8/ WP8.1 项目中 引用 C++ 组件时出现的 System.TypeLoadException 错误
本文为个人博客备份文章,原文地址:
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 自动添加的,而它并没有这么做,所以导致里上述问题的发生,手动添加后即可解决问题。
提示
一般情况下,引用 C++ 组件出现问题,请先确保正确引用了 .winmd 文件而不是 .dll 文件;同时要确保 .winmd 和 .dll 文件名一致。
在 Visual Studio 2013 update 5 中,上述 bug 已经得到修正。
解决在 WP8/ WP8.1 项目中 引用 C++ 组件时出现的 System.TypeLoadException 错误的更多相关文章
- 项目中调用ExcelCom组件时的配置流程
异常提示如下: Microsoft Office Excel 不能访问文件“*.xls”. 可能的原因有: 1 文件名称或路径不存在. 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想试试,我 ...
- ios项目中引用其他项目复习
ios项目中引用其他开源项目,今天再次复习了,记个备注. 1. 将开源项目的.xcodeproj拖入项目frameworks 2. Build Phases下 Links Binary With Li ...
- 在项目中引用android.support.v7
在Android开发中,新建的项目可能因为缺少对sopport工程的引用而报错,可以这样解决. 1.项目右键 --> import --> Android --> Existing ...
- git 在 A 项目中引用 B 项目
git 在 A 项目中引用 B 项目 场景: 需要在项目calcDLL(http://XXX/XXXA.git) 中 引用 项目libindex(http://XXX/XXXB.git). 解决方 ...
- ASP.NET项目中引用全局dll
在ASP.NET项目中,有些dll是全局dll,也就是说,没有放在单个项目的引用中.它们一般存放在如下目录C:\Windows\assembly中 这个时候,我们需要在单个项目中引用他们,应该如何做呢 ...
- 擦他丫的,今天在Django项目中引用静态文件jQuery.js 就是引入报错,终于找到原因了!
擦 ,今天在Django项目中引用静态文件jQuery.js 就是引入报错,终于找到原因了! 问题在于我使用的谷歌浏览器,默认使用了缓存,导致每次访问同一个url时,都返回的是缓存里面的东西.通过谷歌 ...
- Android Studio 在项目中引用第三方jar包
在Android Studio项目中引用第三方jar包的方法: 步骤: 1.在build.gradle文件中添加如下代码: 备注:要添加在Android作用域下 sourceSets { main { ...
- springboot项目中引用其他springboot项目jar
1. 剔除要引入的springboot项目中不需要的文件:如Application和ApplicationTests等 2.打包 不能使用springboot项目自带的打包插件进行打包: 3.打包 4 ...
随机推荐
- [CentOS7] timedatectl设置时区
查看当前时区日期等配置 显示可选时区 选择时区
- Python中的可迭代对象
Python中的可迭代对象有:列表.元组.字典.字符串:常结合for循环使用: 判断一个对象是不是可迭代对象: from collections import Iterable isinstanc ...
- Redis源码阅读---连接建立
对于并发请求很高的生产环境,单个Redis满足不了性能要求,通常都会配置Redis集群来提高服务性能.3.0之后的Redis支持了集群模式. Redis官方提供的集群功能是无中心的,命令请求可以发送到 ...
- equals和==的区别 (Java基础)
1. == 是一个运算符.2.Equals则是string对象的方法,可以.(点)出来. 我们比较无非就是这两种 1.基本数据类型比较 2.引用对象比较 1.基本数据类型比较 ==和Equals都比较 ...
- JSONArray.fromObject Date显示问题
原文链接:http://www.cnblogs.com/Nbge/archive/2012/07/31/2617127.html 使用JSONArray.fromObject,Date类型打出来的完全 ...
- flink学习笔记-各种Time
说明:本文为<Flink大数据项目实战>学习笔记,想通过视频系统学习Flink这个最火爆的大数据计算框架的同学,推荐学习课程: Flink大数据项目实战:http://t.cn/EJtKh ...
- 高仿JDK动态代理 底层源码实现
动态代理实现思路 实现功能:通过Proxy.newProxyInstance返回代理对象 1.创建一个处理业务逻辑的接口,我们也和JDK一样,都使用InvocationHandler作为接口名,然后接 ...
- clang -O3 for循环的LLVM IR
O3都是怪物,这里分析的是CLANG怪物,示例程序遍历数组每个元素然后放大. void foreach_scale(int arr[],int elem){ for(int i=0;i<elem ...
- Jenkins+Git+Maven+Nexus+Tomcat
https://www.jianshu.com/p/d24e64559440 https://blog.csdn.net/u013322876/article/details/72637854 htt ...
- java程序设计实验
建立文件调试jdk idea断点调试 项目素数的寻遍