【问题标题】:Using C# 4.0 library in Windows Store App在 Windows Store App 中使用 C# 4.0 库
【发布时间】:2014-04-25 12:40:00
【问题描述】:

我有 C# .NET4 库项目,我想在 Windows Store App 中使用。由于不支持 .NET 版本,我无法直接引用此 DLL,因此我正在考虑编写 Windows Store App Library,它将包装对 C# (.NET4) 库的调用。关于如何实现这一点的任何提示?

求救

非常感谢!

【问题讨论】:

    标签: c# dll windows-runtime windows-store-apps


    【解决方案1】:

    这不仅仅是包装和引用一个库,它是关于在运行时/框架的 Windows Store App 版本中缺少一些基本类型、方法、扩展等,这将禁止你仅仅包装/链接完整的 .NET 4 库程序集。您将无法为不兼容的平台构建/链接它,即使您可以构建它,它也不会在该平台的 CLR 上执行。由于您必须创建一个特定的 Windows 应用程序项目,Visual Studio 将对特定 .NET 框架的引用添加到您的项目中,并且在编译时,您甚至无法构建该项目,因为 .NET 4 程序集将引用不在项目中的依赖项,也不与运行时目标兼容。

    您的建议(包装)就像我说“我有这个 Windows 库,我想在 Linux 上使用,我可以将调用包装在一个层中,然后在 Linux 上部署吗?”答案是“没有(1)仿真或(2)重新实现”。当然,CLR / .NET 字节码比 Linux 与 Windows 更兼容,但概念仍然相同。 CLR/框架的一个版本!=另一个版本。目标运行时环境中完全缺少一些类型/库调用。

    您可能需要创建相关库的替代实现。

    我能建议的最好方法是使用 Reflector 或 dotPeek 之类的工具来反编译 .NET4 程序集,看看可以将其中的多少粘贴到便携式或 Windows Store App 项目中。请记住,如果这是第 3 方商业图书馆,您可能会违反许可协议,这取决于您。

    使用本指南将缺少的部分替换为该平台的等效部分:http://msdn.microsoft.com/library/windows/apps/br230302.aspx#general

    正如指南中所述,您还可以创建一个可移植类库项目来开发一个可从 Windows 应用商店应用程序使用的 .NET Framework 库,但您仍受限于可移植的 API 子集。如果您使用 Reflector 采用上述方法,您实际上可能会发现 .NET 4 程序集没有使用任何重要的非可移植框架类型/引用,并且可以轻松地重新编译。另一方面,也可能是相反的情况。

    【讨论】:

    • 感谢您的回答。实际上,有问题的库是我自己的,所以我有源代码,但是当我尝试重新编译时,我失败了,因为它非常复杂并且有很多依赖项。
    • 此外,使用便携式库,您实际上只能选择“重写”所有内容,因为便携式库只能引用便携式库。
    • 有趣。如果有意义的话,我可能会建议您采取一种缓慢而有条理的方法,并将您的库分解为子库。然后,一旦您在 .NET 4.0 下执行此操作,请尝试同时移植一个。有时一次移动一大块代码可能会让人不知所措,并使您处于对编译错误做出响应而不是重新解决问题的状态。
    猜你喜欢
    • 1970-01-01
    • 2015-02-08
    • 1970-01-01
    • 1970-01-01
    • 2015-08-14
    • 2013-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多