【问题标题】:Can't use FileSystemWatcher in Visual Studio 2012无法在 Visual Studio 2012 中使用 FileSystemWatcher
【发布时间】:2012-12-29 05:24:24
【问题描述】:

我是 Visual Studio 和 C# 的新手。我习惯于使用 XCode 和 Objective-C,但现在我正在尝试编写一个 Windows 8 应用程序。当用户单击我的应用程序中的按钮时,我正在尝试设置FileSystemWatcher,但由于某种原因,Visual Studio 拒绝识别我可以这样做并引发错误。这是我写的一个示例:

using System;
using System.IO;
...

namespace My_APP
{
...
    public sealed partial class MainPage : My_App.Common.LayoutAwarePage
    {
    ...
        public void button_click_1(object sender, RoutedEventArgs e)
        {
            FileSystemWatcher watch = new FileSystemWatcher();
        }
    }
}

FileSystemWatcher 两次都用红色下划线显示错误:Error 1 The type or namespace name 'FileSystemWatcher' could not be found (are you missing a using directive or an assembly reference?) 我做错了什么(我确信这非常简单)。

【问题讨论】:

  • 因为FileSystemWatcher 不包含在用于 Windows 8 应用程序的 .NET 版本中。如果受支持,您会在 MSDN 页面的版本信息部分看到“.NET for Windows Store apps, Supported in: Windows 8”。
  • 我想知道这是否可能是因为您正在尝试构建 Metro 应用程序,并且 FileSystemWatcher 需要完全信任。我认为安全模型存在一些问题,导致应用无法在 FullTrust 模式下运行。
  • @mikez 您不妨将其添加为答案,因为这就是 OP 所面临的。 Windows 应用商店应用程序使用完全不同的 API,它都是异步的,并且对资源的访问受到限制。如果您知道替代方案(怀疑是否存在),您可以提出建议。
  • @Will 对。就个人而言,我不认为这是一个“答案”,因为我无法提供任何建议或替代方案。
  • @mikez "No" 和任何解释一样好。

标签: c# visual-studio visual-studio-2012 microsoft-metro filesystemwatcher


【解决方案1】:

因为FileSystemWatcher 不包含在用于 Windows 8 应用程序的 .NET 版本中。如果受支持,您将在MSDN page 的版本信息部分看到“.NET for Windows Store apps, Supported in: Windows 8”。将此与BinaryReader(即available)进行对比。

Windows.Storage namespace 具有用于在 Windows 8 应用中访问文件系统的 API。

【讨论】:

  • 谢谢你,这让我发疯了!
【解决方案2】:

要在创建、修改或删除文件或文件夹时获得通知,您可以使用 Windows.Storage.Search.StorageFolderQueryResultWindows.Storage.Search.StorageFileQueryResult 类以及 ContentsChanged 事件。

【讨论】:

  • 我相信你是对的。但是,我无法让 ContentsChanged 可靠地触发。这似乎是一个常见问题。
猜你喜欢
  • 2013-03-25
  • 1970-01-01
  • 1970-01-01
  • 2013-06-23
  • 2012-08-28
  • 1970-01-01
  • 2013-06-17
  • 2014-11-20
相关资源
最近更新 更多