Търся начин за откриване на проблеми с препратки към асемблиране в голямо решение на Visual Studio:
- Двоични препратки към лоши местоположения, като път, който не е в контрола на източника или в изхода на друг проект
- Двоични препратки към множество версии на едно и също сглобяване в проекти в решението
- Двоични препратки без път, които могат да бъдат пренасочени към GAC
- Двоични препратки, които трябваше да бъдат препратки към проекти
Цялата история
Работя върху голям C# проект с почти 200 проекта. Един от проблемите, които се прокрадват с течение на времето, е, че се добавят препратки към сборки, но не винаги към същата версия или към правилното местоположение.
Например, даден проект може да получи препратка към System.Web.Mvc без подсказващ път, което го прави препратка коя версия е в GAC. Visual Studio (и Resharper) също ще предложи да добави липсваща препратка, но може да го направи, като добави препратка към изходната папка на друг проект.
Сега скорошната катастрофа на Windows Update остави някои членове на екипа мъртви във водата, неспособни да създадат решението. Както можете да си представите, това увеличи приоритета на управлението на референтните сглобки за нас.
За да открия някои от най-очевидните проблеми, вече съм настроил файл msbuild, който може да бъде включен във всеки csproj файл и ще открие лоши препратки.
Новите файлове на проекта обаче ще трябва да се редактират ръчно, за да включат този скрипт. Така че това неизбежно ще бъде забравено.
Това, което наистина бих искал, е да проверя всички файлове на проекта в решение за „лоши“ препратки по време на непрекъснатото изграждане, така че всички проекти да се проверяват винаги.
От известно време търсих решение като това в Google и намерих много инструменти за статичен анализ и анализ на код, но нищо за анализиране на файлове на проекта в решение.
Така че, преди да изляза и да напиша собствено решение, има ли начин да направя това вече?
Актуализация
За да почистя кодовата база, създадох малко код на ScriptCS, който ще сканира всички csproj файлове за препратки към сборки в пакети Nuget и ще ги коригира. Има го в GitHub.