Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
¿Por qué usar diagramas de dependencias?
Para asegurarse de que el código no entra en conflicto con su diseño, valide el código con diagramas de dependencia en Visual Studio. Esto puede ayudarle a:
Busque conflictos entre las dependencias del código y las dependencias en el diagrama de dependencias.
Busque dependencias que podrían verse afectadas por los cambios propuestos.
Por ejemplo, puede editar el diagrama de dependencias para mostrar posibles cambios en la arquitectura y, a continuación, validar el código para ver las dependencias afectadas.
Refactorice o migre código a un diseño diferente.
Busque código o dependencias que requieran trabajo al mover el código a una arquitectura diferente.
Requisitos
Visual Studio
Para crear un diagrama de dependencias para un proyecto de .NET Core, debe tener Visual Studio 2019 versión 16.2 o posterior.
Solución que tiene un proyecto de modelado con un diagrama de dependencias. Este diagrama de dependencias debe estar vinculado a artefactos en proyectos de C# o Visual Basic que desee validar. Consulte Creación de diagramas de dependencias a partir del código.
Para ver qué ediciones de Visual Studio admiten esta característica, consulte Compatibilidad de edición con herramientas de arquitectura y modelado.
Puede validar el código manualmente desde un diagrama de dependencias que esté abierto en Visual Studio o desde el símbolo del sistema. También puede validar el código automáticamente al ejecutar compilaciones locales o compilaciones de Azure Pipelines.
Importante
Si desea ejecutar la validación de capas mediante Team Foundation Server (TFS), también debe instalar la misma versión de Visual Studio en el servidor de compilación.
Validación de dependencias dinámicas
La validación de dependencias se produce en tiempo real y los errores se muestran inmediatamente en la lista de errores.
La validación dinámica es compatible con C# y Visual Basic.
Para habilitar el análisis completo de la solución al usar la validación de dependencia activa, abra la configuración de opciones de la barra dorada que aparece en la lista de errores.
- Puede descartar permanentemente la barra dorada si no está interesado en ver todos los problemas arquitectónicos de la solución.
- Si no habilita el análisis completo de la solución, el análisis solo se realiza para los archivos que se están editando.
Al actualizar proyectos para habilitar la validación en vivo, un cuadro de diálogo muestra el progreso de la conversión.
Al actualizar un proyecto para la validación de dependencias dinámicas, la versión del paquete NuGet se actualiza para que sea la misma para todos los proyectos y es la versión más alta en uso.
Agregar un nuevo proyecto de validación de dependencias desencadena una actualización del proyecto.
Ver si un elemento admite la validación
Puede vincular capas a sitios web, documentos de Office, archivos de texto sin formato y archivos en proyectos que se comparten entre varias aplicaciones, pero el proceso de validación no los incluirá. Los errores de validación no aparecerán para las referencias a proyectos o ensamblados que están vinculados a capas independientes cuando no aparecen dependencias entre esas capas. Estas referencias no se consideran dependencias a menos que el código use esas referencias.
En el diagrama de dependencias, seleccione una o varias capas, haga clic con el botón derecho en la selección y, a continuación, haga clic en Ver vínculos.
En el Explorador de capas, mire la columna Validación de soporte. Si el valor es false, el elemento no admite la validación.
Incluir otros ensamblados y proyectos de .NET para la validación
Al arrastrar elementos al diagrama de dependencias, las referencias a los ensamblados o proyectos de .NET correspondientes se agregan automáticamente a la carpeta Referencias de capa del proyecto de modelado. Esta carpeta contiene referencias a los ensamblados y proyectos que se analizan durante la validación. Puede incluir otros ensamblados y proyectos de .NET para la validación sin arrastrarlos manualmente al diagrama de dependencias.
En el Explorador de soluciones, haga clic con el botón derecho en el proyecto de modelado o en la carpeta Referencias de capa y, a continuación, haga clic en Agregar referencia.
En el cuadro de diálogo Agregar referencia , seleccione los ensamblados o proyectos y, a continuación, haga clic en Aceptar.
Validación manual del código
Si tiene un diagrama de dependencias abierto vinculado a elementos de solución, puede ejecutar el comando Validar acceso directo desde el diagrama. También puede usar el símbolo del sistema para ejecutar el comando msbuild con la propiedad personalizada /p:ValidateArchitecture establecida en True. Por ejemplo, a medida que realice cambios en el código, realice la validación de capas con regularidad para que pueda detectar conflictos de dependencias al principio.
Validación del código desde un diagrama de dependencias abierto
Haga clic con el botón derecho en la superficie del diagrama y, a continuación, haga clic en Validar arquitectura.
Nota:
De forma predeterminada, la propiedad Acción de compilación del archivo de diagrama de dependencias (.layerdiagram) se establece en Validar para que el diagrama se incluya en el proceso de validación.
La ventana Lista de errores notifica los errores que se producen. Para obtener más información sobre los errores de validación, consulte Solución de problemas de validación de capas.
Para ver el origen de cada error, haga doble clic en el error en la ventana Lista de errores.
Nota:
Visual Studio podría mostrar un mapa de código en lugar del origen del error. Esto ocurre cuando el código tiene una dependencia en un ensamblado que no se especifica en el diagrama de dependencias o el código falta una dependencia especificada por el diagrama de dependencias. Revise el mapa de código o el código para determinar si debe existir la dependencia. Para obtener más información sobre los mapas de código, consulte Asignación de dependencias en las soluciones.
Para administrar errores, consulte Resolución de errores de validación de capas.
Valida el código en el símbolo del sistema
Abra el símbolo del sistema de Visual Studio.
Elija alguna de las acciones siguientes:
Para validar el código con un proyecto de modelado específico en la solución, ejecute MSBuild con la siguiente propiedad personalizada.
msbuild <FilePath+ModelProjectFileName>.modelproj /p:ValidateArchitecture=trueO bien:
Vaya a la carpeta que contiene el archivo del proyecto de modelado (.modelproj) y el diagrama de dependencias y, a continuación, ejecute MSBuild con la siguiente propiedad personalizada:
msbuild /p:ValidateArchitecture=truePara validar el código con todos los proyectos de modelado de la solución, ejecute MSBuild con la siguiente propiedad personalizada:
msbuild <FilePath+SolutionName>.sln /p:ValidateArchitecture=trueO bien:
Vaya a la carpeta de la solución, que debe contener un proyecto de modelado que contenga un diagrama de dependencias y, a continuación, ejecute MSBuild con la siguiente propiedad personalizada:
msbuild /p:ValidateArchitecture=trueSe mostrarán los errores que se produzcan. Para obtener más información sobre MSBuild, consulte MSBuild y MSBuild Task.
Para obtener más información sobre los errores de validación, consulte Solución de problemas de validación de capas.
Administración de errores de validación
Durante el proceso de desarrollo, es posible que desee suprimir algunos de los conflictos notificados durante la validación. Por ejemplo, puede que quiera suprimir los errores que ya está abordando o que no son relevantes para su escenario en particular. Cuando se suprime un error, se recomienda registrar un elemento de trabajo en Team Foundation.
Advertencia
Ya debe estar conectado al Control de código fuente (SCC) de TFS para crear o vincular a un elemento de trabajo. Si intenta abrir una conexión a otro SCC de TFS, Visual Studio cierra la solución actual automáticamente. Asegúrese de que ya está conectado al SCC adecuado antes de intentar crear o vincular a un elemento de trabajo. En versiones posteriores de Visual Studio, los comandos de menú no están disponibles si no está conectado a un SCC.
Creación de un elemento de trabajo para un error de validación
- En la ventana Lista de errores, haga clic con el botón derecho en el error, seleccione Crear elemento de trabajo y, a continuación, haga clic en el tipo de elemento de trabajo que desea crear.
Use estas tareas para administrar errores de validación en la ventana Lista de errores:
| A | Siga estos pasos. |
|---|---|
| Suprimir los errores seleccionados durante la validación | Haga clic con el botón derecho en uno o varios errores seleccionados, seleccione Administrar errores de validación y, a continuación, haga clic en Suprimir errores. Los errores suprimidos aparecen con formato tachado. Al ejecutar la validación la próxima vez, estos errores no aparecerán. Se realiza un seguimiento de los errores suprimidos en un archivo .suppresss para el archivo de diagrama de dependencias correspondiente. |
| Detener la supresión de errores seleccionados | Haga clic con el botón derecho en el error o errores suprimidos seleccionados, seleccione Administrar errores de validación y, a continuación, haga clic en Detener la supresión de errores. Los errores suprimidos seleccionados aparecerán cuando ejecute la validación la próxima vez. |
| Restaurar todos los errores suprimidos en la ventana Lista de errores | Haga clic con el botón derecho en cualquier parte de la ventana Lista de errores , seleccione Administrar errores de validación y, a continuación, haga clic en Mostrar todos los errores suprimidos. |
| Ocultar todos los errores suprimidos de la ventana Lista de errores | Haga clic con el botón derecho en cualquier parte de la ventana Lista de errores , seleccione Administrar errores de validación y, a continuación, haga clic en Ocultar todos los errores suprimidos. |
Validar código automáticamente
Puede realizar la validación de capas cada vez que ejecute una compilación local. Si el equipo usa Azure DevOps, puede realizar la validación de capas con comprobaciones controladas, que puede especificar mediante la creación de una tarea personalizada de MSBuild y usar informes de compilación para recopilar errores de validación. Para crear compilaciones de check-in con puerta, consulte El check-in con puerta de TFVC.
Para validar el código automáticamente durante una compilación local
Use un editor de texto para abrir el archivo del proyecto de modelado (.modelproj) y, a continuación, incluya la siguiente propiedad:
<ValidateArchitecture>true</ValidateArchitecture>
O bien
En el Explorador de soluciones, haga clic con el botón derecho en el proyecto de modelado que contiene el diagrama de dependencias o diagramas y, a continuación, haga clic en Propiedades.
En la ventana Propiedades , establezca la propiedad Validate Architecture del proyecto de modelado en True.
Esto incluye el proyecto de modelado en el proceso de validación.
En el Explorador de soluciones, haga clic en el archivo de diagrama de dependencias (.layerdiagram) que desea usar para la validación.
En la ventana Propiedades , asegúrese de que la propiedad Acción de compilación del diagrama esté establecida en Validar.
Esto incluye el diagrama de dependencias en el proceso de validación.
Para administrar errores en la ventana Lista de errores, consulte Resolución de errores de validación de capas.
Solución de problemas de validación de capas
En la tabla siguiente se describen los problemas de validación de capas y su resolución. Estos problemas difieren de los errores resultantes de conflictos entre el código y el diseño. Para obtener más información sobre estos errores, consulte Solución de problemas de validación de capas.
| Issue | Causa posible | Resolution |
|---|---|---|
| Los errores de validación no se producen según lo esperado. | La validación no funciona en diagramas de dependencia que se copian de otros diagramas de dependencia en el Explorador de soluciones y que se encuentran en el mismo proyecto de modelado. Los diagramas de dependencias que se copian de esta manera contienen las mismas referencias que el diagrama de dependencias original. | Agregue un nuevo diagrama de dependencias al proyecto de modelado. Copie los elementos del diagrama de dependencias de origen en el nuevo diagrama. |
Resolución de errores de validación de capas
Al validar el código con un diagrama de dependencias, se producen errores de validación cuando el código entra en conflicto con el diseño. Por ejemplo, las condiciones siguientes pueden provocar errores de validación:
Un artefacto se asigna a la capa incorrecta. En este caso, mueva el artefacto.
Un artefacto, como una clase, usa otra clase de una manera que entra en conflicto con la arquitectura. En este caso, refactorice el código para quitar la dependencia.
Para resolver estos errores, actualice el código hasta que no aparezcan más errores durante la validación. Puede realizar esta tarea de forma iterativa.
En la sección siguiente se describe la sintaxis que se usa en estos errores, se explica el significado de estos errores y se sugiere lo que puede hacer para resolverlos o administrarlos.
| Sintaxis | Descripción |
|---|---|
| ArtifactN(ArtifactTypeN) |
ArtifactN es un artefacto asociado a una capa en el diagrama de dependencias. ArtifactTypeN es el tipo de ArtifactN, como una clase o un método, por ejemplo: MySolution.MyProject.MyClass.MyMethod(Method) |
| NamespaceNameN | Nombre de un espacio de nombres. |
| LayerNameN | Nombre de una capa en el diagrama de dependencias. |
| DependencyType | Tipo de relación de dependencia entre Artifact1 y Artifact2. Por ejemplo, Artifact1 tiene una relación De llamadas con Artifact2. |
| Sintaxis de error | Descripción del error |
|---|---|
| DV0001: Dependencia no válida | Este problema se notifica cuando un elemento de código (espacio de nombres, tipo, miembro) asignado a una capa hace referencia a un elemento de código asignado a otra capa, pero no hay ninguna flecha de dependencia entre estas capas en el diagrama de validación de dependencias que contiene estas capas. Se trata de una infracción de restricción de dependencia. |
| DV1001: Nombre de espacio de nombres no válido | Este problema se notifica en un elemento de código asociado a una capa cuya propiedad "Allowed Namespace Names" no contiene el espacio de nombres en el que se define este elemento de código. Se trata de una infracción de restricción de nomenclatura. Tenga en cuenta que la sintaxis de "Allowed Namespace Names" es una lista separada por puntos y comas de espacios de nombres en los que se permite definir los elementos de código asociados con una capa. |
| DV1002: Dependencia en un espacio de nombres que no se puede referenciar | Este problema se notifica en un elemento de código asociado a una capa y hace referencia a otro elemento de código definido en un espacio de nombres que se define en la propiedad "Espacio de nombres irreferenciable" de la capa. Se trata de una infracción de restricción de nomenclatura. Tenga en cuenta que la propiedad "Espacios de nombres no referenciables" se define como una lista separada por punto y coma de espacios de nombres a los que no se debe hacer referencia en los elementos de código asociados a esta capa. |
| DV1003: Nombre de espacio de nombres no permitido | Este problema se notifica en un elemento de código asociado a una capa que la propiedad "Nombres de espacio de nombres no permitidos" contiene el espacio de nombres en el que se define este elemento de código. Se trata de una infracción de restricción de nomenclatura. Tenga en cuenta que la propiedad "Nombre del espacio de nombres no permitido" se define como una lista separada por punto y coma de espacios de nombres en los que no se deben definir los elementos de código asociados a esta capa. |
| DV2001: Presencia de diagrama de capas | Este problema se notifica en un proyecto que no incluye un archivo de diagrama de dependencias, pero hace referencia a los analizadores de validación de dependencias. Si no se ha usado la validación de dependencias, puede quitar "Microsoft.DependencyValidation.Analyzers" directamente desde el Explorador de soluciones o suprimir esta advertencia. Para agregar un diagrama de dependencias, consulte Creación de diagramas de dependencias a partir del código. |
| DV2002: Base de tipos no asignados | Este problema se notifica cuando un elemento de código no está asignado a ninguna capa. |
| DV3001: Falta vínculo | La capa 'LayerName' enlaza con 'Artifact', que no se puede encontrar. ¿Falta una referencia de ensamblado? |
| DV9001: Análisis de arquitectura encontró errores internos | Es posible que los resultados no se completen. Para obtener más información, consulte el registro de eventos de compilación o la ventana de salida detallados. |