Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

Cписок зависимостей проектов

374  1 2 все
Murr патриот23.10.17 16:42
Murr
NEW 23.10.17 16:42 

Кто-нибудь знает как можно быстренько получить список зависимостей проектов для нескольких солюшенов?


Т.е. где-то лежат

a1.sln

cc/b2.sln

dd/dd/cc/c3.sln


Нужны:

- список проектов в порядке построения

- список групп проектов которые можно строить параллельно

- список проектов которые должны быть построены до указанного проекта


Детали конфигураций пока вроде не требуются - достаточно просто имен и ГУИДов.

#1 
AlexNek патриот23.10.17 23:00
AlexNek
23.10.17 23:00 
в ответ Murr 23.10.17 16:42

Запросы точно кошачьи - пожрать побольше улыб

У решарпера есть архитектур въюв для солюшина и если еще что найти то будет тоже для солюшина. Всё остальное должно быть вне студии, что резко уменьшает вероятность исполнения.

https://marketplace.visualstudio.com/items?itemName=Visual...

https://www.ndepend.com/docs/dependency-structure-matrix-d...

#2 
Murr патриот24.10.17 00:44
Murr
NEW 24.10.17 00:44 
в ответ AlexNek 23.10.17 23:00

Ну а чего мелочится - У меня ПрЫнцеска жрет почти столько же сколько и Я...

только во мне 105 и Я днем работаю, а в ней - 1.05 и она спит сутками...


В пределах одного солюшена Я могу попробовать сделать через EnvDTE

Но грузить Студию для каждого солюшника и как-то объединять - слишком долго займет.

Да и не визуализация мне нужна, а подходящий дамп в ХМЛ...


Так что хотелось бы простую читалку солюшника со списком ссылок на включенные проекты.

Должна же быть где-то либа которой пользуется Студия... или МсБуилд... или что-то стороннее...

а построитель матрицы смежности Я и так имею.

#3 
Murr патриот24.10.17 01:00
Murr
NEW 24.10.17 01:00 
в ответ Murr 24.10.17 00:44

Кажется тут есть сурогат.

https://dependencyvisualizer.codeplex.com/SourceControl/la...

#4 
Murr патриот24.10.17 01:04
Murr
NEW 24.10.17 01:04 
в ответ Murr 24.10.17 01:00
Murr патриот24.10.17 17:15
Murr
NEW 24.10.17 17:15 
в ответ Murr 24.10.17 01:04

Две строки применительно к тексту солюшена меня смущают:

private static Regex projectDependenciesRegex = new Regex(@"ProjectSection\(ProjectDependencies\)\s=\spostProject(?<Data>.*?)EndProjectSection", RegexOptions.Singleline);

Match projectDependencyMatch = projectDependenciesRegex.Match(contents, m.Index, m.Length);


получается, что чел ожидает списка зависимостей в файле солюшена.

Смущает то, что Я их там никогда не видел...


Кто-нибудь их там находил? Как, кроме как руками, разумеется, создать?

#6 
AlexNek патриот24.10.17 23:05
AlexNek
NEW 24.10.17 23:05 
в ответ Murr 24.10.17 17:15

Что то то не то ищешь. Начинай с парсера солюшина. Там вроде 3 варианта

-мелкософт, как самый неудобный

https://stackoverflow.com/questions/707107/parsing-visual-...

//internal class SolutionParser
//Name: Microsoft.Build.Construction.SolutionParser
//Assembly: Microsoft.Build, Version=4.0.0.0

https://msdn.microsoft.com/en-us/library/microsoft.build.c...

https://docs.microsoft.com/en-us/dotnet/api/microsoft.buil...

https://msdn.microsoft.com/en-us/library/microsoft.build.b...

-Parsing VS Solution files with Sprache

http://blog.spinthemoose.com/2013/05/05/parsing-vs-solutio...

-Solution Parser

https://www.nuget.org/packages/Onion.SolutionParser.Parser

https://github.com/ost-onion/SolutionParser


потом прийдется парсить проекты.


Хотя для зависимостей я бы начал с бинарников, а потом замапил бы на проекты.

Для солюшина получается что то типа этого


#7 
Murr патриот25.10.17 11:17
Murr
NEW 25.10.17 11:17 
в ответ AlexNek 24.10.17 23:05

Я смотрел парсер солюшеона и проекта в MsBuild соурсах.

Но когда прикинул сколько надо перелопатить чтобы оно заработало как мне надо - пошел искать сурогат.

