在发布模式下运行的UWP在当前上下文中不存在“'ApplicationData'”

时间:2016-07-25 03:44:14

标签: c# file-io uwp

当我在调试模式下运行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

将鼠标悬停在代码本身上会给我一个奇怪的超时:

enter image description here

如果ApplicationData不在发布应用的范围内,我该如何访问该文件夹?如果它应该在范围内,为什么不在这里呢?

编辑:当我尝试在按钮的单击事件中访问ApplicationData时,会发生同样的事情,因此它不是计时/初始化的事情。

1 个答案:

答案 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,如下所示: enter image description here

现在您可以正确地在发布模式下调试代码。