roslyn相关内容
我刚开始使用 Roslyn,我想找到所有用属性名称“OneToOne"注释的属性.我启动了 SyntaxVisualizer 并能够获得对该节点的引用,但我想知道是否有更简单的方法来实现这一点.这就是我所拥有的: var prop = document.GetSyntaxRoot().DescendantNodes().OfType().Where(p => p.DescendantNodes(
..
我发现了这个问题但接受的答案提供了两个无效链接.如果您点击它们,您将看到如下内容: 此项目尚未发布.如果您是该项目的所有者,请使用适当的帐户登录. 所以我的问题是.在哪里可以找到适用于 VS 2015 的 Roslyn 项目模板的安装程序? 解决方案 我相信您正在寻找 .Net 编译器平台 SDK:https://visualstudiogallery.msdn.microso
..
我正在尝试确定是否有一种编程方式来检查我的代码库中可能存在的 DivideByZeroException.我的代码库包括一系列相对简单到相对复杂的公式,其中大约 1500 个(并且还在不断增加).编写新公式时,必须注意确保安全地进行除法,以避免在处理这些公式时出现异常. 例如 十进制val1 = 1.1m;十进制 val2 = 0m;var res = val1/val2;//坏的var
..
在 Roslyn 代码分析器中检查变量类型的正确方法是什么?我正在注册一个 ObjectCreationExpressionSyntax 节点,我可以获得类型,但我不确定检查它是否是我关心的类型的正确方法. 我通过检查显示字符串找到了一种方法,但我想知道是否有更正确的方法来完成此操作.例如,下面是尝试检查 ArrayList 创建的代码. private static void Synta
..
我使用的是 Roslyn 2012 年 9 月的 CTP. 在 c# 代码文档中获取未解析类型的最优雅方法是什么?例如.类型 Guid 需要 System 命名空间.目前我有这样的事情: var semanticModel = (SemanticModel)document.GetSemanticModel();var tree = (SyntaxTree)document.GetSyn
..
(请注意:这与运行时反射/元信息无关) 我正在编写 Roslyn CSharpSyntaxVisitor 的具体实现 实施 VisitIdentifierName 时 public override SyntaxNode VisitIdentifierName(IdentifierNameSyntax name){var symbolInfo = _semanticModel.Get
..
有没有办法使用 roslyn 诊断分析器检测 c# 6 功能? 我有一个解决方案,该解决方案可以链接无法使用 c#6 功能的项目中的某些文件,因此我想仅针对这些文件将其设为错误.需要明确的是 - 我不能将整个项目设置为 c#5,只有一些文件是不受限制的. 我可以尝试捕捉特定的功能,但它很麻烦,我想知道是否有更快的方法? 解决方案 您可以使用此 Walker 来检测 C# 6 语
..
背景 我正在使用 StackExchange.Precompilation 在 C# 中实现面向方面的编程.查看我在 GitHub 上的存储库. 基本思想是客户端代码将能够在成员上放置自定义属性,并且预编译器将对具有这些属性的任何成员执行语法转换.一个简单的例子是我创建的 NonNullAttribute.当 NonNullAttribute 放在参数 p 上时,预编译器将插入 if
..
我正在使用 Roslyn 创建一个分析器,如果特定类以不同步的方式公开其字段,它会警告用户,以帮助防止竞争条件. 问题: 我目前有工作代码来检查以确保字段是私有的.我在解决最后一个难题时遇到了麻烦:想办法确保所有字段只能在锁块内访问,因此它们(表面上)是同步的. 使用系统;使用 System.Collections.Generic;使用 System.Collections.Immu
..
我刚刚注意到在 Visual Studio 2015 中编写的 C# 中可以实现以下功能,但我以前从未见过它: 公共类 X{公共 int A { 得到;放;}公共 Y B { 得到;放;}}公开课 Y{公共 int C {get;放;}}公共无效 Foo(){var x = new X { A = 1, B = { C = 3 } };} 我期望 Foo 必须像这样实现: public vo
..
我正在加载 MSBuildWorkspace 中的解决方案: var msWorkspace = MSBuildWorkspace.Create();var 解决方案 = msWorkspace.OpenSolutionAsync(solutionPath).Result; 没有 ProjectReferences 的项目显示所有 MetadataReferences,包括 mscorlib.
..
我一直在尝试使用 Roslyn 来解析解决方案文件,并以编程方式向解决方案中的每个项目添加自定义程序集引用. 我尝试使用以下代码片段来做同样的事情: //DLL的名字是customLib.dllvar reference = MetadataReference.CreateAssemblyReference("customLib");project = project.AddMetadat
..
假设我从一组方法中查询了一个方法: var myMethod = someListofMethods.FirstOrDefault(m => m.Identifier.ValueText == myMethodName); 现在我想获取方法的返回类型... var returnType = myMethod.ReturnType; ...并确定(如果它不是原始类型)该类型中包含哪些属性.
..
我想使用 Roslyn 在 Razor 视图内的 C# 代码块的上下文中分析语义信息. 有没有办法(在 Visual Studio 2015 中,甚至在单元测试中)获取表示此代码的 SemanticModel? 解决方案 Razor 文件包含一个 C# 投影缓冲区,其中包含生成的 C# 代码(包括您不是自己编写的部分).此缓冲区具有完整的 Roslyn 服务,正是您要寻找的. 你需
..
从 EnvDTE.ProjectItem 获取 Roslyn 的 SyntaxTree 的最佳方法是什么?我找到了另一种方法(Roslyn's Document into ProjectItem). 我从打开的文档中调用了 VSIX 命令,我想在那里试验 Roslyn 的语法树. 此代码有效,但对我来说看起来很尴尬: var pi = GetProjectItem();var pi
..
在早期版本 (Roslyn CTP) 中,我使用以下代码来格式化生成的代码,并且运行良好: SyntaxNode.Format(FormattingOptions.GetDefaultOptions()).GetFormattedRoot() 新的 Roslyn 版本不再如此,那么新版本(SDK 预览版)中上述代码的等效项是什么? 解决方案 您可以像这样使用 Microsoft.Cod
..
我有一个来自 roslyn 语法树的 ClassDeclarationSyntax.我是这样读的: var tree = SyntaxTree.ParseText(sourceCode);var root = (CompilationUnitSyntax)tree.GetRoot();var classes = root.DescendantNodes().OfType(); 标识符只包含类名
..
在某些情况下,当我尝试为我的语法节点获取 ISymbol 时,我在使用 SemanticModel.GetSymbolInfo 时失败(获取 null)但在使用 SemanticModel.GetDeclaredSymbol 时成功. 我在下面附上了一个例子. 所以我的问题是什么时候使用每种方法来获取语义模型? 公共类 Class1{公共 System.String MyString
..
在 HNQ 上阅读了这个问题后,我继续阅读了关于 C# 8 中的可空引用类型,并做了一些实验. 我非常清楚,当有人说“我发现了一个编译器错误!"时,10 次中有 9 次,甚至更频繁.这其实是有意为之,也是自己的误会.而且由于我今天才开始研究这个功能,很明显我对它不是很了解.有了这个,让我们看看这段代码: #nullable enable课程计划{静态无效主(){var s = "";var
..
我知道插值是 string.Format() 的语法糖,但是当它与字符串格式化方法一起使用时,它是否有任何特殊的行为/识别? 如果我有一个方法: void Print(字符串格式,params object[] 参数) 以下使用插值调用它: Print($"{foo} {bar}"); 以下哪一行调用最符合字符串插值的编译结果? Print(string.Format("{0} {
..