【问题标题】:Compile C# on a (not for) Windows 8 ARM Tablet在(不适用于)Windows 8 ARM 平板电脑上编译 C#
【发布时间】:2012-11-12 12:49:42
【问题描述】:

是否可以在 Windows 8 平板电脑 (WinRT)(ARM 处理器版本)上编码和编译 C#?

基本上归结为:

  • 是否有在 ARM 上运行的 C# 编译器?
  • 有没有可以在WinRT中运行的IDE?

如果上述情况属实,我没有看到任何问题,但我目前无法找到 C# 编译器是否在 ARM 上运行(只有很多关于编译 for ARM 的帖子)。我还查看了 SharpDevelop,发现他们的源代码编译为“任何 CPU”,根据这篇文章:Windows RT and c#,这意味着它将在 ARM 上运行。

但是,Sharpdevelop 需要 .NET 4.0“完整”运行时,我无法找到 WinRT 是否有。我敢打赌它不会,因为 WinRT 应该是 Windows 的真正轻量级版本。

作为旁注,我知道 Windows 平板电脑将有两个版本,一个用于 ARM,一个用于经典处理器。经典处理器将运行普通的 Windows 8 版本,这意味着它可以运行所有本机应用程序。在这里编译 C# 不是问题 - 所以问题是,我可以在 ARM 上做同样的事情吗?


这对于旅行和快速尝试新想法来说太棒了。

【问题讨论】:

  • 这并没有直接回答你的问题,但如果你不知道,有ShiftEdit
  • SharpDevelop 不太可能在 Windows RT 上运行。出于所有意图和目的,您可以将 WinRT 视为与“Windows .NET”不同的平台。它们共享标准库的大部分内容,但如果您想要制作一个 GUI 应用程序,您必须针对特定于 WinRT 的 API 进行显式编码。
  • @JMK,ShiftEdit 看起来很棒,我会记住那个工具的。 :) 但是,是的,不是我想要的。 :P 在线IDE的路径上,有compilr.com,我去看看。
  • 即使您不想在玩具上运行 Visual Studio 或编译。更好地使用远程桌面并连接到“真实”计算机。
  • @AlbinSunnanbo 这些“玩具”可能具有运行 VS.NET 和 VS2003 的晚期 Pentium III 的计算能力。想要对它们进行 /some/ 编码并不是一个不合理的要求,你的建议是边缘性的。

标签: c# compiler-construction ide windows-runtime arm


【解决方案1】:

目前:没有,也没有。

当然可以构建一个包含 IDE 和 C# 编译器的 Windows 应用商店应用程序。但是,您将无法运行使用此类应用程序构建的任何程序。 Windows 应用商店应用程序在沙盒中以降低的权限运行。在此沙箱中,CLR 将仅加载系统程序集和应用程序包中包含的程序集。应用包是不可变的,不能在运行时修改。

【讨论】:

  • 所以在 WinRT/Store 上下文中使用 .NET 时反射会被削弱(不支持动态代码生成)?我想您仍然可以获取输出并将其上传到某处,然后使用商店从那里安装/更新新生成的应用程序包。
  • @BenVoigt:不支持动态代码生成,不支持 Reflection::Emit,不支持 System::Assembly::LoadFrom(真的,没有完全支持 Load 方法)。在本机代码中,不支持 LoadLibrary 和 VirtualAlloc/VirtualProtect。您可以使用第二台运行 Windows 8(在 x86 或 x64 上)的 PC,并以某种方式与该机器通信,并让它将新应用程序部署到 ARM 设备上。但是,如果您这样做,那么首先在 ARM 上构建应用程序有什么意义呢? (即,为什么不远程进入 x86/x64 机器?)
  • 那么在运行时生成代码的框架类(如 XML 序列化程序)发生了什么?只是不可用? Microsoft .NET 将是唯一受支持的 JIT(因为 Java/Python/Flash/任何运行时都无法生成代码并运行它)?
  • @BenVoigt:支持 XmlSerializer。策略限制适用于用户程序集,而不适用于框架程序集和平台组件。
  • 所以你描述的应用程序可以通过一些过程成为一个平台组件,就像一个假设的第三方 Python JIT?还是完全禁止第三方 JIT?
【解决方案2】:

其实.Net框架表面上包含csc.exe,Csharp编译器。 我已经获得了要编译的代码,但 WinRt 似乎不喜欢在没有正确签名的情况下运行它。

IDE 暂时不会出现,至少现在不会。我确信通过正确的签名,可以运行已编译的可执行文件。

或者其他人可能是对的,这不仅仅是签约的问题。

【讨论】:

    【解决方案3】:

    我已移植 SharpDevelop 以在未锁定的 Windows RT 设备上运行,它至少适用于 C# Windows 窗体应用程序。 http://chentiangemalc.wordpress.com/2013/03/18/sharpdevelop-rt-edition-beta-code-windows-forms-directly-on-windows-rt/

    【讨论】:

      猜你喜欢
      • 2012-05-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多