在 Metro 风格应用程序中使用旧程序集
据我所知,我们可以在用 C# 编写的 Metro 风格应用程序中访问部分 .net api 和所有 winrt api。 但是其他针对 .net 2.0 或 3.5 等的第三方组件又如何呢? 我们能够将它们添加为 Metro 风格应用程序项目中的参考吗?
I understand that we can access part of the .net apis and all the winrt apis in a metro style app written in c#.
But what about other third-party components that target .net 2.0 or 3.5, etc.
will we be able to add them as references in a metro style app project?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
是的,有时您可以从 Metro 应用程序引用第三方 .NET 程序集。它们应该部署在与您的应用程序相同的文件夹中,并且仅使用受支持的 API。
我创建了一个包含一个类的 .NET 库,并从 Metro 应用程序中使用它。收到以下警告:
无法引用项目“EmptyLib”。
但应用程序已构建,我能够对其进行调试并在调试器中探索我的类的实例。然后我尝试通过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。
如果不修复,影响:应用程序正在使用一个或多个不在适用于 Metro 风格应用程序的 Windows SDK 中的 API。使用不受支持的 API 违反了 Windows 应用商店政策,可能会对用户体验产生负面影响,并有可能阻碍整体系统稳定性。
如何修复:查看上面的错误消息2,了解需要修复的确切 API。请参阅适用于 Metro 风格应用程序的 Windows SDK,了解受支持的要使用的 API 列表。
Yes, sometimes you can reference third-party .NET assemblies from Metro applications. They should be deployed in the same folder as your app and only use supported APIs.
I created a .NET library with one class and used it from metro app. Got the following warning:
The project 'EmptyLib' cannot be referenced.
But the app has been built and I was able to debug it and explore the instance of my class in debugger.Then I tried to pass Windows App Certification. It failed (see details below).
After switching on compiler optimization for app certification passed.
The reason that it failed the first time was that library used not supported APIs. Details:
Error: This application failed the supported API check.
API System.Runtime.CompilerServices.CompilationRelaxationsAttribute in MSCORLIB, PUBLICKEYTOKEN=B77A5C561934E089 is not supported for this application type. EmptyLib.dll calls this API.
API System.Runtime.CompilerServices.CompilationRelaxationsAttribute.#ctor(System.Int32) in MSCORLIB, PUBLICKEYTOKEN=B77A5C561934E089 is not supported for this application type. EmptyLib.dll calls this API.
Impact if not fixed: The application is using one or more APIs that are not in the Windows SDK for Metro style Apps. Use of unsupported APIs violates the Windows Store policy and can have negative impact on the user experience and has the potential to hinder overall system stability.
How to fix: Look at the error messages above2 for the exact API that needs to be fixed. Refer to the Windows SDK for Metro style Apps for the supported list of APIs to use.