Нашел по первому приведенному линку.

Хороший или плохой - не важно - уже адаптировал под свои нужды.

Парсер проектов тал тоже присутствует.


Зависимости от бинарников меня сейчас не интересуют - сейчас мне интересны только зависимости от проектов

которые надо компилировать.


Хотя... надо пересмотреть твой первый линк - все ближе к стандарту...

Но дорабатывать там много - ребята поленились написать назначение нескольких пропертей... SolutionFile, SolutionDirectory...

Без них до проектов не добраться...

#8 
Murr патриот25.10.17 12:12
Murr
NEW 25.10.17 12:12 
в ответ Murr 25.10.17 11:17

-мелкософт, как самый неудобный

-----

Он не просто "неудобный" - он еще и частично не рабочий.


В доках написано - ПроектВСолюшене имеет свойство Депенденсиес.

https://msdn.microsoft.com/en-us/library/microsoft.build.c...

типа public IReadOnlyList<string> Dependencies { get; }


В реальности же возвращается АррайЛист, который не кастится к заявленному IReadOnlyList<string>...

К тому же сами проекты так и не читаются и Депенденсиес так и остается пустым...


Видимо, где-то в дебрях мелкомягких была идея прописать зависимости в солюсhнике, но ее не реализовали...

#9 
Murr патриот25.10.17 12:49
Murr
NEW 25.10.17 12:49 
в ответ Murr 25.10.17 12:12

Поторопился.

По твоему первому линку ниже есть ссылка на 14-ю версию - там есть полный парсер солушена.


Вроде дышит, но без зависимостей...


Пора ковырять проекты...


#10 
AlexNek патриот25.10.17 23:26
AlexNek
NEW 25.10.17 23:26 
в ответ Murr 25.10.17 12:49

в солюшине зависимости и не живут им там делать нечего.

Но могут быть различные неожиданности типа ссылки на бинарник дополнительного проекта.

#11 
Murr патриот26.10.17 00:01
Murr
NEW 26.10.17 00:01 
в ответ AlexNek 25.10.17 23:26

им там делать нечего

-----

Полной спеки на файл солюшена Я так и не нашел, но в коде парсера присутствует попытка извлечь инфу об проекте и добавить ее к Зависимостям.


Но могут быть различные неожиданности типа ссылки

-----

Я сегодня успел поковырять нечто под названием QuickGraph.

Работать заставить не получилось, но посмотрел как можно лепить проекты.

Там таки полный пипец...

Надо будет изучить...

#12 
AlexNek патриот26.10.17 00:47
AlexNek
NEW 26.10.17 00:47 
в ответ Murr 26.10.17 00:01

Я вот глянул что есть по зависимостям бинарников, тоже не густо. Бинарники хоть быстро обзор могут дать, а связать с солюшином может любой студент.

https://www.workshell.co.uk/products/netdepends/

https://www.codeproject.com/Articles/246858/Depends4Net-Pa...

https://github.com/isindicic/DependencyWalker.Net - не работает нормально но есть исходники

https://www.ndepend.com/docs/visual-studio-dependency-grap... - платное


А сколько у тебя солюшинов для одной проги?

#13 
Murr патриот26.10.17 12:29
Murr
NEW 26.10.17 12:29 
в ответ AlexNek 26.10.17 00:47

А сколько у тебя солюшинов для одной проги?

-----

У меня одни и те же проекты используются в разных солюшенах. Временами получаются накладки - сделал для одного, что-то померло в другом... или - нельзя задеплоить - что-то не готово...

А для деплоемой проги вообще-то - два солюшена - один для разработки - в Студии 2015, другой для деплоймента - в Студии 2010. Билли там нахомутал с деплойментом...


Бинарники хоть быстро обзор могут дать

-----

Ну выбираются ссылки на либы - есть там список.

Но там именно список - не ресолвится до косвенно загружаемых либ.

ДепенденсиВалкер есть скомпилированный - вполне приемлемо работает. Но к соурсникам у меня старая слабость - люблю поковырять...

#14 
AlexNek патриот26.10.17 23:58
AlexNek
NEW 26.10.17 23:58 
в ответ Murr 26.10.17 12:29
Временами получаются накладки - сделал для одного, что-то померло в другом...

Я так и не нашел нормального решения.

Вариант 1 - Если проект общий, то надо копировать его к основному проекту, чтобы он там и жил. Тогда любые изменения в общем проекте не будут влиять на основной. Проблема как исправлять ошибки во всех копиях. Промежуточное решение - пользовать ДЛЛ-ку

