据我所知,Roslyn引入了Workspaces的概念。 Workspaces的一个实现是MsBuildWorkspace。
我的问题是,我可以从自定义构建任务中访问代表正在构建的项目的Roslyn工作区吗?
我怀疑这是MsBuildWorkspace的目的。如果是,我可以从自定义任务中的Execute
方法(从Microsoft.Build.Utilities.Task
派生)访问此工作区吗?
如果您想知道原因,我需要遍历正在构建的项目的其他方面。 对我来说,访问任务的特定输入文件以生成输出是不够的。
答案 0 :(得分:2)
我怀疑这是MsBuildWorkspace的目的
没有。
MsBuildWorkspace
的要点是将MSBuild项目或解决方案解析为Roslyn工作区。
MSBuild本身(它实际上是运行你的MSBuild任务)根本不使用Roslyn(它只是调用C#编译任务,这是使用Roslyn实现的),所以你不能使用MsBuildWorkspace
取。
您可以从项目文件中创建自己的 MsBuildWorkspace
。