Span<T> и друзья не работают в приложении.NET Native UWP
Действия по воспроизведению:
- Откройте Visual Studio 2017 с последним обновлением.
- Создайте целевой объект проекта UWP в 10240 (это не обязательно, оно сломано во всех сборках)
- устанавливать
System.Memory
из пакетов nuget (нажмите включить пререлиз) Скопируйте и вставьте этот код в 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); }
Скопируйте и вставьте это в MainPage.xaml
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> <TextBlock x:Name="tx1" HorizontalAlignment="Left" FontSize="48" TextWrapping="Wrap" Text="TextBlock" VerticalAlignment="Top"/> </Grid>
Переключитесь с Debug на Release x64 и убедитесь, что "Скомпилировано с.Net Native tool chain".
Нажмите Play.
Получите эту ошибку:
------ Начата сборка: Проект: 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 будет иметь поддержку этого.