Тэгами и бранчами можно отменить копирование, но проблема синхронизации исправленных ошибо остается.

Вариант 2 - Линкуем все проекты к общему. Проблемы: компиляция общего через год и где аукнется очередное изменение.


Билли там нахомутал с деплойментом

А какого его для ентих целей пользовать?

И как ты собираешся эти два проекта в паралель компилить?

То бишь смысла в зависимостях не совсем понятно. Если бы CI был и большая куча солюшинов, тогда еще понятно.


не ресолвится до косвенно загружаемых либ

А кто тебе их до выполенения проги отрезолвит?

#15 
Murr патриот27.10.17 00:23
Murr
NEW 27.10.17 00:23 
в ответ AlexNek 26.10.17 23:58

Промежуточное решение - пользовать ДЛЛ-ку

-----

Дллка - уже есть.

Сейчас вот где-то потеряно - собран набор дллок для веб-сайта, по дллке на страницу, общие бизнес-части вынесены - какая-то не пересобрана - сайт падает...

Мне бы их хотя бы оттестить в кучке....


А какого его для ентих целей пользовать?

-----

А оно так налажено было.

На новой версии - не пошло. Недолго думая поставил на ВМ Студию 2010 и задеплоил...

Так и живет... разбираться что надо налаживать - там права, сертификаты и протоколы - некогда...


Если бы CI был и большая куча солюшинов, тогда еще понятно.

-----

Вот ЦИ у меня и начинается. Сервак уже крутится, репорты - получаю.

Бодаюсь с конфигурацией - какую версию и из какого места тянуть, куда результат класть.

Недельку поковырялся - понял - руками - не сдюжу... Леплю список проектов из солюшенов

- буду генерить конфиги...


А кто тебе их до выполенения проги отрезолвит?

-----

В заголовках инфа должна быть... пусть и не вся...

#16 
AlexNek патриот27.10.17 00:38
AlexNek
NEW 27.10.17 00:38 
в ответ Murr 27.10.17 00:23
общие бизнес-части вынесены - какая-то не пересобрана

Забил давно на это. Все что нужно в одну солюшин. Для копирования факе проект и затем rebuild all.


Бодаюсь с конфигурацией - какую версию и из какого места тянуть, куда результат класть.

Бесплатный небось взял. Понятно что никто не заплатит. хммм

В платном просто готовую солюшин скарлимаешь и все


В заголовках инфа должна быть... пусть и не вся

Ну поищи где то в заголовках какие плагины могут подгружаться смущ

#17 
Murr патриот27.10.17 14:10
Murr
NEW 27.10.17 14:10 
в ответ AlexNek 27.10.17 00:38

Все что нужно в одну солюшин.

-----

Ну если бы Я мог...

У меня вот проблемка - Оракле.ДатаАццесс,длл для х32, тоже для х64 и Оракле.МанагетДатаАццесс.длл.

Хотел переползти на последнюю...

Все собрал... но где-то пропустил... в результате - сайт падает... и на тестовой - не воспроизводится... т.е. где-то что-то осталось от предыдущих деплоев...


В платном просто готовую солюшин скарлимаешь и все

------

У меня чуток по другому - Я скармливаю пакет солюшников... :) Как раз дописал екстаркцию проектов...


Да, кто будет ковырять солюшник извлекая что-то похожее - не надейтесь на то, что приводимое в примерах будет соответствовать тому что будет в реальности.

В реальности может быть как много меньше, так и много больше информации...

В частности - не всегда в файле проекта есть определение ПроектТип... и если правильно написать ссылку - его не будет и в солюшнике.

Как Студия без типа проекта разбирается какой Таргет и компилятор - так и не понял...



Ну поищи

------

Ну ведь написано - "пусть и не вся"!

#18 
Murr патриот27.10.17 15:08
Murr
NEW 27.10.17 15:08 
в ответ Murr 27.10.17 14:10

Марлезонский балет часть... следующая.


SVN.

Задача - получить список файлов по маске с путями в СВН.


С СВНом - практически не работал - максимум - чекин-чекоут... и то - через Черепашку.


В общем - где рыть?

#19 
  JosefSchwejk местный житель27.10.17 22:34
NEW 27.10.17 22:34 
в ответ Murr 27.10.17 15:08

Мужики, что вы курите? Хоть скажите, где такую дурбалу берете, а?

#20 
1 2 все