我试图读取一个C#源文件并使用Resharper解析它.我想获取文件中使用的命名空间列表,但我在这一行中有一个例外.
ICSharpFile file = CSharpParserUtil.Parse(sCode);
Run Code Online (Sandbox Code Playgroud)
异常详细信息: JetBrains.Platform.ReSharper.Shell.dll中出现"System.InvalidOperationException"类型的第一次机会异常
线程0x1020已退出,代码为0(0x0).线程0x14c0已退出,代码为0(0x0).
static void Main()
{
String sCode = File.ReadAllText(@"D:\ResharperTries\TestFile.cs");
try
{
ICSharpFile file = CSharpParserUtil.Parse(sCode);
IList<ICSharpNamespaceDeclaration> x = file.NamespaceDeclarations;
foreach (ICSharpNamespaceDeclaration value in x)
{
Console.WriteLine(value.ContainingNamespace.ShortName);
}
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
}
Run Code Online (Sandbox Code Playgroud)
需要一些关于这个问题的帮助.
谢谢
小智 5
可以使用属于DXCore和CodeRush的解析器来执行此操作.
在10.2版本中,我们为C#和VB(可免费下载的 DXCore的一部分)发布了独立的解析器库,因此引用解析器库将使您可以轻松地完成所需的操作.
如果您需要帮助,只需发送电子邮件至support@devexpress.com即可.
下面是代码示例,可用于在名称空间中填充ListBox,在某些文件中使用:
string filePath = @"InsertFilePathHere";
CSharp30Parser parser = new CSharp30Parser();
SourceFile fileNode = parser.ParseFile(filePath) as SourceFile;
if (fileNode == null || fileNode.UsingList == null)
return;
lbUsedNamespaces.Items.Clear();
for (int i = 0; i < fileNode.UsingList.Count; i++)
{
string strUsing = fileNode.UsingList.GetKey(i) as String;
if (String.IsNullOrEmpty(strUsing))
continue;
lbUsedNamespaces.Items.Add(strUsing);
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
330 次 |
最近记录: |