无论如何使用NDepend API来获取程序集及其相关项目的列表?

时间:2016-11-11 17:54:33

标签: c# api static-analysis ndepend

我目前正在尝试获取每个产品附带的3rdParties列表,并且遇到了NDepend API。基于我所做的研究,似乎你输入了一个解决方案文件,然后列出了与该解决方案相关的DLL和EXE。到目前为止,我已经尝试过:

static void Main(string[] args)
{
    var ndependServicesProvider = new NDependServicesProvider();
    var projectManager = ndependServicesProvider.ProjectManager;
    var visualStudioManager = ndependServicesProvider.VisualStudioManager;
    var projPath = "C:\\code\\depot\\Captiva\\IA\\EIM\\_Trunk\\Src\\BuildInputAccel.Installers.sln";
    var sln = projPath.ToAbsoluteFilePath();
    var vsSlnOrProjFilePaths = new List<IAbsoluteFilePath> { sln };
    var assembliesFilePath = (from vsSlnOrProjFilePath in vsSlnOrProjFilePaths

                              from assembliesFilePathTmp in visualStudioManager.GetAssembliesFromVisualStudioSolutionOrProject(vsSlnOrProjFilePath)

                              select assembliesFilePathTmp).Distinct().ToArray();
    IProject project = projectManager.CreateTemporaryProject(assembliesFilePath, TemporaryProjectMode.Temporary);
    project.CodeToAnalyze.SetApplicationAssemblies(assembliesFilePath);
    projectManager.SaveProject(project);
    IAnalysisResult analysisResult = project.RunAnalysis();
    Console.Write(analysisResult.CodeBase);



}

并且已经获得了一个未处理的类型&#39; System.IO.FileNotFoundException&#39;发生在mscorlib.dll

有谁知道我在这里做错了什么。我只想输出与解决方案中每个项目相关的dll和exes列表。 PS:我对C#很新,很抱歉,如果这看起来微不足道的话。

1 个答案:

答案 0 :(得分:1)

end of the NDepend API getting started页面,您可以找到有关该怎么做的说明。

实际上可以使用集成的Code Querying LINQ (CQLinq)工具来查询引用的实时第三方程序集及其用法。

1)从NDepend开始页面&gt;分析VS解决方案

2)选择你的解决方案

3)运行分析

然后您可以编辑此代码查询:

from a in ThirdParty.Assemblies
select new { a, a.AssembliesUsingMe }

etvoilà

NDepend querying for third-parties assemblies usage

如果缺少某些第三方程序集,则是因为它们在分析时尚未得到解决。查看分析错误列表并更新NDepend将在NDepend Project Properties&gt;中查找程序集的文件夹列表。要分析的代码&gt;目录

NDepend project properties folders that contain assemblies