我们已经在一个项目上工作了一年多,并且最终准备好在商店中获取它,并且商店要求使用NET Native工具链进行编译。更改为和编译工作正常,但它在启动时崩溃,我们无法告诉问题是什么,因为断点没有被击中,并且调用堆栈是无用的;它只显示了一些互操作dll等。
我阅读了安德鲁·霍尔关于调试.NET Native工具链应用程序的博客,但是他取消选中“优化”选项的建议仍然没有出现断点或提供任何有用的信息。
所以我想我会做一个'Hello World'应用程序并慢慢开始添加新代码,直到它中断。我创建了一个新的Xamarin PCL应用程序;更新了所有Nuget软件包,并获得“欢迎”屏幕。然后我检查项目中的.NET Native工具链选项,它在启动时崩溃,异常在Helins.g.cs中的InternalInitialize语句中:
public static void Initialize()
{
if (s_initialized != 2)
if (global::System.Threading.Interlocked.CompareExchange(
ref s_initialized,
1,
0
) == 0)
{
InternalInitialize();
global::System.Threading.Volatile.Write(
ref s_initialized,
2
);
}
else
while (global::System.Threading.Volatile.Read(ref s_initialized) != 2)
{
global::System.Runtime.InteropServices.SpinWaitExtensions.Yield();
}
}
它唯一告诉我的是
“MobileApp.UWP.exe中0x0F38DB1B(mrt100_app.dll)处的未处理异常:0xC0000602:发生了失败快速异常。”
有一篇文章建议在观察窗口中有一些符号可以手动加载,但应用程序非常简单,没有变量,也没有本地的任何变量。
我真的必须遗漏一些基本的东西,但我读到的一切似乎暗示它至少应该打破断点等,只要它没有被优化。所以我真的不知道从哪里开始,如果我甚至不能让你好世界跑。我正在使用2017年的视觉工作室。
那么,我怎么能让它与.Net Native Toolchain一起运行,或者至少给我一个关于它有什么问题的线索?