2010-08-25 29 views
8

Tengo una aplicación bastante compleja que se ha dividido en varios componentes. Cada componente tiene un archivo de solución que contiene un montón de proyectos. Entonces me gusta pensar en esto porque un componente tiene múltiples proyectos/dlls en él. También hay un componente "común". Todos los otros componentes dependen de "común". Entonces, una compilación es la siguiente: "nant component1.compile" compilará "común" y luego compilará el componente 1, ya que el componente1 depende de "común". Con el tiempo, "común" se ha vuelto bastante grande. Estoy bastante seguro de que se puede dividir en algunos componentes más pequeños. Entonces los componentes necesitan depender solo de algunos de estos "elementos comunes" más pequeños y rotos. Se espera que esto reduzca el tiempo de compilación para los diferentes componentes.¿Cómo obtengo un diagrama de las dependencias entre mis proyectos de C#?

Me gustaría visualizar la dependencia entre los diferentes proyectos en la aplicación y también etiquetar a qué componente pertenece el proyecto. ¿Cómo harías esto?

Respuesta

1

La herramienta NDepend propone una gráfica de dependencia junto con una matriz de dependencia. De forma predeterminada obtendrá un gráfico de dependencia de ensamblados .NET y no está restringido a ensamblajes de una sola solución VS. NDepend está integrado en VS 2017, 2015, 2013, 2012, 2010 y esto puede mostrar cualquier tipo de gráfico en su código que incluye:

  • dependencias entre asambleas
  • gráfico de llamadas
  • método,
  • dependencias de espacios de nombres en el interior un proyecto VS,
  • dependencias de tipos dentro de un espacio de nombres,
  • clases gráfica de herencia,
  • gráfico que representa las clases de acoplamiento entre 2 componentes

etc ...

Esto se explica todo here.

NDepend code graph dependency diagram

NDepend también propone un dependency structure matrix (DSM) y una forma de query dependencies with C# LINQ queries.

1

Intenté importarlo en una herramienta UML que pudiera representarme el diagrama de dependencia entre módulos.

Existen varias en el mercado, tanto comerciales como de código abierto. Obtenga el que le brinde la mayor capacidad para su presupuesto.

+0

¿Está sugiriendo ingresar manualmente las dependencias en una herramienta UML? Es bastante trabajo manual que preferiría no hacer. – Rohith

+0

No tiene que generar las dependencias si la herramienta las generará en el momento de la importación. No puedo hablar por las capacidades de cada herramienta. – duffymo

0

entender me fue sugerida esta mañana (:

http://www.scitools.com/

pero sinceramente no puedo dar un informe adecuado sobre el mismo, ya que es demasiado caro para mí ...

0

Si está de acuerdo con la información del nivel de ensamblaje, entonces debe mirar el complemento Graph a la popular herramienta Reflector. Proporciona el ensamblado & gráfico de dependencia de nivel de clase.

0

Tenga una mirada en mi libre plugin de DSM para .NET Reflector descargable desde www.tom-carter.net

Permite dos puntos de vista diferentes en sus dependencias: un modelo de implementación para encontrar las dependencias entre los conjuntos y un modelo arquitectónico para mostrar las dependencias entre los tipos .

Si no proporciona visualmente la información que busca, puede guardar el modelo en xml y ejecutar su propia secuencia de comandos en los datos.

La ventaja de una matriz de dependencias es que es mucho más fácil de analizar dependencias visual de caja y gráficas de línea

Si necesita más ayuda me dejó ahora

[Actualización] Este plugin es ahora disponible en forma de un complemento de Visual Studio en

2

Si tiene acceso a Visual Studio 2010 último, puede seleccionar en el menú Generate Dependency GraphArchitecture.

Hay un tutorial en MSDN: How to: Generate Dependency Graphs for .NET Code

+0

Parece que tiene un gráfico de dependencia dentro de una solución. En mi caso, cada componente está representado por una única solución. Me gustaría obtener un gráfico que muestre qué componente depende de qué parte de otro componente. Por lo tanto, se trata de dependencias entre soluciones, pero con un marcador de a qué solución pertenece una dependencia en particular. – Rohith

Cuestiones relacionadas