当我在调试模式下运行UWP应用程序时,ApplicationData
存在。
当我在发布模式下运行时,似乎ApplicationData
已超出范围。相反,访问它超时。
我在库存UWP空白页应用解决方案中添加了两行:
sealed partial class App : Application
{
/// <summary>
/// Initializes the singleton application object. This is the first line of authored code
/// executed, and as such is the logical equivalent of main() or WinMain().
/// </summary>
public App()
{
this.InitializeComponent();
string strPath =
Windows.Storage.ApplicationData.Current.LocalFolder.Path; // <<< Added
System.Diagnostics.Debug.WriteLine(strPath); // <<< Added
this.Suspending += OnSuspending;
}
//...
在调试模式下运行,ApplicationData.Current.LocalFolder.Path
存在,strPath
类似于......
C:\Users\AUser\AppData\Local\Packages\[some guid-like number]_7442be4pe7dnc\LocalState
在发布模式下运行,如果我查看立即窗口中的内容,我会得到这个......
ApplicationData.Current.LocalFolder.Path,nq
The name 'ApplicationData' does not exist in the current context
将鼠标悬停在代码本身上会给我一个奇怪的超时:
如果ApplicationData
不在发布应用的范围内,我该如何访问该文件夹?如果它应该在范围内,为什么不在这里呢?
编辑:当我尝试在按钮的单击事件中访问ApplicationData
时,会发生同样的事情,因此它不是计时/初始化的事情。
答案 0 :(得分:1)
当我在发布模式下运行时,似乎ApplicationData已超出范围。相反,访问它超时。
在发布模式下运行UWP应用程序时。 VS使用.Net Native Tool Chain构建代码,并默认优化代码。它不适合调试。但它不会改变代码的输出。你无法在调试器中看到它。
您可以使用.Net Native Tool Chain禁用构建,并按以下步骤进行代码优化:
右键单击您的项目文件 - >左侧的&gt;属性 - &gt; Build
标记 - &gt;取消选中Compile with .Net Native tool chain
并取消选中Optimize code
,如下所示:
现在您可以正确地在发布模式下调试代码。