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

时间:2011-10-11 07:47:59

标签: c# .net windows-8 microsoft-metro

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

1 个答案:

答案 0 :(得分:9)

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

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

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

为应用认证启用编译器优化传递


第一次失败的原因是该库使用的不支持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。

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

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