-
1 votesanswersviews
Roslyn - CodeFixProvider正在被解雇但是DiagnosticAnalyzer不是用于类析构函数
我的分析器的伪代码 我的考试班: public class TestClass { ~TestClass() { } } 我的诊断分析器类有分析方法: public class TestClassAnalyzer : DiagnosticAnalyzer { public const string AnalyzerId = "TestId&quo... -
1 votesanswersviews
Roslyn AdditionalFiles
我想开发一个Roslyn Code Analyzer,它可以以文本文件的形式访问一些静态配置 . 由于分析器无法访问本地文件系统,因此我认为读取此类外部配置的唯一方法是通过Context Option和AdditionalFiles . 我知道处理这个问题的这个例子: https://github.com/dotnet/roslyn/blob/master/docs/analyzers/Using... -
1 votesanswersviews
Roslyn.Compilers.CSharp.Syntax.Identifier在哪里定义?
我正在写一个Roslyn代码修复程序,我想替换一个标识符标记 . 要做到这一点,我找到令牌,然后创建一个新令牌 var newToken = SyntaxFactory.Token(identifierToken.LeadingTrivia, SyntaxKind.IdentifierToken, newName, newName, identifierToken.TrailingTrivia);... -
7 votesanswersviews
可靠地将类型符号(ITypeSymbol)与Roslyn进行比较
我试图在以下情况下可靠地比较 ITypeSymbol 最简单和最直接的两种情况(我在一个更大的项目中遇到了这些问题,并试图尽可能地简化它): 我有这个SyntaxTree的CSharpCompilation: namespace MyAssembly { public class Foo { public Foo(Foo x) { } ... -
0 votesanswersviews
使用Roslyn编译到模块
我需要将任何C#或VB.NET项目编译为.NetModule . 我有以下示例代码发出DLL,需要一些帮助来修改以下从.csproj获取.NetModules 提前致谢 . // Required Microsoft.CodeAnalysis 1.3.0 class Program { static void Main(string[] args) ... -
1 votesanswersviews
Roslyn FindReferencesAsync返回相同类型的不同值
我有一个测试解决方案,其代码如下: public class Class1 { public string Foo { get; set; } } public class Business { public void DoStuff() { var c1 = new Class1(); } } 如果我通过这样的显式方式找到类型: var doc... -
4 votesanswersviews
Roslyn TypeDeclarationSyntax,MethodDeclarationSyntax,FieldDeclarationSyntax具有公共属性但没有公共基类或接口
What I am trying to do: 我正在使用roslyn编写代码重构 . 我的目标是开辟出一种优势 . 所以我正在做的基本上是我删除所有私人工作人员并用 throw new NotImplementedException() 替换非私人工作人员的机构 . What is my problem: 一切正常,但我最终得到了很多代码重复,如下所示: private static bool ... -
0 votesanswersviews
如何识别方法实现是否标记为async /可以异步调用,仅基于其使用Roslyn的接口?
Background Information 我正在为Visual Studio构建一个基于Roslyn的CodeFix,它处理类没有实现接口(或缺少该接口的一部分)的情况 . 接口通常是第三方代码,例如微软的IDocumentClient . 然后我创建了一个该接口的实现,其中对方法和属性的调用是通过由3个辅助方法中最相关的候选者处理它们的实际执行来“封装”的,作为装饰实现的一部分 . 这些帮助... -
0 votesanswersviews
关于开放解决方案的Roslyn错误:“处理文件'pathToFile'时,Msbuild失败并显示消息:该路径不是合法形式 . ”如何解决?
我正在尝试使用Roslyn分析一些解决方案,并使用标准代码打开解决方案: var msWorkspace = MSBuildWorkspace.Create(); var solution = msWorkspace.OpenSolutionAsync(path).Result; 问题是解决方案中的项目未打开,msWorkspace.Diagnostics属性包含一个故障诊断: 使用消息处理文... -
0 votesanswersviews
我能够为我的扩展程序获取Roslyn分析器,但未能获得相同诊断程序的codeFix提供程序
我创建了一个引用Roslyn分析器和代码修复库的vsix项目 . 我能够为我的扩展程序获取分析器,但无法获得相同诊断程序的代码修复提供程序 . 分析器 namespace CSharpDiagnostics { [DiagnosticAnalyzer(LanguageNames.CSharp)] public class AsyncMethodNameAnalyzer : Synt... -
-1 votesanswersviews
如何在roslyn中将字段声明转换为单独的自动属性?
我正在使用.NET编译器平台(Roslyn)编写带有代码修复的代码分析器 . 我需要将所有(非密封的)公共字段转换为单独的自动属性,因为我知道FieldDeclarationSyntax可以在一行中有多个字段声明,基于下面的Stackoverflow问题中的代码示例 . 这里讨论了多场声明的事实:How to get a Roslyn FieldSymbol from a FieldDeclara... -
1 votesanswersviews
Roslyn找不到IDictionary.Add接口实现成员
为什么Roslyn在下面的例子中找不到字典类型中的IDictionary.Add接口成员实现? IDictionary.Add和Dictionary.Add由Roslyn正确解析,但后来我在Dictionary类型中找不到实现IDictionary.Add方法 . Update 我用正确的代码添加了第二个代码示例 . VS2015,Roslyn 1.1.1: using System; using... -
3 votesanswersviews
使用Roslyn查找特定方法的所有方法调用
我正在使用Roslyn编写代码分析器,我当前的任务是找到程序集中未使用的所有内部方法 . 我从 MethodDeclarationSyntax 开始并从中获取符号 . 然后我在 SymbolFinder 中使用 FindCallersAsync 方法,但是即使我在程序集中某处调用了相关方法,它也会返回一个空集合 . 请参阅下面的代码 . protected override void Analyz... -
0 votesanswersviews
Roslyn:如何异步更新多个项目?
我正在研究在Visual Studio扩展(VSIX)中使用Roslyn编译器,它使用 VisualStudioWorkspace 来更新现有代码 . 想象一下,我目前的解决方案有12个项目 . 对于我想要的每个项目: 添加新的代码文件 更新现有代码文件 我理解这些对象的不变性,作为一个概念验证,我写了一个例子,对第一个项目进行了更改,然后是第二个项目,等等 . 然后我想知道是否可以使... -
4 votesanswersviews
使用Roslyn CodeFixProvider向方法添加参数
我正在写一个Roslyn Code Analyzer,我想确定 async 方法是否不采用 CancellationToken 然后建议添加它的代码修复: //Before Code Fix: public async Task Example(){} //After Code Fix public async Task Example(CancellationToken token){}... -
0 votesanswersviews
Roslyn:如何将多个项目的编译合并为一个单一的编译?
是否可以将每个项目的所有编译合并为1个编译?我目前正在研究静态代码分析器,因此,当例如一个方法调用来自同一解决方案中的另一个项目的另一个方法时,当我尝试使用 compilation.GetSemanticModel(SyntaxTree) 获取语义模型时,将会出现错误,如传递进入当前项目 Compilation 的另一个项目类的 SyntaxTree 将破坏我的代码 . 编辑:我想到获取每个项目的... -
1 votesanswersviews
Roslyn 2.x CodeFix实现了一个缺少的接口,委托给成员VS 2017
BACKGROUND 我正在寻求创建一个Roslyn CodeFix,它将响应来自Visual Studio附带的内置分析器的诊断警告,该警告将识别未 - 或部分 - 实现的接口,允许我遍历缺少的成员,以及生成自定义代码,将代理调用委托给实现该接口的类型的Member字段 . (随Visual Studio提供的Roslyn Analyzers和CodeFixs确实提供了这项功能,但我需要自定义和... -
1 votesanswersviews
如何使用Roslyn SDK编译.NET解决方案
对于多个(非常高级)分析,我想要Roslyn SDK:1 . 仅对“新”代码应用诊断(保留过时的代码)2 . 检测死代码(对于公共方法,定义应用程序的入口点)3 . 批量修复代码 换句话说:仅仅在视觉工作室中构建一个 DiagnosticAnalyzer 是不够的 . 我成功构建了这些,并为它们编写了单元测试(受到Sonar的启发) . 但是,这只是一次性分析一个(或最多一小部分)文件 . 所以这...