ServiceStack对Razor v2的新支持使用FileSystemWatcher
检测对跟踪视图文件的更改并将其标记为无效,以便在下次请求时重新编译它们。
这非常适合调试,因为它可以让您编辑视图而不是重建/重新启动项目。
在我的Mac OS X(Mountain Lion)上的Mono(目前正在运行3.0.10)上,显然存在Mono错误,其中FileSystemWatcher
不会引发Changed
个事件以进行文件更改。此外,即使IncludeSubdirectories
设置为true,它也不会为子目录中的文件引发任何事件。
答案 0 :(得分:5)
在对各种事情进行调查和测试之后,我发现了一些针对Mono的旧版bug报告,指出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. / p>
因此,在我的应用程序启动期间,我添加了:
Environment.SetEnvironmentVariable("MONO_MANAGED_WATCHER", "enabled");
瞧,保存新版本后,我的Razor视图会被重新编译。 :)
答案 1 :(得分:1)
它可以工作,但单声道开始消耗大量的CPU时间:大约70%的一个核心。