【问题标题】:IKVM.Reflection for emitting IL at run time for Windows Store applications?IKVM.Reflection 用于在 Windows 应用商店应用程序运行时发出 IL?
【发布时间】:2013-01-05 22:01:23
【问题描述】:

我在 IKVM.Reflection 上看到 Marc Gravell 的帖子,这是我在 IKVM User's Guide 上找到的内容:

使用 IKVM.NET 主要有两种方式:

  • 动态:在此模式下,Java 类和 jar 直接用于在 .NET 运行时执行 Java 应用程序。 Java 字节码被即时翻译成 CIL,不需要进一步的步骤。此模式支持完整的 Java 类加载器模型。
  • 静态:...

我想用它在 WinRT 应用程序中发出和执行 IL。是否存在任何根本问题,为什么这是不可能的?像 Microsoft 的政策,或阻止从 IKVM 执行(可能已修补)反射和 IL 发射代码的技术限制?

如果这不可能,是否有任何选项可以在运行时加载程序集(假设我在外部服务器上发出它们并从那里下载到本地应用程序文件夹)?

【问题讨论】:

  • 有趣的问题。但是,它确实首先提出了一个问题:您能否让 IKVM.Reflection 为该平台编译。我没有考虑元编程方面的选项,但就有效性而言,这听起来是一个边缘案例。
  • @Marc:我会尝试,但到目前为止,我很难在普通 .NET 上编译它,因为它依赖于 Visual Studio 2008,而我只有 2012。
  • 你把我弄糊涂了;一旦 csproj 更新,我从未见过 2012 年与 2008 年的项目斗争
  • 好的,答案是否定的。如果没有重大更改,它将无法为 WinRT 编译。可能我需要先了解一下它的设计和实现,也许可以联系作者。
  • 我能够为 .NET 4.5 Client Profile 编译它,但在 WinRT 上缺少许多类型。

标签: windows-runtime reflection.emit il ikvm assembly-loading


【解决方案1】:

IKVM.NET 的动态模式与 IKVM.Reflection 无关。 IKVM.Reflection 仅供静态编译器使用。

虽然可以为 .NET 核心配置文件编译 IKVM.Reflection(进行一些调整),但这不会让您更接近动态生成代码,除非您突破 .NET 核心配置文件“沙盒” (这是可能的,但我认为会违反 Window Store 政策)。

【讨论】:

    猜你喜欢
    • 2015-12-12
    • 1970-01-01
    • 2015-11-28
    • 2013-05-27
    • 2015-12-22
    • 2016-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多