CodeFixProvider 能否用于更改多个文档?

Can a CodeFixProvider be used to change more than one document?

我有一个 CodeFixProvider 可以更改文档,而且可以用。

但是我还需要在第一个文档更改的同时更改第二个文档。

我可以编写代码来修复第二个文档,但我不知道何时执行它,因为我看不到 CodeFixProvider 上的事件来报告用户实际选择它的时间并应用于第一份文件。如果 CodeFixProvider 只是被预览,我不想将更改应用到第二个文档。

有没有人解决过这个问题?或者有什么建议?任何帮助将不胜感激。

使用Document.Project.Documents访问项目中的所有文档。还有其他一些获取文档的方法,但它们取决于您尝试解决的任务。如果您需要更多信息,请描述您尝试实现的目标。

I don't want to apply the changes to the second document if the CodeFixProvider is simply being previewed.

事实上,你知道。代码修复提供程序不会直接更改有关用户实际代码的任何内容(请记住,Roslyn 的整个层次结构是不可变的)。相反,他们创建了一个应用了代码修复的新 Solution

无论如何,您都应该更改所有相关文档,并让 Roslyn 弄清楚如何处理这些更改。