roslyn相关内容

检查项目引用的分析器

我想创建一个解决方案来控制 C# 项目中的项目引用.理想情况下,此解决方案与 IDE 无关,因此可以与 Visual Studio、Jetbrains Rider 甚至 VS Code 一起使用.这样做的原因是我见过由于人们创建几乎任意的项目引用而完全搞砸的解决方案.在项目发展到一定规模后,很难让他们直接上手. 我知道 Visual Studio Enterprise 提供这种开箱即用的功能 ..
发布时间:2021-07-10 19:30:04 C#/.NET

在解决方案中使用 Roslyn 检索所有类型

有谁知道如何在解决方案中检索所有可用类型(语义)?创建多个项目的编译很容易. MSBuildWorkspace 工作区 = MSBuildWorkspace.Create();var solution = await workspace.OpenSolutionAsync(solutionPath, cancelToken);var 编译 = await Task.WhenAll(solutio ..
发布时间:2021-07-10 19:30:02 C#/.NET

键入时更新 Roslyn 文档的正确方法是什么?

当用户输入新文本时,更新 Roslyn 的 Document 的正确方法是什么?我应该在每个字符上调用 SourceText.WithChanges 然后 Document.WithText 还是有更有效的方法? 不幸的是,节流不是答案,请参阅我的问题 打字时使用 Roslyn 的 CompletionSevice 的最有效方法是什么? 其中 API 意味着 SourceText/Docum ..
发布时间:2021-07-10 19:29:56 C#/.NET

Roslyn:将 C# 转换为 VB

我遇到过需要将 C#- 转换为 VB.NET 项目的情况.(我想自动化这个,所以我不能使用在线工具或类似的东西) 有 一个“粘贴为 C#/VB"示例视觉工作室扩展似乎能够做到这一点. 我尝试转换这个类: 命名空间 TestApplication{类 Class1{//////逻辑///公共无效 Lorem(){}}} 但结果是这样的: 命名空间测试应用班级1''' ..
发布时间:2021-07-10 19:29:53 C#/.NET

如何查看一个类是否已经实现了与 Roslyn 的接口

我还是 Roslyn 的新手,所以希望这不是一个太愚蠢的问题. 我正在寻找的是一种查看类是否实现了接口的所有方法的方法,如果没有,则突出显示接口,就像内置的“实现接口" 到目前为止我可以看到方法名称是否被实现,但我还没有找到一种方法来查看方法上是否设置了正确的返回类型. 解决方案 您可以使用 ITypeSymbol.FindImplementationForInterfaceM ..
发布时间:2021-07-10 19:29:50 C#/.NET

Roslyn SyntaxTree 更改注入

我编写了我的类 MonitorSyntaxRewriter,它继承自 CSharpSyntaxRewriter.通过这个课程,我改变了我的 SyntaxTree.但是,我怎样才能在某处“注入"这个修改后的 synaxtree 呢?我的意思是,我在 Visual Studio 中有一些随机项目,在 Build 上,我希望所有的语法树都通过这个 MonitorSyntaxRewriter.有什么选择吗 ..
发布时间:2021-07-10 19:29:47 C#/.NET

获取 ReferenceLocation 的符号

我正在使用 SymbolFinder 在我的解决方案中查找对某个类型的所有引用,如下所示: ISymbol typeOfInterest = compiler.GetTypeByMetadataName("System.Reflection.PropertyInfo");var 引用 = SymbolFinder.FindReferencesAsync(typeOfInterest, solut ..
发布时间:2021-07-10 19:29:44 C#/.NET

Roslyn:获取第三方库中定义的类型的符号

使用 Roslyn/Microsoft.CodeAnalysis,我怎样才能获得第三方类型的 ISymbol,即在引用程序集中定义的类型,它不是解决方案的一部分?在我的特定情况下,我正在寻找 JSON.NET 的 JObject,但实际上同样的问题对 BCL 的东西(如 StringBuilder 等)有效. 到目前为止我提出的唯一想法是实现一个 CSharpSyntaxWalker,它查找 ..
发布时间:2021-07-10 19:29:41 C#/.NET

Roslyn 获取类的依赖项

我正在尝试确定一个类,它引用了什么(其他命名空间或外部库命名空间).对于给定的文档/语法树等,似乎是开箱即用的,没有办法做到这一点......还有更多我需要的只是使用符号查找器,遍历整个代码库中的每个文件,然后调用查找,粘贴找到的引用在地图中,然后向后导航地图. 我错了吗?我错过了一些简单的东西吗?我只是想建立一个依赖关系图......如果我从这个类开始,这里是它最终需要递归的所有东西.我不 ..
发布时间:2021-07-10 19:29:39 C#/.NET

Roslyn c# 脚本沙箱

有没有办法沙箱执行脚本,使其 a) 不能做任何“危险"的事情 b) 只要文件是,它可以访问它想要的任何文件在与脚本文件本身相同的目录中.有点像是将所有文件路径视为相对. 我想我是在询问 Roslyn 的脚本安全措施及其定制级别. 解决方案 这是可能的,但正如 SLaks 所说,这是一个难题.您可能应该阅读 在 .NET 4.0 中,我如何“沙箱"内存程序集并执行方法?.您需要以下步骤 ..
发布时间:2021-07-10 19:29:36 C#/.NET

从 ITypeSymbol 获取 TypeSyntax

我正在尝试使用 Roslyn-CTP. 目前我正在尝试用具体类型替换 var. var i=1; 应该变成: int i=1; 找出推断的类型很容易.但是因为这部分发生在语义模型中,所以我得到了一个 ITypeSymbol.替换发生在语法模型中,所以我需要一个 TypeSyntax.由于我不想要一个臃肿的名称(global::System.Int32),转换是依赖于上下文的(usin ..
发布时间:2021-07-10 19:29:33 C#/.NET

C# 或 VB 文档注释中的粗体或斜体?

有没有办法在文档注释中使用粗体或斜体?类似的东西: /// 清理方法.这是推荐清理方式.public void CleanAll(); 预定义标签列表 不包含这样的功能,但您知道某种实现强调/突出显示的方法吗?如果将鼠标悬停在代码上时它也可以显示在工具提示中,则最好. 我们有 和 ,但它们已经有了它们的语义. 解决方案 此功能现已在 Visual ..
发布时间:2021-07-10 19:29:30 C#/.NET

CSC:错误 CS7038:无法发射模块

安装 Visual Studio 2015 并构建我的项目后,我收到错误 “CSC:错误 CS7038:无法发射模块". 但是我的解决方案在 Visual Studio 2013 中构建良好. 这是一个 ASP.NET webforms 项目 .NET 4.0 有人吗? 更新:问题似乎与 Red Gate Smart Assembly 以及具有默认值的方法参数有关. ..
发布时间:2021-07-10 19:29:27 C#/.NET

Roslyn 向现有类添加新方法

我正在研究在 Visual Studio 扩展 (VSIX) 中使用 Roslyn 编译器,该扩展使用 VisualStudioWorkspace 更新现有代码.在过去的几天里阅读了这个,似乎有几种方法可以实现这一点......我只是不确定哪种方法对我来说是最好的. 好的,让我们假设用户在 Visual Studio 2015 中打开了他们的解决方案.他们单击我的扩展程序,然后(通过表单)他 ..
发布时间:2021-07-10 19:29:23 C#/.NET

从 Roslyn 中的行号获取节点

如何根据行号获取SyntaxNode?否则,如果有可能获得该行号的 LineSpan 然后到节点. 解决方案 您可以从文档文本中获取行的跨度.从那里,您可以找到与线跨度相交的所有节点.这将返回多个语法节点,然后您可以使用您的条件来提取您要查找的一个: static void Main(string[] args){无功代码 = @"使用系统;命名空间 ConsoleApplicatio ..
发布时间:2021-07-10 19:29:21 C#/.NET

使用 Roslyn 替换方法节点

在探索 Roslyn 时,我组合了一个小应用程序,该应用程序应包含跟踪语句作为 Visual Studio 解决方案中每个方法中的第一个语句.我的代码有问题,只更新第一种方法. 未按预期工作的行标有“TODO"注释.请指教. 我也欢迎可以创建更精简/可读的解决方案的风格建议. 提前致谢. ... private void TraceBtn_Click(object se ..
发布时间:2021-07-10 19:29:09 C#/.NET

如何在没有 nuget 或 VSIX 的情况下向项目添加自定义代码分析器?

我想在 Visual Studio 2015 中为 C# ConsoleApplication 编写自定义代码分析器.出于这个原因,我不想从模板创建一个单独的“带有代码修复的分析器"项目,因为这需要将此分析器作为 nuget 包添加到我的项目中. 是否可以手动添加分析器引用?我想在没有 nuget 的情况下引用分析器. 解决方案 如果您将分析器添加为 Nuget 并检查您的项目内容, ..
发布时间:2021-07-10 19:29:06 C#/.NET

替换 Roslyn 语法树中的多个节点

我正在尝试使用 roslyn 替换语法树中的几个节点.但它的不变性似乎妨碍了我. public static string Rewrite(string content){var tree = CSharpSyntaxTree.ParseText(content);var root = tree.GetRoot();var 方法 =root.DescendantNodes(node=>true ..
发布时间:2021-07-10 19:29:03 C#/.NET

根据 SyntaxTree 中的行号获取 SyntaxNode

我想获取给定位置(lineNumber)的行的 SyntaxNode.下面的代码应该是不言自明的,但如果有任何问题,请告诉我. static void Main(){string codeSnippet = @"使用系统;课程计划{static void Main(string[] args){Console.WriteLine(""你好,世界!"");}}";SyntaxTree 树 = Sy ..
发布时间:2021-07-10 19:29:00 C#/.NET