【问题标题】:Does .NET FileSystemWatcher work with Mono on Mac OS?.NET FileSystemWatcher 是否可以在 Mac OS 上与 Mono 一起使用?
【发布时间】:2011-11-23 04:50:53
【问题描述】:

我可以编写一个带有 FileSystemWatcher 的 Microsoft .NET 程序,并期望它可以在 Mac OS X 下使用 Mono 而不做任何更改吗?

【问题讨论】:

    标签: c# .net macos mono


    【解决方案1】:

    是的,它无需更改即可工作。 Mono 包含适用于所有平台的 FileSystemWatcher。

    请记住,您的代码可能希望使用 Path.PathSeperator 以更好地兼容不同平台上目录名称的不同格式。

    【讨论】:

    • 您可能希望使用所有 Path.* 成员以避免跨平台问题。
    • 实际上,通常使用Path.Combine(firstPartOfPath, secondPartOfPathOrPossiblyFilename) 来代替Path.PathSeperator 更合适。
    • 请注意,Mac 上的实现不会捕获 Changed 事件。见this bug report。我找到的只是this workaround
    • 另外请记住,除了根目录下的文件之外,它不适用于(正确地)任何文件。看到这个问题:stackoverflow.com/questions/16519000/….
    【解决方案2】:

    截至 2011 年 11 月,它存在并适用于某些用途,但不是全部。

    例如,LastWrite 和 Size 似乎不适用于 OSX。

    【讨论】:

    • 嗨,现在还是这样吗?我发现我没有在 MacOS 上使用 MONO FSW 获得 Changed 事件....
    • 很遗憾我放弃了这个 API 并停止使用它。相反,我使用 CoreServices FSEvents API 编写了一个自定义解决方案。
    • 嘿,丹尼——你有什么可以帮忙的机会吗?我正在尝试做同样的事情,但是我对 CFRunLoop 的调用杀死了 TeamCity 测试(我在 MonoDevelop 中的测试运行良好)。任何想法为什么???
    • 我对 TeamCity 的了解为零。
    • 嗨,丹尼,感谢您的反馈。我们已经获得了 Xamarain.Mac 的许可,它有一个 FSEvents 观察者正在工作......
    猜你喜欢
    • 1970-01-01
    • 2011-04-10
    • 1970-01-01
    • 2011-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-02
    相关资源
    最近更新 更多