Span<T> и друзья не работают в приложении.NET Native UWP

Действия по воспроизведению:

  1. Откройте Visual Studio 2017 с последним обновлением.
  2. Создайте целевой объект проекта UWP в 10240 (это не обязательно, оно сломано во всех сборках)
  3. устанавливать System.Memory из пакетов nuget (нажмите включить пререлиз)
  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 tool chain".

  7. Нажмите Play.

  8. Получите эту ошибку:

------ Начата сборка: Проект: App12, Конфигурация: Выпуск x64 ------
App12 c: \ Users \ myuser \ Documents\visual studio 2017\ Проекты \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 пропущено ==========

Что я делаю не так? Это работает в Debug и выпуске без.NET Native. Благодарю.

1 ответ

Решение

System.Memory находится в состоянии предварительного выпуска и еще не работает с.NET Native. Следующая версия.NET Native будет иметь поддержку этого.

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

Другие вопросы по тегам