Roslyn中的工作区

4

Roslyn中有哪些不同的工作区,它们之间的区别是什么?我只知道MSBuildWorkspaceAdhocWorkspace。工作区如何影响Roslyn分析?我已经阅读过需要DnxWorkspace用于MVC项目,但我还没有尝试过。


1
https://joshvarty.wordpress.com/2014/09/12/learn-roslyn-now-part-6-working-with-workspaces/ - Venkata Dorisala
这些对MVC项目的分析有什么影响?我读到MVC项目需要DnxWorkspace。你了解DnxWorkspace吗?谢谢。 - Kim KangIn
是的。MVC项目需要DnxWorkspace进行分析。除非您说出了您已经完成了什么,否则很难解释。您需要下载一个NuGet包才能开始。Microsoft.CodeAnalysis.Workspaces.Dnx。请明确您想要实现什么。 - Venkata Dorisala
我不太确定你所说的“我想要实现什么”,但基本上我正在做一个静态代码分析器,用于检测ASP.NET项目中的安全漏洞。它在WebForms类型的项目上运行良好,但在MVC项目上却不行。我的代码中使用了许多符号API,因此在分析MVC项目时会出现许多空引用指针。那么,是什么区别使得Dnxworkspace能够分析MVC项目呢?谢谢! - Kim KangIn
@KimKangIn:DnxWorkspace适用于_.Net Core项目_,无论其类型如何。它知道如何加载它们的引用和其他属性。 - SLaks
还有一个名为VisualStudioWorkspace的工作空间,它是由Visual Studio托管的工作空间,用于VS插件。 - Matt Warren
1个回答

3
一个Roslyn工作区是访问解决方案模型的共同点。
工作区之间的差异主要在于如何构建解决方案模型,无论是从读取文件中构建还是其他方式。
MSBuildWorkspace会为您从msbuild解决方案或项目文件构建解决方案模型。
AdhocWorkspace需要您通过API调用手动构建解决方案,添加项目和文档。
DnxWorkspace通过阅读早期的dotnet core project.json文件来构建解决方案模型。
当Roslyn在Visual Studio内部使用时,它使用一个VisualStudioWorkspace,从VS项目系统获取解决方案模型。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接