我尝试创建负责分析现有dll并基于此生成输出代码的应用程序。我创建了.netCore控制台应用程序作为入口点和几个.netCore类库,它们包含分析和生成逻辑。
我试图添加Mircosoft.Codeanalysis包参考时检测到第一个问题:
错误包Microsoft.Composition 1.0.27与。不兼容 netcoreapp1.1(.NETCoreApp,Version = v1.1)。包 Microsoft.Composition 1.0.27支持:portable-net45 + win8 + wp8 + wpa81 (.NETPortable,版本= V0.0,档案= Profile259)
通过添加.csproj文件设置解决了这个问题:
<PackageTargetFallback>$(PackageTargetFallback);portable-net45+win8+win81+wp8+wpa81</PackageTargetFallback>
这足以完成生成输出代码的应用程序的第一部分,但是当我尝试使用MsBuildWorkspace.Create()方法从输入dll获取sln,项目和目标类时,我遇到了这个错误:
错误CS0103当前不存在名称“MSBuildWorkspace” 上下文Roslyn.Codegen.WorkspaceParser
我认为它与在.netCore应用程序中使用Mircosoft.CodeAnalysis packag有关。
不幸的是,我没有找到任何有用的.netCore应用程序和Roslyn样本来获得这方面的最佳实践,我不确定Roslyn和netCore是否具有良好的兼容性。
这是github repo的链接: https://github.com/ddydeveloper/Roslyn.ApiClient.Codegen/tree/dev
那么,将Roslyn代码分析API和netCore应用程序混合起来是个好主意吗?你能给出任何好样本或建议如何解决Roslyn和netCore兼容性问题吗?