在metro风格的应用中使用传统组件

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

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

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

然后我试图通过Windows App认证。 它失败了(见下面的详细信息)。

在开启编译器优化后, 通过了app认证。


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

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

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

  • 此系统不支持MSC System.Runtime.CompilerServices.CompilationRelaxationsAttribute。#ctor(System.Int32)在MSCORLIB中,PUBLICKEYTOKEN = B77A5C561934E089。 EmptyLib.dll调用此API。

影响如果不修复:应用程序正在使用一个或多个不在Windows SDK for Metro风格应用程序中的API。 使用不受支持的API会违反Windowsapp store策略,并可能对用户体验产生负面影响,并可能会影响整体系统稳定性。

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