迁移到 VS2013.4 后调用 WinRT 强制要求时未注册类异常
Class not registered exception when calling a WinRT compontent after migrating to VS2013.4
我有一个HTML5应用程序,其中包含一个用于文件系统操作(sqlite,zip存档等)的.winmd组件。
升级到 2013.4 后,此组件突然停止工作。Javascript 仍然可以看到所有的类和函数,但是当我尝试调用其中任何一个时,我得到"WinRT:类未注册"异常。
完全 VS 重新安装没有帮助。升级到社区版本也没有。此行为在台式机 (8.1pro) 和笔记本电脑 (win8.1 单一语言) 上重现
我花了 2 天时间试图找出问题所在,我发现一旦组件包含任何异步活动(如等待/异步或只是 Task.Delay(100)),它就会失败
所以我担心的是...这是怎么回事?我错在哪里,我该怎么办?
现在正在安装 2015 预览版。如果我使用系统还原回滚到 2013.3,项目工作正常,但 VS 处于半损坏状态,并且 MS 网站上没有下载以前版本的链接。
如果我说的没有任何意义,我可能会上传一个包含最简化的 VS 解决方案的文件来重现问题。但简而言之,它就像
:namespace NSUtil {
public sealed class Test{
public static IAsyncOperation<string> DoSomething () {
return Task<string>.Run(async () => {
await Task.Delay(100);
return "";
}).AsAsyncOperation();
}
}
}
一旦我从javascript调用NSUtil.Test.doSomething()
,我就会得到WinRTError: Class not registered
例外。
所以问题是....我/我的电脑/我的与安装/微软开发人员有什么问题?
答案是:应该在package.appxmanifest中输入以下行:
<Extensions>
<Extension Category="windows.activatableClass.inProcessServer">
<InProcessServer>
<ActivatableClass ActivatableClassId="MyNS.MyClass1" ThreadingModel="both" />
<ActivatableClass ActivatableClassId="MyNS.MyClass2" ThreadingModel="both" />
...
<ActivatableClass ActivatableClassId="MyNS.MyClassN" ThreadingModel="both" />
</InProcessServer>
</Extension>
</Extensions>
其中MyNS.MyClass{N}
都是类,向 WinRT 公开。出于某种奇怪的原因,VS2013.4不能自己做,所以我不得不自己做
检查您的应用程序权限并以管理员身份运行,而不是使用 javaScript 类或将项目文件位置更改为其他驱动器。 在 Windows 8.1 中,有时应用程序需要管理员权限才能使用文件和类。
- 点击facebook像素跟踪注册(JS/JQUERY代码)
- 在javaservlet doPost方法中启动线程时,无法返回异常消息
- 当组件准备就绪时,如何在Polymer中动态注册新属性
- document.applet.method在Mounatin Lion上抛出safari 6+JDK7异常
- 注册OpenLayers事件时,即使使用匿名函数或绑定,JavaScript关闭也会触发循环内的所有内容
- 为什么浏览器没有为语法错误抛出异常
- java,javascript签名的小程序(文件选择,ftp上传)安全性/套接字异常
- node.js和express中的异常处理
- 派生进程的stdout在管道传输时工作异常
- NodeJS和pg promise,捕获PostgreSQL异常
- 当显式定义控制器参数时,默认模型绑定器会发生异常
- 显示引导弹出操作异常的逻辑
- 调用谷歌地图路线服务时未捕获的异常
- web配置http到https重定向异常
- 转换异常时间&Datestring到JavaScript日期
- 为什么在python中使用异常比javascript更容易接受
- PHP REST服务抛出异常——希望避免控制台错误
- JS异常:animate不是一个函数
- 迁移到 VS2013.4 后调用 WinRT 强制要求时未注册类异常
- 在https iframe中注册service worker时出现DOMException异常