Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Por que usar diagramas de dependência?
Para garantir que o código não entre em conflito com seu design, valide seu código com diagramas de dependência no Visual Studio. Isso pode ajudá-lo:
Encontre conflitos entre dependências em seu código e dependências no diagrama de dependência.
Encontre dependências que podem ser afetadas por alterações propostas.
Por exemplo, você pode editar o diagrama de dependência para mostrar possíveis alterações de arquitetura e validar o código para ver as dependências afetadas.
Refatorar ou migrar código para um design diferente.
Localize o código ou as dependências que exigem trabalho quando você move o código para uma arquitetura diferente.
Requisitos
Visual Studio
Para criar um diagrama de dependência para um projeto do .NET Core, você deve ter o Visual Studio 2019 versão 16.2 ou posterior.
Uma solução que tem um projeto de modelagem com um diagrama de dependência. Esse diagrama de dependência deve estar vinculado a artefatos em projetos do C# ou do Visual Basic que você deseja validar. Consulte Criar diagramas de dependência do seu código.
Para ver quais edições do Visual Studio dão suporte a esse recurso, consulte o suporte do Edition para ferramentas de arquitetura e modelagem.
Você pode validar o código manualmente de um diagrama de dependência aberta no Visual Studio ou em um prompt de comando. Você também pode validar o código automaticamente ao executar builds locais ou builds do Azure Pipelines.
Importante
Se você quiser executar a validação de camada usando o TFS (Team Foundation Server), também deverá instalar a mesma versão do Visual Studio no servidor de build.
Validação de dependência dinâmica
A validação de dependência ocorre em tempo real e os erros são mostrados imediatamente na Lista de Erros.
Há suporte para validação dinâmica para C# e Visual Basic.
Para habilitar a análise completa da solução ao usar a validação de dependência dinâmica, abra as configurações de opções da barra de ouro que aparece na Lista de Erros.
- Você pode ignorar permanentemente a barra dourada se não estiver interessado em ver todos os problemas de arquitetura na sua solução.
- Se você não habilitar a análise completa da solução, a análise será feita somente para os arquivos que estão sendo editados.
Ao atualizar projetos para habilitar a validação dinâmica, uma caixa de diálogo mostra o progresso da conversão.
Ao atualizar um projeto para validação de dependência dinâmica, a versão do pacote NuGet é atualizada para ser a mesma para todos os projetos e é a versão mais alta em uso.
Adicionar um novo projeto de validação de dependência dispara uma atualização do projeto.
Veja se um item dá suporte à validação
Você pode vincular camadas a sites, documentos do Office, arquivos de texto sem formatação e arquivos em projetos compartilhados em vários aplicativos, mas o processo de validação não os incluirá. Erros de validação não serão exibidos para referências a projetos ou assemblies que estão vinculados a camadas separadas quando nenhuma dependência aparece entre essas camadas. Essas referências não são consideradas dependências, a menos que o código use essas referências.
No diagrama de dependência, selecione uma ou mais camadas, clique com o botão direito do mouse na seleção e clique em Exibir Links.
No Gerenciador de Camadas, examine a coluna Validação de Suporte . Se o valor for falso, o item não oferecerá suporte à validação.
Incluir outros assemblies e projetos do .NET para validação
Quando você arrasta itens para o diagrama de dependência, as referências aos assemblies ou projetos do .NET correspondentes são adicionadas automaticamente à pasta Referências de Camada no projeto de modelagem. Essa pasta contém referências aos assemblies e projetos analisados durante a validação. Você pode incluir outros assemblies e projetos do .NET para validação sem arrastá-los manualmente para o diagrama de dependência.
No Gerenciador de Soluções, clique com o botão direito do mouse no projeto de modelagem ou na pasta Referências de Camada e clique em Adicionar Referência.
Na caixa de diálogo Adicionar Referência , selecione os assemblies ou projetos e clique em OK.
Validar código manualmente
Se você tiver um diagrama de dependência aberto vinculado a itens de solução, poderá executar o comando de atalho Validar a partir do diagrama. Você também pode usar o prompt de comando para executar o comando msbuild com a propriedade personalizada /p:ValidateArchitecture definida como True. Por exemplo, à medida que você faz alterações no código, execute a validação de camada regularmente para que você possa capturar conflitos de dependência antecipadamente.
Validar código de um diagrama de dependência aberta
Clique com o botão direito do mouse na superfície do diagrama e clique em Validar Arquitetura.
Observação
Por padrão, a propriedade Build Action no arquivo de diagrama de dependência (.layerdiagram) é definida como Validar para que o diagrama seja incluído no processo de validação.
A janela Lista de Erros relata todos os erros que ocorrem. Para obter mais informações sobre erros de validação, consulte Solucionar problemas de validação de camada.
Para exibir a origem de cada erro, clique duas vezes no erro na janela Lista de Erros .
Observação
O Visual Studio pode mostrar um mapa de código em vez da origem do erro. Isso ocorre quando o código tem uma dependência em um assembly que não é especificado pelo diagrama de dependência ou o código não tem uma dependência especificada pelo diagrama de dependência. Examine o mapa de código ou o código para determinar se a dependência deve existir. Para obter mais informações sobre mapas de código, consulte Mapear dependências em suas soluções.
Para gerenciar erros, consulte Resolver erros de validação de camada.
Validar código no prompt de comando
Abra o prompt de comando do Visual Studio.
Escolha uma destas opções:
Para validar o código em um projeto de modelagem específico na solução, execute o MSBuild com a propriedade personalizada a seguir.
msbuild <FilePath+ModelProjectFileName>.modelproj /p:ValidateArchitecture=true- ou -
Navegue até a pasta que contém o arquivo de projeto de modelagem (.modelproj) e o diagrama de dependência e execute o MSBuild com a seguinte propriedade personalizada:
msbuild /p:ValidateArchitecture=truePara validar o código em todos os projetos de modelagem na solução, execute o MSBuild com a seguinte propriedade personalizada:
msbuild <FilePath+SolutionName>.sln /p:ValidateArchitecture=true- ou -
Navegue até a pasta da solução, que deve conter um projeto de modelagem que contenha um diagrama de dependência e execute o MSBuild com a seguinte propriedade personalizada:
msbuild /p:ValidateArchitecture=trueTodos os erros que ocorrerem serão listados. Para obter mais informações sobre o MSBuild, consulte MSBuild e MSBuild Task.
Para obter mais informações sobre erros de validação, consulte Solucionar problemas de validação de camada.
Gerenciar erros de validação
Durante o processo de desenvolvimento, talvez você queira suprimir alguns dos conflitos relatados durante a validação. Por exemplo, talvez você queira suprimir erros que você já está abordando ou que não são relevantes para seu cenário específico. Quando você suprime um erro, é uma boa prática registrar um item de trabalho no Team Foundation.
Aviso
Você já deve estar conectado ao SCC (Controle do Código-Fonte) do TFS para criar ou vincular a um item de trabalho. Se você tentar abrir uma conexão com um TFS SCC diferente, o Visual Studio fechará a solução atual automaticamente. Verifique se você já está conectado ao SCC apropriado antes de tentar criar ou vincular a um item de trabalho. Em versões posteriores do Visual Studio, os comandos de menu não estarão disponíveis se você não estiver conectado a um SCC.
Criar um item de trabalho para um erro de validação
- Na janela Lista de Erros , clique com o botão direito do mouse no erro, aponte para Criar Item de Trabalho e clique no tipo de item de trabalho que você deseja criar.
Use estas tarefas para gerenciar erros de validação na janela Lista de Erros :
| para | Siga estas etapas |
|---|---|
| Suprimir erros selecionados durante a validação | Clique com o botão direito do mouse em um ou vários erros selecionados, aponte para Gerenciar Erros de Validação e clique em Suprimir Erros. Os erros suprimidos aparecem com a formatação strikethrough. Quando você executar a validação na próxima vez, esses erros não serão exibidos. Os erros suprimidos são registrados em um arquivo .suppressions para o arquivo de diagrama de dependência correspondente. |
| Parar de suprimir erros selecionados | Clique com o botão direito do mouse no erro ou erros suprimidos selecionados, aponte para Gerenciar Erros de Validação e clique em Parar de Suprimir Erros. Os erros suprimidos selecionados serão exibidos quando você executar a validação na próxima vez. |
| Restaurar todos os erros suprimidos na janela Lista de Erros | Clique com o botão direito do mouse em qualquer lugar na janela Lista de Erros , aponte para Gerenciar Erros de Validação e clique em Mostrar Todos os Erros Suprimidos. |
| Ocultar todos os erros suprimidos da janela Lista de Erros | Clique com o botão direito do mouse em qualquer lugar na janela Lista de Erros , aponte para Gerenciar Erros de Validação e clique em Ocultar Todos os Erros Suprimidos. |
Validar código automaticamente
Você pode executar a validação de camada sempre que executar um build local. Se sua equipe usar o Azure DevOps, você poderá executar a validação de camada com check-ins fechados, que você pode especificar criando uma tarefa personalizada do MSBuild e usar relatórios de build para coletar erros de validação. Para criar builds de gated check-in, consulte TFVC gated check-in.
Para validar o código automaticamente durante um build local
Use um editor de texto para abrir o arquivo de projeto de modelagem (.modelproj) e, em seguida, inclua a seguinte propriedade:
<ValidateArchitecture>true</ValidateArchitecture>
- ou -
No Gerenciador de Soluções, clique com o botão direito do mouse no projeto de modelagem que contém o diagrama ou diagramas de dependência e clique em Propriedades.
Na janela Propriedades , defina a propriedade Validate Architecture do projeto de modelagem como True.
Isso inclui o projeto de modelagem no processo de validação.
No Gerenciador de Soluções, clique no arquivo diagrama de dependência (.layerdiagram) que você deseja usar para validação.
Na janela Propriedades , verifique se a propriedade de Ação de Build do diagrama está definida como Validar.
Isso inclui o diagrama de dependência no processo de validação.
Para gerenciar erros na janela Lista de Erros, consulte Resolver erros de validação de camada.
Solucionar problemas de validação de camada
A tabela a seguir descreve problemas de validação de camada e sua resolução. Esses problemas diferem de erros resultantes de conflitos entre o código e o design. Para obter mais informações sobre esses erros, consulte Solucionar problemas de validação de camada.
| Issue | Possível causa | Resolução |
|---|---|---|
| Erros de validação não ocorrem conforme o esperado. | A validação não funciona em diagramas de dependência copiados de outros diagramas de dependência no Gerenciador de Soluções e que estão no mesmo projeto de modelagem. Diagramas de dependência copiados dessa forma contêm as mesmas referências que o diagrama de dependência original. | Adicione um novo diagrama de dependência ao projeto de modelagem. Copie os elementos do diagrama de dependência de origem para o novo diagrama. |
Resolver erros de validação de camada
Quando você valida o código em um diagrama de dependência, ocorrem erros de validação quando o código entra em conflito com o design. Por exemplo, as seguintes condições podem causar erros de validação:
Um artefato é atribuído à camada errada. Nesse caso, mova o artefato.
Um artefato, como uma classe, usa outra classe de uma forma que entra em conflito com sua arquitetura. Nesse caso, refatore o código para remover a dependência.
Para resolver esses erros, atualize o código até que não sejam exibidos mais erros durante a validação. Você pode executar essa tarefa de maneira iterativa.
A seção a seguir descreve a sintaxe usada nesses erros, explica o significado desses erros e sugere o que você pode fazer para resolvê-los ou gerenciá-los.
| Sintaxe | Descrição |
|---|---|
| ArtifactN(ArtifactTypeN) |
ArtifactN é um artefato associado a uma camada no diagrama de dependência. ArtifactTypeN é o tipo de ArtifactN, como uma classe ou método, por exemplo: MySolution.MyProject.MyClass.MyMethod(Method) |
| NamespaceNameN | O nome de um namespace. |
| LayerNameN | O nome de uma camada no diagrama de dependência. |
| DependencyType | O tipo de relação de dependência entre Artifact1 e Artifact2. Por exemplo, Artifact1 tem uma relação de Chamadas com Artifact2. |
| Sintaxe de erro | Descrição do erro |
|---|---|
| DV0001: Dependência inválida | Esse problema é relatado quando um elemento de código (namespace, tipo, membro) mapeado para uma camada faz referência a um elemento de código mapeado para outra camada, mas não há nenhuma seta de dependência entre essas camadas no diagrama de validação de dependência que contém essas camadas. Essa é uma violação de restrição de dependência. |
| DV1001: Nome do namespace inválido | Esse problema é relatado em um elemento de código associado a uma camada que a propriedade "Nomes de Namespace Permitidos" não contém o namespace no qual esse elemento de código é definido. Essa é uma violação de restrição de nomenclatura. Observe que a sintaxe de "Nomes de Namespace Permitidos" deve ser uma lista de ponto e vírgula de namespaces nos quais os elementos de código associados à camada têm permissão para serem definidos. |
| DV1002: Dependência de namespace não referenciável | Esse problema é relatado em um elemento de código associado a uma camada e que referencia outro elemento de código definido em um namespace que está na propriedade "Namespace Não Referenciável" da camada. Essa é uma violação de restrição de nomenclatura. Observe que a propriedade "Namespaces Irreferenciaveis" é definida como uma lista separada por ponto e vírgula de namespaces que não devem ser referenciados em elementos de código associados a essa camada. |
| DV1003: Nome do namespace não permitido | Esse problema é relatado em um elemento de código associado a uma camada que a propriedade "Nomes de Namespace não permitidos" contém o namespace no qual esse elemento de código é definido. Essa é uma violação de restrição de nomenclatura. Observe que a propriedade "Nome do namespace não permitido" é definida como uma lista separada por ponto e vírgula de namespaces nos quais os elementos de código associados a essa Camada não devem ser definidos. |
| DV2001: Presença do diagrama de camada | Esse problema é relatado em um projeto que não inclui um arquivo de diagrama de dependência, mas se refere aos analisadores de validação de dependência. Se a Validação de Dependência não tiver sido usada, você poderá remover "Microsoft.DependencyValidation.Analyzers" diretamente do Gerenciador de Soluções ou suprimir esse aviso. Para adicionar um diagrama de dependência, consulte Criar diagramas de dependência do código. |
| DV2002: Base de tipos não mapeados | Esse problema é relatado quando um elemento de código não é mapeado para nenhuma camada. |
| DV3001: Link ausente | A camada 'LayerName' é vinculada a 'Artifact' que não pode ser encontrado. Você está perdendo uma referência de assembly? |
| DV9001: Análise de arquitetura encontrou erros internos | Os resultados podem não estar concluídos. Para obter mais informações, consulte o log detalhado de eventos de build ou a janela de saída. |