【问题标题】:Windows UWP - Dynamically Load Assembly In Side Loaded AppWindows UWP - 在侧面加载的应用程序中动态加载程序集
【发布时间】:2017-02-14 22:00:56
【问题描述】:

不允许在运行时加载程序集似乎是 Windows 10 应用商店应用的故意安全。我认为这个功能是巨大的矫枉过正,并阻止了 UWP 的开发。但是,如果这是 Microsoft 坚如磐石的设计决定,我们也无可争辩。

相反,我想问一个问题,假设您没有将 UWP 应用部署到商店,是否仍然无法动态加载程序集?如果可以,怎么做?

请查看此功能请求:https://wpdev.uservoice.com/forums/110705-universal-windows-platform/suggestions/18145291-dynamically-load-assembly

【问题讨论】:

    标签: c# dynamic uwp .net-assembly appx


    【解决方案1】:

    无论您将 UWP 应用程序部署到什么环境,UWP API 都是相同的。选择在内部部署您的应用而不是部署到 Windows 应用商店将不会启用不受支持的 API 功能,例如。 Assembly.Load()。

    【讨论】:

    • 我正在尽我所能保持对这个限制的感受,但这个限制是基于商店政策,而不是运行时的能力。为什么微软不直接在运行时环境中公开该方法,而是让它作为应用商店应用运行时抛出异常?
    • 但是添加额外的程序集不会为应用程序添加额外的功能。仅仅因为在启动后加载程序集并不意味着应用程序获得了额外的功能。说这只是一个红鲱鱼。 UWP 是一个沙盒运行时。最终它仍然可以选择在什么时候可以运行哪些 API。
    • 除此之外,我说的是一个企业级应用程序,它不会对公众开放。 Microsoft 不对我们软件的质量负责——我们负责!当应用程序对应用商店中的任何人免费提供时,显然情况完全不同。
    • 我已经更改了我的答案以消除我的个人想法,并且只对您的直接问题提供直接答案。我觉得这更适合SO。除非官方宣布,否则我们所能做的就是猜测“为什么这样”或“为什么那样”。让我们利用我们今天拥有的东西,如果情况发生变化,从那里开始。 SO 不是讨论微软决定的论坛,如果我鼓励这样做,我很抱歉。
    【解决方案2】:

    似乎这个问题的答案是否定的。

    UWP 中的游戏发生了变化。 UWP 是一个旨在让应用程序进入商店的平台。它是一个精简的平台,似乎不允许您在运行时加载程序集。这在 .NET 中是可能的。

    但是,似乎确实有一种方法可以使用桌面桥在 .NET 运行时之上运行 UWP 风格的应用程序。我对它不是很熟悉,但你可以在这里阅读更多内容作为我的起点。我的猜测是,如果你想动态加载程序集,最好的方法是使用这个: https://docs.microsoft.com/en-us/windows/uwp/porting/desktop-to-uwp-root

    【讨论】:

    猜你喜欢
    • 2012-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多