Tag: roslyn code analysis

在.NET核心项目上启用Microsoft的代码分析

我们的团队使用自定义规则集的代码分析function,如果我们忘记对方法参数执行null检查,则会导致构建失败。 但是,现在我们创建一个新的.NET Core项目时,它看起来并不像Code Analysis这些新项目的function。 “项目属性”区域中没有用户界面,并且按照此处的建议向项目添加自定义规则集只会影响StyleCop Analyzers( SAxxxx规则)。 有没有办法在.NET Core项目中启用代码分析( CAxxxx )规则?

Roslyn Code Action:如何检查预览或实际执行?

我目前正在尝试使用Roslyn和Code Actions,更具体的Code Refactorings。 这感觉很简单,但我有一个难以理解的问题。 代码操作作为“预览”选项针对虚拟工作区执行一次,以便您可以在单击操作并在实际工作区上执行操作之前查看实际更改。 现在我正在处理Roslyn不能真正做的一些事情,所以我正在通过EnvDTE做一些改变。 我知道,这很糟糕,但我找不到另一种方式。 所以这里的问题是: 当我将鼠标hover在我的代码操作上时,代码将作为预览执行,并且它不应该执行EnvDTE更改。 这些只应在真正的执行发生时完成。 我用我的代码的一个小例子创建了一个要点 。 它没有多大意义,但应该展示我想要实现的目标。 通过roslyn做一些修改,然后通过EnvDTE做一些事情,比如改变光标位置。 但当然只有真正的执行。 那些无法点击要点的人的相关部分: public sealed override async Task ComputeRefactoringsAsync(CodeRefactoringContext context) { var root = await context.Document.GetSyntaxRootAsync(context.CancellationToken).ConfigureAwait(continueOnCapturedContext: false); var node = root.FindNode(context.Span); var dec = node as MethodDeclarationSyntax; if (dec == null) return; context.RegisterRefactoring(CodeAction.Create(“MyAction”, c => DoMyAction(context.Document, dec, c))); } private static async […]

VS项目引用破坏了GUID的大小写敏感性

自从升级到VS 2015以来,我的团队经历了随机古怪的事情,我肯定现在正在微软解决这个问题。 一个令人讨厌的问题是我们似乎失去了项目引用,特别是在分支之后。 我昨天开始研究我们解决方案的一个新分支,但却发现这些类型无法识别,并且名称空间使用被引用为不必要的(因为它们是针对突然变得无法识别的类型)。 项目中的引用没有显示任何指示引用问题的图标,但只是为了查看它是否可行,我删除并重新添加了项目引用,这导致其类型再次被识别。 当然,这更新了项目文件,因此我查看了已经进行了哪些更改。 无法检测引用的项目与现在可以检测到的项目之间的唯一区别是GUID中的字母字符已从小写更改为大写。 例如: 旧的,破碎的参考: {95d34b2e-2ceb-499e-ab9e-b644b0af710d} Project.Name.Redacted 新的固定参考: {95D34B2E-2CEB-499E-AB9E-B644B0AF710D} Project.Name.Redacted 我正在寻找发生这种情况的原因以及我如何解决它而无需手动删除并重新添加所有地方的引用(并且无需将所有项目文件GUID转换为大写)。 我应该注意,这些“损坏的”引用并没有打破构建,并且它们只在错误列表中显示为IntelliSense错误,而不是构建错误。 所以,引用并没有真正被打破,它们刚刚打破了智能感知(可以说更糟糕了?!)。