14

我知道我们可以在用 c# 编写的 Metro 风格应用程序中访问部分 .net api 和所有 winrt api。但是针对 .net 2.0 或 3.5 等的其他第三方组件呢?我们能否将它们作为参考添加到 Metro 风格的应用程序项目中?

4

1 回答 1

9

是的,有时您可以从 Metro 应用程序引用第三方 .NET 程序集。它们应与您的应用程序部署在同一文件夹中,并且仅使用受支持的 API。

我用一个类创建了一个 .NET 库,并从 Metro 应用程序中使用它。收到以下警告:The project 'EmptyLib' cannot be referenced.但是应用程序已经构建,我能够调试它并在调试器中探索我的类的实例。

然后我尝试通过 Windows 应用程序认证。它失败了(请参阅下面的详细信息)。

开启编译器优化后应用认证通过


第一次失败的原因是库使用了不支持的 API。细节:

错误:此应用程序未通过支持的 API 检查。

  • 此应用程序类型不支持 MSCORLIB 中的 API System.Runtime.CompilerServices.CompilationRelaxationsAttribute,PUBLICKEYTOKEN=B77A5C561934E089。EmptyLib.dll 调用此 API。

  • 此应用程序类型不支持 MSCORLIB 中的 API System.Runtime.CompilerServices.CompilationRelaxationsAttribute.#ctor(System.Int32),PUBLICKEYTOKEN=B77A5C561934E089。EmptyLib.dll 调用此 API。

未修复的影响:应用程序正在使用一个或多个不在 Metro 风格应用程序的 Windows SDK 中的 API。使用不受支持的 API 违反了 Windows 应用商店政策,可能会对用户体验产生负面影响,并有可能阻碍整体系统稳定性。

如何修复:查看上面的错误消息 2 以了解需要修复的确切 API。请参阅适用于 Metro 风格应用程序的 Windows SDK,了解要使用的受支持的 API 列表。

于 2011-10-11T17:16:04.580 回答