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

Cui*_*崔鹏飞 14 .net c# microsoft-metro windows-8

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

Rom*_*iko 9

是的,有时您可以从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会违反Windows应用商店策略,并可能对用户体验产生负面影响,并可能会影响整体系统稳定性.

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

  • 如果库作者希望他们的库可以在桌面和Metro上使用,他们应该使用"可移植库"项目来确保他们只使用普遍支持的API. (5认同)