Roslyn のワークスペースを使用して、Visual Studio が提供するアクティブな IWorkspace へのフックを取得する方法はありますか?
Visual Studio で ExampleProject を開くことができるようにしたいのですが、自分のアプリケーションで を介して ExampleProject を再度開きたいのですRoslyn.Services.Workspace
が、Visual Studio で生成されたファイル/コードの変更を監視するためだけです。プロジェクトをワークスペースにロードするだけの有望なテストを実行し、何らかの方法でディスクから魔法のように変更を取得することを望んでいましたが、そのような運はありませんでした。
唯一の可能性は次のとおりです。
現在読み込まれているワークスペースへの参照を Visual Studio から直接取得します。VSがプロセスの境界を越えてこれを公開するかどうか、またはその方法を見つける方法はわかりません。
プロジェクト全体を Visual Studio 拡張機能として作り直し、開いているワークスペースに自動的にアクセスできるようにします。私は今、拡張機能の構築に飛び込みたくありません。
テストに使用しているコードは次のとおりです。
public class ProjectDiskMonitor
{
public ProjectDiskMonitor(string fullProjectPath)
{
WS = Workspace.LoadStandAloneProject(fullProjectPath, null, null, null, true) as Workspace;
WS.WorkspaceChanged += new EventHandler<WorkspaceEventArgs>(TargetProjectChanged);
//this event is not being fired as I edit the project via another instance of VS
}
private void TargetProjectChanged(object sender, WorkspaceEventArgs e)
{
Console.WriteLine("Project changed");
}
private Workspace WS
{
get;
set;
}
}