需要构建针对.NET Standard\Core而不是.NET Portable的Roslyn Analyzer

Iva*_*lev 6 analyzer roslyn .net-core .net-standard

我正在使用Visual Studio 2017附带的默认Roslyn SDK模板.他们创建的项目以.NET Framework Portable为目标.我假设Roslyn可扩展性项目可以针对.NET Standard\Core而不是Portable,我正在寻找模板或我可以研究的Roslyn Analyzer\Refactoring项目示例.

nej*_*jcs 9

此处提供默认分析器模板中转换分析仪的样本.有原始分析器用于比较以及TestAnalyzerStandard针对.NET标准.

使其工作的步骤:

  • 创建新的.NET标准库
  • 库必须以.NET Standard 1.3为目标.如果您希望在VS(扩展目标.NET 4.6)中运行Analyzer作为扩展,则需要这样做.此处提供标准版本和完整框架版本之间的映射.此外,如果您尝试定位低于1.3的版本,则无法包含所需的分析器包.
  • 添加nuget包以获取Microsoft.Composition最新版本.这需要Microsoft.CodeAnalysis.CSharp.Workspaces.如果您首先尝试添加工作空间,则会收到引用的合成包不兼容的错误.
  • 添加nuget包Microsoft.CodeAnalysis.CSharp(我正在使用最新的1.*版本)
  • 添加nuget包Microsoft.CodeAnalysis.Csharp.Workspaces(版本应该与版本匹配Microsoft.CodeAnalysis.CSharp).
  • 此时,您可以从便携式项目中复制代码并构建它.应该没有错误(如果VS仍然显示红色波形,您可能必须关闭并重新打开解决方案).
  • 要使VS扩展工作,只需打开source.extension.vsixmanifest,转到资源选项卡并更改对.NET标准库的引用
  • 要创建.nuget包,只需执行即可nuget pack Diagnostic.nuspec ..Diagnostic.nuspec适用于Nuget 2.x. 如果您在VS 2017中使用nuget通过包管理控制台,则必须更改<file src="*.dll" ..."<file src="bin\*\netstandard1.3\*.dll" ....

这些步骤是我使用分析器进行实验的结果(我之前使用的是创建DLL,它针对完整的框架,而不是可移植的库).他们绝不是官方的.


Iva*_*lev 5

我开始研究一个新的Roslyn项目并逐个构建,而不是使用模板.https://github.com/IKoshelev/Roslyn.AutoLogging/commit/1f88e3e49141e0fa425c51fdcb3457a7c3d6dcaa

我设法进行了以下定位:

重构项目 - .NET Standard 1.3(此.dll将分发,版本保持最小)

UnitTests项目 - .NET Core 2.0

VSIX项目 - .NET Framework 4.6(我相信,只有完整的Visual Studio支持VSIX,所以没关系)

更新 Roslyn的版本控制现在有点复杂,即如果要在Visual Studio 2015中使用扩展,则必须使用PCL库.有关Roslyn的文章末尾的更多信息