我试图从ObjectCreationExpressionSyntax对象获取类型信息但失败了. 下面是重现问题的示例(请参阅代码中的“ti.Type为null”): using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.CSharp; using Microsoft.CodeAnalysis.CSharp.Syntax; using Microsoft.CodeAnalysis.M
我想将更改应用于解决方案的多个文档,但只反映第一个更改,其余部分被拒绝.This链接显示了只有一次可以将更改应用于解决方案.这将是一个什么样的解决方案.我希望链接指向解决方案或代码片段. 这是我的功能: public static async Task<bool> AddMethod(string solutionPath) { v
我想在Roslyn的C#解决方案中删除源代码中的所有注释. 但我该怎么做? public void DeleteComment() { var code = File.ReadAllText("code.cs"); SyntaxTree tree = SyntaxFactory.ParseSyntaxTree(code); ///Delete Comments ? } 解决方法:只是@SLaks回
如何根据行号获取SyntaxNode?否则,如果它可以获得该行号的LineSpan然后到节点.解决方法:您可以从文档文本中获取一行的跨度.从那里,您可以找到与线的跨度相交的所有节点.这将返回多个语法节点,然后您可以使用您的条件来提取您要查找的节点: static void Main(string[] args)
我在嵌入式REPL中使用Roslyn脚本API,我不时需要知道在当前会话中定义了哪些变量,以及所有其他定义(类,接口……)以及引用和导入的命名空间. 我在API中找不到任何可以给我那种信息的东西,我知道它在某处. Dose Scripting API使用一些不寻常的实现,比如每次都更新内存中的程序集?如果
使用Roslyn / Microsoft.CodeAnalysis,我如何获得第三方类型的ISymbol,即在引用的程序集中定义的类型,它不是解决方案的一部分? 在我的特殊情况下,我正在寻找JSON.NET的JObject,但实际上同样的问题对于像StringBuilder等BCL这样的东西也是有效的. 我到目前为止唯一的想法是实现一个C
尝试使用C#SyntaxFactory从头开始构造表达式. Roslyn无法将我的InvocationExpressionSyntax识别为关键字的上下文名称,并在Emit命令时抛出错误诊断. 试图给Roslyn有效的代码解析,希望我能找到我的语法结构和“正确解析的”之间的差异.我能够跟踪差异到“nameof”标识符令牌,但那是
对于我的生活,我无法弄清楚为什么这行代码: var literalExpressionSyntax = Syntax.LiteralExpression(SyntaxKind.CharacterLiteralExpression); 在Roslyn CTP3下抛出ArgumentOutOfRangeException.解决方法:第二个参数是可选的原因是某些SyntaxKind值隐含了文本.例如,如果
我想使用Roslyn分析一个C#类,并打算在被访问属性应用了特定属性时执行某些操作.我怎么能在CSharpSyntaxWalker.VisitPropertyDeclaration方法覆盖中执行此操作? 例如,在下面的代码块中,我想知道Date属性是否具有Validation属性,如果是,则IsJDate是true还是false? [Validation(IsJDat
我想获得项目中所有使用类型的列表,例如: var x = 1; var y = x.ToString().GetType(); 代码应该返回System.Int32,System.String,System.Type. 我所拥有的是慢慢…对于每个文件(语法树),我执行以下操作: var root = await syntaxTree.GetRootAsync(); var nodes = root.Descendan
参见英文答案 > Bitwise-or operator used on a sign-extended operand in Visual Studio 2015 2个 我有一行代码在VS2015中给我一个警告信息(CS0675),但在2013年没有. shortValue |= (short)anEnum; W
我正在使用Roslyn来修改C#文件的语法.使用CSharpSyntaxRewriter,很容易在语法树中查找和替换节点.但是,生成的代码非常难看,甚至在所有情况下都不会解析,因为我创建的语法节点(使用SyntaxFactory)甚至缺少最少量的空白琐事. Roslyn是否提供了一些基本的格式化功能来避免这种情况,或
现有的Roslyn文档很薄,所以我希望有人知道如何做到这一点,或者至少指出我正确的方向.我尝试了很多东西,包括以下格式化sourceCode,但它不起作用: var tree = CSharpSyntaxTree.ParseText(soureCode); var root = (CSharpSyntaxNode)tree.GetRoot(); return root.ToFullString();
我正在尝试使用Roslyn创建一个小代码生成器,或者现在称为.NET编译器平台,我使用的是encodeom,这很麻烦,但是MSDN得到了参考,现在Roslyn几乎没有文档,所有文档都专注于代码分析代替代码生成. 所以我的问题很简单:我怎样才能创建如下内容: private const string MyString = "This is m
此代码不能与latest C# compiler一起编译: public class Program { public static void Main() { IntEnum a = (IntEnum)-1; } } public enum IntEnum : int { } 当你试图编译它时,它会引发 (3,22,3,29): Error CS0119: ‘IntEnum’ is a type, which is n
我正在开发一个针对OSX的netcoreapp1.0项目,我正在使用Roslyn设置一个脚本,如下所示: var scriptText = File.ReadAllText(args[0]); var scriptOptions = ScriptOptions.Default .WithReferences( typeof(System.Object).GetTypeInfo().Assembly ); var script
在使用Roslyn的所有示例中,您都有类似这样的内容: SyntaxTree tree = CSharpSyntaxTree.ParseText( @"using System; using System.Collections.Generic; using System.Text; namespace HelloWorld { // A whole program here... }"); var root = (CompilationUnitSyntax)tre
使用 Nuget 安装 Microsoft.CodeDom.Providers.DotNetCompilerPlatform 包即可。 VS2017都是用 roslyn 编译, VS2015原本的编译器 MSBuild 仍然是14版本,一些新的C#语法已经不支持编译,新的roslyn编译器,支持c# 6.0语法。它放到bin里面去是为了支持 asp.net 应用的动态编译。 通过