是否可以验证WinRT组件DLL?

时间:2012-02-24 20:03:42

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

我想让SQLite与WinRT兼容。我已将WinRT不支持的旧调用切换到新调用。现在我有项目编译,我想验证它没有使用任何较旧的API调用或不支持的调用。

Windows App Cert Kit似乎只验证实际的城域网应用程序。我如何只验证WinRT DLL?

编辑:

似乎app认证工具包中存在错误。它似乎没有验证引用的dll。如果将代码移动到应用程序,它会对其进行验证。此外,对于不支持在metro中的呼叫,并不总是存在编译时错误。我需要设置一个标志来在编译时捕获这些错误吗?有问题的文件是一个只关闭此文件的WinRT扩展名的C文件。

2 个答案:

答案 0 :(得分:4)

现在,在Consumer Preview中修复了不支持Metro中不支持的调用的编译时错误的问题。此外,app认证工具包现在也可以正确验证引用的dll。

答案 1 :(得分:1)

我知道codeplex正在努力为Metro Apps执行SQL Lite实现。 http://sqlwinrt.codeplex.com/。根据端口的状态,您可以将其视为一个选项。

我可以看到这将如何有用,但我不知道有任何方法来验证单个DLL。

然而,为了给你一个很好的主意,会有很多隐式和显式的检查。

如果您要将应用程序上传到商店,您的SQL Lite实施必须是您的软件包的一部分,因此将在认证过程中进行验证。认证过程将检查项目中的所有可执行文件和DLL,并查找错误的API。如果检测到这种情况,认证将失败。

此外,您正在编译的Windows 8 SDK具有仅显示Win8 Metro API的头文件,因此您在编译期间会遇到错误(看起来您已通过成功编译解决了这个问题)。

最后,您在应用程序的沙盒环境中运行,当API尝试执行某些不应该执行的操作时,例如注册表访问的一个简单示例,您将遇到安全/访问问题。 SYSINTERNALS中的“Process Monitor”是一种在您的应用中通过查看跟踪期间的安全/访问问题来观察此内容的绝佳方式。

考虑到你的问题,我知道这是一个广泛的中风。我希望它有所帮助。