3

Razor v2 に対する ServiceStack の新しいサポートでは、 を使用して、FileSystemWatcher追跡されたビュー ファイルへの変更を検出し、無効としてマークして、次の要求で再コンパイルされるようにします。

これは、ビューを編集でき、プロジェクトを再構築/再起動しないため、デバッグに最適です。

私の Mac OS X (Mountain Lion) 上の Mono (現在 3.0.10 を実行中) では、ファイル変更のイベントが発生FileSystemWatcherしないという Mono のバグがあるようです。さらに、 true に設定されてChangedいても、サブディレクトリ内のファイルのイベントは発生しません。IncludeSubdirectories

4

2 に答える 2

5

FileSystemWatcherさまざまなことを調査してテストした後、機能の失敗に関する Mono に対する古いバグ レポートをいくつか見つけました。

この問題の回避策は、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

動作しますが、mono は多くの CPU 時間を消費し始めます: 1 つのコアの ~70%。

于 2014-06-27T09:43:27.510 に答える