roslyn相关内容

如何获取用某个属性注释的所有属性?

我刚开始使用 Roslyn,我想找到所有用属性名称“OneToOne"注释的属性.我启动了 SyntaxVisualizer 并能够获得对该节点的引用,但我想知道是否有更简单的方法来实现这一点.这就是我所拥有的: var prop = document.GetSyntaxRoot().DescendantNodes().OfType().Where(p => p.DescendantNodes( ..
发布时间:2021-07-10 19:31:19 C#/.NET

在哪里可以找到 VS 2015 的 Roslyn 项目模板?

我发现了这个问题但接受的答案提供了两个无效链接.如果您点击它们,您将看到如下内容: 此项目尚未发布.如果您是该项目的所有者,请使用适当的帐户登录. 所以我的问题是.在哪里可以找到适用于 VS 2015 的 Roslyn 项目模板的安装程序? 解决方案 我相信您正在寻找 .Net 编译器平台 SDK:https://visualstudiogallery.msdn.microso ..
发布时间:2021-07-10 19:31:17 其他开发

是否可以使用 Rosyln 或 Resharper 来检测可能的 DivideByZero 案例?

我正在尝试确定是否有一种编程方式来检查我的代码库中可能存在的 DivideByZeroException.我的代码库包括一系列相对简单到相对复杂的公式,其中大约 1500 个(并且还在不断增加).编写新公式时,必须注意确保安全地进行除法,以避免在处理这些公式时出现异常. 例如 十进制val1 = 1.1m;十进制 val2 = 0m;var res = val1/val2;//坏的var ..
发布时间:2021-07-10 19:31:14 C#/.NET

检查变量类型以进行代码分析

在 Roslyn 代码分析器中检查变量类型的正确方法是什么?我正在注册一个 ObjectCreationExpressionSyntax 节点,我可以获得类型,但我不确定检查它是否是我关心的类型的正确方法. 我通过检查显示字符串找到了一种方法,但我想知道是否有更正确的方法来完成此操作.例如,下面是尝试检查 ArrayList 创建的代码. private static void Synta ..
发布时间:2021-07-10 19:31:11 C#/.NET

Roslyn:如何获得未解析的类型

我使用的是 Roslyn 2012 年 9 月的 CTP. 在 c# 代码文档中获取未解析类型的最优雅方法是什么?例如.类型 Guid 需要 System 命名空间.目前我有这样的事情: var semanticModel = (SemanticModel)document.GetSemanticModel();var tree = (SyntaxTree)document.GetSyn ..
发布时间:2021-07-10 19:31:08 其他开发

使用 Roslyn 检测 c# 6 功能

有没有办法使用 roslyn 诊断分析器检测 c# 6 功能? 我有一个解决方案,该解决方案可以链接无法使用 c#6 功能的项目中的某些文件,因此我想仅针对这些文件将其设为错误.需要明确的是 - 我不能将整个项目设置为 c#5,只有一些文件是不受限制的. 我可以尝试捕捉特定的功能,但它很麻烦,我想知道是否有更快的方法? 解决方案 您可以使用此 Walker 来检测 C# 6 语 ..
发布时间:2021-07-10 19:31:02 C#/.NET

StackExchange.Precompilation - 如何对预编译诊断进行单元测试?

背景 我正在使用 StackExchange.Precompilation 在 C# 中实现面向方面的编程.查看我在 GitHub 上的存储库. 基本思想是客户端代码将能够在成员上放置自定义属性,并且预编译器将对具有这些属性的任何成员执行语法转换.一个简单的例子是我创建的 NonNullAttribute.当 NonNullAttribute 放在参数 p 上时,预编译器将插入 if ..
发布时间:2021-07-10 19:30:59 C#/.NET

使用 Roslyn 语义模型在单个 .cs 文件中查找符号

我正在使用 Roslyn 创建一个分析器,如果特定类以不同步的方式公开其字段,它会警告用户,以帮助防止竞争条件. 问题: 我目前有工作代码来检查以确保字段是私有的.我在解决最后一个难题时遇到了麻烦:想办法确保所有字段只能在锁块内访问,因此它们(表面上)是同步的. 使用系统;使用 System.Collections.Generic;使用 System.Collections.Immu ..
发布时间:2021-07-10 19:30:44 C#/.NET

新的 C# 6 对象初始值设定项语法?

我刚刚注意到在 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 ..
发布时间:2021-07-10 19:30:41 C#/.NET

如何以编程方式向项目添加程序集引用?

我一直在尝试使用 Roslyn 来解析解决方案文件,并以编程方式向解决方案中的每个项目添加自定义程序集引用. 我尝试使用以下代码片段来做同样的事情: //DLL的名字是customLib.dllvar reference = MetadataReference.CreateAssemblyReference("customLib");project = project.AddMetadat ..
发布时间:2021-07-10 19:30:35 C#/.NET

获取 cshtml 文件的语义模型?

我想使用 Roslyn 在 Razor 视图内的 C# 代码块的上下文中分析语义信息. 有没有办法(在 Visual Studio 2015 中,甚至在单元测试中)获取表示此代码的 SemanticModel? 解决方案 Razor 文件包含一个 C# 投影缓冲区,其中包含生成的 C# 代码(包括您不是自己编写的部分).此缓冲区具有完整的 Roslyn 服务,正是您要寻找的. 你需 ..
发布时间:2021-07-10 19:30:28 C#/.NET

Roslyn SDK 预览版中的代码格式

在早期版本 (Roslyn CTP) 中,我使用以下代码来格式化生成的代码,并且运行良好: SyntaxNode.Format(FormattingOptions.GetDefaultOptions()).GetFormattedRoot() 新的 Roslyn 版本不再如此,那么新版本(SDK 预览版)中上述代码的等效项是什么? 解决方案 您可以像这样使用 Microsoft.Cod ..
发布时间:2021-07-10 19:30:22 C#/.NET

何时使用 SemanticModel.GetSymbolInfo 以及何时使用 SemanticModel.GetDeclaredSymbol

在某些情况下,当我尝试为我的语法节点获取 ISymbol 时,我在使用 SemanticModel.GetSymbolInfo 时失败(获取 null)但在使用 SemanticModel.GetDeclaredSymbol 时成功. 我在下面附上了一个例子. 所以我的问题是什么时候使用每种方法来获取语义模型? 公共类 Class1{公共 System.String MyString ..
发布时间:2021-07-10 19:30:16 C#/.NET

当空引用似乎不可能时,为什么我们会收到可能取消引用空引用警告?

在 HNQ 上阅读了这个问题后,我继续阅读了关于 C# 8 中的可空引用类型,并做了一些实验. 我非常清楚,当有人说“我发现了一个编译器错误!"时,10 次中有 9 次,甚至更频繁.这其实是有意为之,也是自己的误会.而且由于我今天才开始研究这个功能,很明显我对它不是很了解.有了这个,让我们看看这段代码: #nullable enable课程计划{静态无效主(){var s = "";var ..
发布时间:2021-07-10 19:30:13 C#/.NET

C#字符串插值是如何编译的?

我知道插值是 string.Format() 的语法糖,但是当它与字符串格式化方法一起使用时,它是否有任何特殊的行为/识别? 如果我有一个方法: void Print(字符串格式,params object[] 参数) 以下使用插值调用它: Print($"{foo} {bar}"); 以下哪一行调用最符合字符串插值的编译结果? Print(string.Format("{0} { ..
发布时间:2021-07-10 19:30:10 C#/.NET