【问题标题】:Use older dlls (.NET) in Windows Store app?在 Windows 应用商店应用程序中使用较旧的 dll (.NET)?
【发布时间】:2012-07-25 15:41:25
【问题描述】:

我开始着手移植我为在 Windows 8 应用商店中部署而编写的应用程序。这需要针对 .NET 框架的子集编写应用程序。我的应用程序遵循核心功能在它自己的 dll 中的架构,并且文件系统访问之类的事情是通过 IoC 完成的。基本上,这意味着核心 dll 的唯一依赖项是 System.dll。正因为如此,我认为移植将是一件轻而易举的事——设置我的 IoC 值并连接一个 GUI,然后我就可以开始了。只是,我什至无法从 Windows 商店应用程序(又名 Metro 应用程序)引用我的核心 dll。

我错过了什么吗?实际上是否必须重写我的核心 dll 才能包含在 Windows 8 应用商店中?我们被告知,如果您使用良好的架构,那么移植将变得轻而易举,这就是我所做的。这只是一个天大的谎言吗?

【问题讨论】:

  • 我假设您提到的所有 DLL 都是 .NET 程序集?他们的目标是什么版本的 .NET Framework?
  • 您无法引用它,因为您的 dll 未针对 .NET Framework Metro Profile 进行编译。您不必将 .NET 用于 Metro 应用程序,您认为这一事实意味着您不了解需要什么。
  • @Ramhound 这当然有可能
  • @JonathonReinhart 它们是 .NET 程序集。他们的目标是框架的 v4。但我将它添加为 VS 中的项目参考。 Metro 风格的应用程序将只是解决方案中的另一个项目 - 或者至少这是计划。

标签: c# .net windows-8 windows-store-apps


【解决方案1】:

Windows 应用商店应用(以前称为 Metro 风格应用)仅限使用 .NET Core 配置文件。我在answer to this question 中添加了有关核心配置文件的一些详细信息。有关详细信息,请参阅转换现有 .NET Framework 代码in this article。这不是您的体系结构,而是可供 Windows 应用商店应用程序使用的 .NET Framework 子集。您可能不得不用 WinRT 类型来补充您在 .NET 中使用的某些类型。

【讨论】:

    【解决方案2】:

    我没有广泛的知识,并且会尽量坚持我所理解的事实。 Metro 框架增加了功能,也限制了功能。有严格的安全限制和完整的 .Net 框架的大部分不可用(例如,您不能使用 System.Data,一些 System.IO 和文件访问方法已发生巨大变化)。 Metro 应用程序是隔离的,您将无法像在标准应用程序中那样递归硬盘驱动器上的所有文件(我认为,除了通过隔离实现安全性之外,还鼓励您进入云存储需求)。

    除非情况发生变化,否则 PInvoke 仅限于“批准”的 Win32 API 方法。

    有关常见 Win32 API 需求的一些替代方案,请参阅此链接:http://msdn.microsoft.com/en-us/library/windows/apps/hh464945.aspx

    查看此链接了解已批准的 Win32/COM API:http://msdn.microsoft.com/en-us/library/windows/apps/br205762.aspx

    如果不知道架构中的代码内容,很难说“好的”架构是否可以轻而易举地移植。在我的实用程序框架中,我有一些非常容易移植的东西(或者至少是简单的),以及需要大量重写的完全清洗的东西(例如 System.Data 的丢失对我来说是一个痛点)。有些东西可以设计得很好,但是当你取出框架或 API 中的底层代码时,它是用它编写的,需要重写。

    【讨论】:

    • 哇,听起来像是一大块无法使用的废话。
    • 我会说它还不成熟(例如,它还没有生产的第一个版本,它还有一段路要走)。是的,您确实失去了一些功能,其中一些是出于安全目的,但作为一种权衡,您获得了通过可以货币化的合法市场交付应用程序的能力(而不是存在多年的低于标准的网页)。我看到了他们尝试做的事情的好处,但正如你所说,我有时也感到沮丧(极端),因为我不得不重新调整我认为我不应该重新调整的东西。跨度>
    【解决方案3】:

    我遇到了同样的问题:Metro 应用程序的项目不加载使用 .4 框架创建的 dll。我将 dll 的框架从 4 更改为 3.5,现在 Metro 项目可以看到它们。

    【讨论】:

      猜你喜欢
      • 2023-03-18
      • 1970-01-01
      • 2012-12-26
      • 2013-01-20
      • 1970-01-01
      • 2014-12-16
      • 2017-04-07
      • 1970-01-01
      • 2012-10-28
      相关资源
      最近更新 更多