C# 在metro style应用程序中使用旧程序集

C# 在metro style应用程序中使用旧程序集,c#,.net,windows-8,microsoft-metro,C#,.net,Windows 8,Microsoft Metro,我知道我们可以在用c#编写的metro风格的应用程序中访问部分.net API和所有winrt API。 但是其他针对.NET2.0或3.5等的第三方组件呢。 我们是否能够将它们作为引用添加到metro样式的应用程序项目中?是的,有时您可以引用metro应用程序中的第三方.NET程序集。它们应该部署在与应用程序相同的文件夹中,并且只使用受支持的API 我用一个类创建了一个.NET库,并从metro应用程序中使用它。收到以下警告:无法引用项目“EmptyLib”。但该应用程序已生成,我可以调试它并

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

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

我用一个类创建了一个.NET库,并从metro应用程序中使用它。收到以下警告:
无法引用项目“EmptyLib”。
但该应用程序已生成,我可以调试它并在debugger中浏览类的实例

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

打开应用程序认证的编译器优化后通过了


第一次失败的原因是库使用了不受支持的API。详情:

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

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

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

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


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

如果库作者希望其库在桌面和Metro上都可用,他们应该使用“Portable library”项目,以确保只使用普遍支持的API。另请参阅