我可以从MsBuild Task类中访问MsBuildWorkspace吗?

时间:2015-01-14 16:48:46

标签: msbuild roslyn

据我所知,Roslyn引入了Workspaces的概念。 Workspaces的一个实现是MsBuildWorkspace。

我的问题是,我可以从自定义构建任务中访问代表正在构建的项目的Roslyn工作区吗?

我怀疑这是MsBuildWorkspace的目的。如果是,我可以从自定义任务中的Execute方法(从Microsoft.Build.Utilities.Task派生)访问此工作区吗?

如果您想知道原因,我需要遍历正在构建的项目的其他方面。 对我来说,访问任务的特定输入文件以生成输出是不够的。

1 个答案:

答案 0 :(得分:2)

  

我怀疑这是MsBuildWorkspace的目的

没有。
MsBuildWorkspace的要点是将MSBuild项目或解决方案解析为Roslyn工作区。

MSBuild本身(它实际上是运行你的MSBuild任务)根本不使用Roslyn(它只是调用C#编译任务,这是使用Roslyn实现的),所以你不能使用MsBuildWorkspace取。

您可以从项目文件中创建自己的MsBuildWorkspace