Span <t>和朋友不在.NET Native UWP app

时间:2018-04-18 12:41:24

标签: c# uwp .net-native system.memory

重现的步骤:

  1. 使用最新更新打开Visual Studio 2017。
  2. 在10240中创建一个UWP项目目标(这不是强制性的,在所有版本中都已破坏)
  3. 从nuget包安装System.Memory(点击包括预发布)
  4. 将此代码复制粘贴到MainPage.cs

    private void MainPage_Loaded(object sender, RoutedEventArgs e)
    {
       void Recursive(ReadOnlySpan<char> param)
       {
           if (param.Length == 0) return;
    
           tx1.Text += Environment.NewLine;
    
           tx1.Text += new string(param.ToArray());
           Recursive(param.Slice(1));
       }
    
       ReadOnlySpan<char> mySpan = "Why things are always broken in Visual Studio".AsSpan();
    
       Recursive(mySpan);
    }
    
  5. 将其粘贴到MainPage.xaml

    <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
       <TextBlock x:Name="tx1" HorizontalAlignment="Left"   FontSize="48" TextWrapping="Wrap" Text="TextBlock" VerticalAlignment="Top"/>
    </Grid>
    
  6. 从Debug切换到Release x64并确保“使用.Net Native工具链编译”。

  7. 点击播放。

  8. 收到此错误:

  9.   

    ------ Build build:项目:App12,配置:发布x64 ------
        App12 c:\ Users \ myuser \ documents \ visual studio 2017 \ Projects \ App12 \ App12 \ bin \ x64 \ Release \ App12.exe
        处理申请代码
      C:\ Users \ myuser.nuget \ packages \ microsoft.net.native.compiler \ 1.7.3 \ tools \ Microsoft.NetNative.targets(697,5):错误:内部编译器错误:对象引用未设置为实例一个对象。
      ==========构建:0成功,1失败,0最新,0跳过==========
      ==========部署:0成功,0失败,0跳过==========

    我做错了什么?这适用于没有.NET Native的调试和发布。感谢。

1 个答案:

答案 0 :(得分:3)

  

System.Memory处于预发布状态,但在.NET Native中不起作用。下一版本的.NET Native编译器将支持此功能。

https://github.com/dotnet/corert/issues/5725