2016-11-11 6 views
1

В настоящее время я пытаюсь получить список 3rdParties, поставляемых с каждым продуктом, и наткнулся на NDepend API. Основываясь на проведенных нами исследованиях, кажется, что вы загружаете файл решения, а на выходе появляется список DLL и EXE, связанных с этим решением. До сих пор я пытался:Можно ли использовать API NDepend для получения списка сборок и связанных с ними проектов?

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 Стартовая страница> Проанализировать решение VS

2) выбрать ваше решение

3) запустить анализ

Тогда вы можете просто изменить этот код запроса:

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

et voilà

NDepend querying for third-parties assemblies usage

Если некоторые сторонние сборки отсутствуют, это происходит потому, что они не были разрешены во время анализа. Посмотрите на список ошибок анализа и обновления списка папку, где NDepend будет искать сборки в NDepend Свойства проекта> Код для анализа> Справочники

NDepend project properties folders that contain assemblies

+0

это большое спасибо! У меня по-прежнему возникают проблемы с «System.IO.FileNotFoundException», произошедшим в ошибке mscorlib.dll при попытке программного проекта Ndepend. Вы знаете, почему это может произойти? – jshaf

+0

Я выполнил все шаги из раздела «Начало работы» из NDepend API – jshaf

+0

, можете ли вы дважды проверить этот шаг «все сборки NDepend должны присутствовать в $ NDependInstallPath $ \ и $ NDependInstallPath $ \ Lib». NDepend.API.dll на самом деле полагается на все другие сборки NDepend, поэтому они должны быть развернуты вместе с ним. –