我一直致力于使用Roslyn的工作空间API来加载项目的VS Code扩展,此时扩展project.json通过包中的ProjectJsonWorkspace类型支持.NET Core的旧格式Microsoft.DotNet.ProjectModel.Workspaces.
随着新的工具更改即将发布,我很想支持新的.csproj构建格式,但似乎无法找到支持它的.NET Standard兼容工作区.
我的理解是,因为它正在使用MSBuild,我将需要使用MSBuild(Microsoft.CodeAnalysis.MSBuild)包,但此时它不支持.NET Standard.
如果存在,或者我是否必须考虑创建自己的工作区实现,最佳解决方案是什么?
Jos*_*ard 13
与各种人交谈后,似乎没有与.NET Standard兼容的MS Build工作区,下面的答案可以看出以下GitHub问题:
我们还没有完成使MSBuildWorkspace与新的MSBuild跨平台正常工作的工作.与此同时,您可能会看看omnisharp在填充工作区时的作用.
因此,在编写本文时,如果您希望在符合.NET标准的项目中定位MSBuild工作区,那么您需要使用Roslyn的工作区API构建自己的自定义工作区,这正是OmniSharp所做的.
更新(16/10/2017):
虽然MSBuildWorkspace仍然不支持.NET Standard,但有一个名为Buildalyzer的库可以跨平台工作,并将为您生成AdhocWorkspace,从而实现相同的目标.
using Buildalyzer.Workspaces;
// ...
AnalyzerManager manager = new AnalyzerManager();
ProjectAnalyzer analyzer =
manager.GetProject(@"C:\MyCode\MyProject.csproj");
AdhocWorkspace workspace = analyzer.GetWorkspace();
Run Code Online (Sandbox Code Playgroud)
同样的库也允许您引用解决方案文件.
| 归档时间: |
|
| 查看次数: |
2177 次 |
| 最近记录: |