在Metro风格应用中使用传统程序集

14

我理解在使用C#编写Metro风格应用程序时,我们可以访问部分.NET API和所有WinRT API。 但是其他针对.NET 2.0或3.5等版本的第三方组件怎么办? 我们能否将它们作为引用添加到Metro风格应用程序项目中?

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。

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

如何修复:查看上述错误消息2以获取需要修复的确切API。请参阅Windows SDK for Metro style Apps,了解支持使用的API列表。


5
如果库的作者希望他们的库能够在桌面和 Metro 上使用,他们应该使用“可移植库”项目,以确保只使用被广泛支持的 API。 - Pavel Minaev
1
请参阅http://msdn.microsoft.com/en-us/library/windows/apps/br230301(v=VS.85).aspx#KnowTheRules。 - Roman Boiko

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接