2016-11-11 58 views
1

我目前正试图获得每个产品附带的3rdParties列表,并且遇到了NDepend API。根据我所做的研究,您似乎在提供解决方案文件,并提供与该解决方案关联的DLL和EXE列表。到目前为止,我曾尝试:有没有办法使用NDepend API来获取程序集及其关联项目的列表?

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); 



} 

而且已经得到了类型“System.IO.FileNotFoundException”的未处理的异常出现在mscorlib.dll

有谁知道我在做什么错在这里。我只是想在解决方案中输出与每个项目关联的dll和exes列表。 PS:我对C#非常陌生,所以很抱歉,如果这看起来微不足道!

回答

1

end of the NDepend API getting started页面,您将找到有关如何操作的说明。

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

1)从NDepend的开始页>分析与解决方案

2)选择您的解决方案

3)运行分析

然后,你可以编辑该代码查询:

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

etvoilà

NDepend querying for third-parties assemblies usage

如果某些第三方组件丢失,这是因为它们在分析时尚未解决。看看分析错误列表并更新文件夹列表,NDepend的将寻找在NDepend的项目属性>代码组件来分析>目录

NDepend project properties folders that contain assemblies

+0

这是伟大的感谢!在尝试以编程方式创建Ndepend项目时,我仍然遇到mscorlib.dll错误中发生的'System.IO.FileNotFoundException'问题。你知道为什么会发生这种情况吗? – jshaf

+0

我已经遵循了NDepend API – jshaf

+0

入门部分的所有步骤,请仔细检查此步骤“所有NDepend程序集必须存在于$ NDependInstallPath $ \和$ NDependInstallPath $ \ Lib中”。 NDepend.API.dll实际上依赖于所有其他的NDepend程序集,因此必须使用它进行部署 –

相关问题