3

ServiceStack 对 Razor v2 的新支持使用 aFileSystemWatcher来检测跟踪视图文件的更改并将它们标记为无效,以便在下一次请求时重新编译它们。

这对于调试非常有用,因为它可以让您编辑视图而不是重建/重新启动项目。

在我的 Mac OS X(Mountain Lion)上的 Mono(当前运行 3.0.10)上,显然存在一个 Mono 错误,其中FileSystemWatcher不会引发Changed文件更改事件。此外,即使IncludeSubdirectories设置为 true,它也不会为子目录中的文件引发任何事件。

4

2 回答 2

5

在调查和测试各种事情之后,我发现了几个针对 Mono 的关于FileSystemWatcher功能失败的旧错误报告。

该问题的解决方法可在 Mono 源代码中找到: https ://github.com/mono/mono/blob/master/mcs/class/System/System.IO/FileSystemWatcher.cs

string managed = Environment.GetEnvironmentVariable ("MONO_MANAGED_WATCHER");
...
if (String.Compare (managed, "disabled", true) == 0)
    NullFileWatcher.GetInstance (out watcher);
else
    DefaultWatcher.GetInstance (out watcher);

如果您将环境变量设置MONO_MANAGED_WATCHER为任何值(我将其设置为“启用”),那么它将使用DefaultWatcher托管实现,并且可以在 Mac OS X 上运行。

所以在我的应用程序启动期间,我添加了:

Environment.SetEnvironmentVariable("MONO_MANAGED_WATCHER", "enabled");

瞧,我的 Razor 视图在我保存新版本后重新编译。:)

于 2013-05-31T14:12:09.307 回答
1

它可以工作,但单声道开始消耗大量 CPU 时间:约 70% 的一个内核。

于 2014-06-27T09:43:27.510 回答