.NET FileSystemWatcher在Mac OS上能与Mono一起使用吗?

6

我能否使用FileSystemWatcher编写Microsoft .NET程序,并期望在Mono下的Mac OS X上无需更改即可工作?

2个回答

10

是的,它可以不经过更改就能正常工作。Mono在所有平台上都包括FileSystemWatcher。

请注意,您的代码可能需要使用Path.PathSeparator以便与不同平台上格式化目录名称的不同方式更兼容。


4
为避免跨平台问题,建议使用所有 Path.* 成员。 - H H
5
实际上,与其使用 Path.PathSeparator,通常更合适的做法是使用 Path.Combine(firstPartOfPath, secondPartOfPathOrPossiblyFilename) - mookid8000
5
请注意,Mac 上的实现无法捕获“Changed”事件。请参见此错误报告。我所找到的仅有 这个解决方法 - corwin.amber
3
请记住,它仅适用于根目录直接下属的文件,并且对于其他任何文件都不起作用(正确)。请参阅此问题:https://dev59.com/Q3LYa4cB1Zd3GeqPSwka。 - Christoffer Reijer

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

例如,LastWrite和Size在OSX上似乎无法工作。

1
嗨,这还是现状吗?我发现在MacOS上使用MONO FSW时无法获取Changed事件... - penderi
我很遗憾放弃了这个API,不再使用它。相反,我使用CoreServices FSEvents API编写了一个定制的解决方案。 - Danny Dulai
嘿Danny - 有没有可能你能帮忙?我也在尝试做同样的事情,但我的调用CFRunLoop却导致TeamCity测试失败(在MonoDevelop中的测试正常运行)。你知道为什么吗? - penderi
我对TeamCity毫不熟悉。 - Danny Dulai
1
嗨,Danny,感谢您的反馈。我们已经获得了Xamarin.Mac许可,其中包含FSEvents观察程序... - penderi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接