Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么可以';我在Win10 ARM系统上运行基本的.NET核心应用程序吗?_C#_.net_Arm_Windows 10 Iot Core_.net Core - Fatal编程技术网

C# 为什么可以';我在Win10 ARM系统上运行基本的.NET核心应用程序吗?

C# 为什么可以';我在Win10 ARM系统上运行基本的.NET核心应用程序吗?,c#,.net,arm,windows-10-iot-core,.net-core,C#,.net,Arm,Windows 10 Iot Core,.net Core,目前,我正在使用Windows 10 IoT Core和新的.NET Core库测试一些家庭自动化。我已经用最新稳定版本的Windows 10 IoT Core(10.0.10586)安装了香草Rasberry PI 2。我还使用dnvm安装了当前最新的(RC2-20221).NET软件包,dnvm列表显示: Active Version Runtime Architecture OperatingSystem Alias ------ ------- -

目前,我正在使用Windows 10 IoT Core和新的.NET Core库测试一些家庭自动化。我已经用最新稳定版本的Windows 10 IoT Core(10.0.10586)安装了香草Rasberry PI 2。我还使用dnvm安装了当前最新的(RC2-20221).NET软件包,
dnvm列表
显示:

Active Version           Runtime Architecture OperatingSystem Alias
------ -------           ------- ------------ --------------- -----
   1.0.0-rc1-final   clr     x86          win
   1.0.0-rc1-final   coreclr arm          win
   1.0.0-rc1-final   coreclr x64          win
   1.0.0-rc1-final   coreclr x86          win
   1.0.0-rc1-update2 clr     x86          win             default, dnx-clr-win-x86.1.0.0-rc1-update2
   1.0.0-rc2-20221   clr     x64          win
   1.0.0-rc2-20221   clr     x86          win
   1.0.0-rc2-20221   coreclr arm          win
*  1.0.0-rc2-20221   coreclr x64          win
   1.0.0-rc2-20221   coreclr x86          win
然后,我创建了一个新的控制台应用程序(.NET Core),它只不过是打印一个字符串:

public class Program
{
    public static void Main(string[] args)
    {
        System.Console.WriteLine($"Hello Raspberry {Math.PI}!");
    }
}
我还更新了project.json文件,从中删除了“Microsoft.NETCore.App”依赖项的
“type”:“platform”
-属性。因此,我明确添加了两个运行时:

{
  "version": "1.0.0-*",
  "buildOptions": {
    "emitEntryPoint": true
  },

  "dependencies": {
    "Microsoft.NETCore.App": {
      "version": "1.0.0"
    }
  },

  "frameworks": {
    "netcoreapp1.0": {
      "imports": "dnxcore50"
    }
  },

  "runtimes": {
    "win10-x64": {},
    "win10-arm": {}
  }
}
第一个运行时(
win10-x64
)用于在我的开发机器上测试应用程序,后一个用于部署。我能够使用以下命令成功构建我的应用程序:

dotnet publish --output "X:\Dev\IoT\Samples\Console\output" --runtime win10-arm
在命令行中使用运行时参数
win10-x64
构建项目的效果与预期一样:我得到了一个功能齐全的可执行文件,它将所需的字符串打印到我的控制台。在将
win10 arm
-build部署到我的Rasberry PI之后,尝试从powershell执行应用程序会给我带来迄今为止遇到的最奇怪的错误:

Program 'IoT.Samples.Console.exe' failed to run: The operation completed successfully. + CategoryInfo : ResourceUnavailable: (:) [], ApplicationFailedException + FullyQualifiedErrorId : NativeCommandFailed 程序“IoT.Samples.Console.exe”无法运行:操作已成功完成。 +类别信息:ResourceUnavailable:(:)[],ApplicationFailedException +FullyQualifiedErrorId:NativeCommand失败 所以程序无法运行,因为。。。好。。。成功

我按照说明使用Powershell连接到RaspPI。此外,正如预期的那样,从我的x64机器运行ARM构建也不起作用。显然,应用程序get是为ARM正确编译的

那么为什么powershell会以错误响应呢?这个错误告诉了我什么


提前谢谢

如果您查看与CoreCLR for ARM相关的GitHub问题,您会发现最近的评论如下:

ARM的dotnet处于概念验证质量状态。事实上,它已经完全破碎了

我认为它还没有准备好…

根据
我们将在2016年第4季度或2017年第1季度获得ARM32/64支持

我在Windows 10 IoT Core RTM 10.0.14393.576上使用了Raspberry Pi3

问题是,您必须使用CoreCLR中提供的CoreRun.exe工具启动.NET Core应用程序

首先,您必须构建CoreCLR并将其部署到Windows 10 IoT核心

  • 克隆位于的dotnet/coreclr存储库的主分支
  • 通过在根存储库目录中键入以下命令来构建CoreCLR的源代码:
    Build.cmd release arm
    。 这将使用发布配置为ARM构建源代码。 在我的机器上,构建大约需要半个小时
  • 构建完成后,二进制文件可以在
    bin\Product\Windows\u NT.arm.Release
    目录中找到。将整个目录复制到Windows 10 IoT Core(例如,复制到
    C:\netcore\coreclr
  • 现在,您必须将.NET Core应用程序部署到Windows 10物联网核心设备:

  • 在project.json文件中指定
    win10 arm
    运行时
  • 删除“Microsoft.NETCore.App”依赖项的
    “type”:“platform”
    属性
  • dotnet还原
  • dotnet publish-c Release-r win10 arm
    (或
    -c Debug
    如果需要调试配置)
  • 您的应用程序发布包现在位于
    bin\Release\netcoreapp1.0\win10 arm\publish
    目录中。将此目录复制到Windows 10 IoT Core(例如,复制到
    C:\netcore\apps\MyApp
  • 现在,您只需使用CoreRun.exe工具运行应用程序。最重要的是您必须指定DLL文件,而不是EXE文件

    C:\netcore\coreclr\CoreRun.exe "C:\netcore\apps\MyApp\MyApp.dll"
    

    苏珊已经加入了.NET基金会,在这方面工作,所以它很有前途。我在下面的教程中创建.NET核心应用程序在RP2上,它工作。你有没有遵循任何教程?你有应用程序在W10的IOT核心吗?谢谢,这看起来很有希望!我还没有找到时间在我的RaspPI 2上尝试这个,但无论如何我都会接受这个答案,因为它描述了一个有效的解决方法,并且与其他答案相匹配。我猜dnc在我问这个问题的时候还没有准备好。无论如何,再次感谢。:)