Span<T> 和朋友不在 .NET Native UWP 应用程序中工作
Posted
技术标签:
【中文标题】Span<T> 和朋友不在 .NET Native UWP 应用程序中工作【英文标题】:Span<T> and friends not working in .NET Native UWP app 【发布时间】:2018-09-28 17:07:34 【问题描述】:重现步骤:
-
使用最新更新打开 Visual Studio 2017。
在 10240 中创建一个 UWP 项目(这不是强制性的,它在所有构建中都已损坏)
从 nuget 包安装
System.Memory
(单击包含预发布版)
将此代码复制粘贴到 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 工具链编译”。
点击播放。
收到此错误:
------ 构建开始:项目:App12,配置:Release 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 的调试和发布。谢谢。
【问题讨论】:
“Span<T>
和朋友们”,你是怎么得出这个结论的?如果删除这些引用,它会编译吗?没有递归怎么办?
如果我删除 System.Memory 和这个 Spanchar[]
类型?
如果我删除 SpanSystem.Memory 处于预发布状态,尚不适用于 .NET Native。 .NET Native 编译器的下一版本将支持此功能。
https://github.com/dotnet/corert/issues/5725
【讨论】:
以上是关于Span<T> 和朋友不在 .NET Native UWP 应用程序中工作的主要内容,如果未能解决你的问题,请参考以下文章
C# 7.2 中的 Span<T> 和 Memory<T> 有啥区别?