在Windows 8 ARM平板电脑上编译C#代码(而非为其编译)

14

在Windows 8平板电脑(WinRT)(使用ARM处理器)上编写和编译C#代码是否可行?

基本上问题归结为以下两点:

  • 是否有能够在ARM架构上运行的C#编译器?
  • 是否有可以在WinRT上运行的IDE?

如果以上条件成立,那么就没有任何问题。但是我目前找不到C#编译器是否可以在ARM上运行的信息(只看到了很多关于为ARM架构编译的帖子)。我也查看了SharpDevelop,并发现它们的源代码可以编译为“Any CPU”,根据这篇帖子:Windows RT and c#,这意味着它可以在ARM上运行。

然而,Sharpdevelop需要.NET 4.0“完整”运行时环境,我无法确定WinRT中是否有此环境。我猜测可能没有,因为WinRT应该是Windows的一个非常轻量级版本。

顺便说一句,我知道Windows平板电脑将有两个版本,一个是ARM版,一个是传统处理器版。传统处理器版将运行正常的Windows 8版,因此它可以运行所有原生应用程序。在这里编译C#不会是问题,所以问题更准确地说是:我是否可以在ARM上做同样的事情?


如果可以,在旅行时快速尝试新想法将非常棒。


1
这并不是直接回答你的问题,但是如果你不知道的话,有一个叫ShiftEdit的工具可以帮助你。 - JMK
2
很不可能在Windows RT上运行SharpDevelop。就所有目的而言,您可以将WinRT视为与“Windows .NET”不同的平台。它们共享大量标准库,但如果您想制作GUI应用程序,则必须明确地针对WinRT特定的API进行编码。 - millimoose
1
@JMK,ShiftEdit看起来很棒,我会记住这个工具的。:) 但是,不是我正在寻找的东西。:P 在在线IDE的路径上,有https://compilr.com/,我会看一下的。 - Michael Bisbjerg
2
即使你可以,也不想在玩具上运行Visual Studio或编译。最好使用远程桌面连接到“真正的”计算机。 - Albin Sunnanbo
2
@AlbinSunnanbo 这些“玩具”大概有晚期 Pentium III 的计算能力,可以运行 VS.NET 和 VS2003。想在它们上面完成一些编码工作并不是一个不合理的要求,而你的建议则有点像恶意挑衅。 - millimoose
显示剩余4条评论
3个回答

6

目前:不行,也不行。

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


@BenVoigt:动态代码生成不受支持,Reflection::Emit 不受支持,System::Assembly::LoadFrom 不受支持(实际上,没有一个 Load 方法被完全支持)。在本机代码中,LoadLibrary 和 VirtualAlloc/VirtualProtect 也不受支持。你可以使用第二台运行 Windows 8(x86 或 x64)的 PC,并与该机器进行通信,让它将新应用程序部署到 ARM 设备上。但是,如果这样做,首先在 ARM 上构建应用程序有什么意义呢?(即为什么不远程连接到 x86/x64 机器?) - James McNellis
@BenVoigt: XmlSerializer被支持。策略限制适用于用户程序集,不适用于框架程序集和平台组件。 - James McNellis
那么,您所描述的应用程序可以经过某些过程成为平台组件,就像一个假想的第三方Python JIT一样?或者第三方JIT是完全被禁止的? - Ben Voigt
这就留下了一个问题,既然它们既不是桌面应用程序也不是Windows Store应用程序,那么侧加载的应用程序应该放在哪里呢?它们是店外的Windows-Modern-UI应用程序。(我猜硬件制造商会有许多这样的应用程序)。就个人而言,在所有问题都得到解决之前,我会坚持使用桌面应用程序(因为我倾向于需要低级平台API来与外围设备通信)。 - Ben Voigt
侧载的Windows Store应用程序仍然是Windows Store应用程序,即使它们不通过Windows Store分发。当API文档提到“Windows Store应用程序”时,它指的是“曾经被称为Metro风格应用程序”,而不是“通过Windows Store分发的应用程序”。至少大部分时间都是这个意思。这一切非常令人困惑。 - James McNellis
显示剩余7条评论

1

实际上,.Net框架在表面上包括Csharp编译器csc.exe。我已经成功编译了代码,但是WinRt似乎不喜欢在没有适当签名的情况下运行它。

IDE还需要一段时间才能出现,至少现在还没有。我相信只要有适当的签名,就可以运行已编译的可执行文件。

或者另一个人可能是对的,这不仅仅是签名的问题。


1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接