Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. 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. Isto pode ajudá-lo a:
Encontre conflitos entre dependências em seu código e dependências no diagrama de dependência.
Encontre dependências que possam ser afetadas pelas alterações propostas.
Por exemplo, você pode editar o diagrama de dependência para mostrar possíveis alterações na arquitetura e, em seguida, validar o código para ver as dependências afetadas.
Refatore ou migre o código para uma arquitetura diferente.
Encontre código ou 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 .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 ser vinculado a artefatos em projetos C# ou Visual Basic que você deseja validar. Consulte Criar diagramas de dependência a partir do seu código.
Para ver quais edições do Visual Studio oferecem suporte a esse recurso, consulte Suporte de edição para ferramentas de arquitetura e modelagem.
Você pode validar o código manualmente a partir de um diagrama de dependência aberto no Visual Studio ou de um prompt de comando. Você também pode validar o código automaticamente ao executar compilações locais ou compilações do Azure Pipelines.
Importante
Se você deseja executar a validação de camada usando Team Foundation Server (TFS), você também deve instalar a mesma versão do Visual Studio em seu servidor de compilação.
Validação de dependência em tempo real
A validação de dependência ocorre em tempo real e os erros são mostrados imediatamente na Lista de Erros.
A validação ao vivo é suportada para C# e Visual Basic.
Para habilitar a análise completa da solução ao usar a validação de dependência em tempo real, abra as configurações de opções na barra dourada que aparece na Lista de Erros.
- Você pode descartar permanentemente a barra de ouro se não estiver interessado em ver todos os problemas de arquitetura em sua solução.
- Se você não habilitar a análise completa da solução, a análise será feita apenas para os arquivos que estão sendo editados.
Ao atualizar projetos para habilitar a validação ao vivo, uma caixa de diálogo mostra o progresso da conversão.
Ao atualizar um projeto para validação de dependência em tempo real, 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.
Ver se um item suporta 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á. Os erros de validação não aparecerão para referências a projetos ou assemblies vinculados a camadas separadas quando não aparecerem dependências entre essas camadas. Tais 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 Explorador de Camadas, veja a coluna Validações Suportadas. Se o valor for false, o item não suporta validação.
Inclua outros assemblies e projetos .NET para validação
Quando você arrasta itens para o diagrama de dependência, as referências aos assemblies ou projetos .NET correspondentes são adicionadas automaticamente à pasta Referências de camada no projeto de modelagem. Esta pasta contém referências aos assemblies e projetos que são analisados durante a validação. Você pode incluir outros assemblies e projetos .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, ao fazer alterações no código, execute a validação de camada regularmente para que você possa detetar conflitos de dependência antecipadamente.
Validar código de um diagrama de dependência aberto
Clique com o botão direito do rato na superfície do diagrama e, em seguida, clique em Validar Arquitetura.
Observação
Por padrão, a propriedade Build Action no arquivo de diagrama de dependência (.layerdiagram) é definida como Validate para que o diagrama seja incluído no processo de validação.
A janela Lista de Erros relata quaisquer erros que ocorram. 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
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 numa assembly que não é especificada pelo diagrama de dependência, ou o código falta uma dependência que é especificada pelo diagrama de dependência. Revise 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 das seguintes opções:
Para validar o código em relação a um projeto de modelagem específico na solução, execute o MSBuild com a seguinte propriedade personalizada.
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, em seguida, execute o MSBuild com a seguinte propriedade personalizada:
msbuild /p:ValidateArchitecture=truePara validar o código em relação a 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 contém um diagrama de dependência e, em seguida, execute o MSBuild com a seguinte propriedade personalizada:
msbuild /p:ValidateArchitecture=trueQuaisquer erros que ocorram serão listados. Para obter mais informações sobre MSBuild, consulte Tarefa MSBuild e MSBuild.
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, convém suprimir alguns dos conflitos relatados durante a validação. Por exemplo, talvez você queira suprimir erros que 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.
Advertência
Você já deve estar conectado ao controle do código-fonte (SCC) do TFS para criar ou vincular a um item de trabalho. Se você tentar abrir uma conexão com um SCC diferente do TFS, 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 estã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 rato no erro, aponte para Criar Item de Trabalho e, em seguida, clique no tipo de item de trabalho que pretende criar.
Use estas tarefas para gerenciar erros de validação na janela Lista de Erros :
| Para | Siga estes passos |
|---|---|
| Suprimir erros selecionados durante a validação | Clique com o botão direito do rato num ou vários erros selecionados, aponte para Gerir Erros de Validação e, em seguida, clique em Suprimir Erros. Os erros suprimidos aparecem com formatação riscada. Quando você executar a validação na próxima vez, esses erros não aparecerão. Os erros suprimidos são rastreados num ficheiro .suppressions para o ficheiro de diagrama de dependências correspondente. |
| Parar de suprimir os erros selecionados | Clique com o botão direito do rato no(s) erro(s) suprimido(s) selecionado(s), aponte para Gerir Erros de Validação e, em seguida, clique em Parar de Suprimir Erros. Os erros suprimidos selecionados aparecerão 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 uma compilação local. Se sua equipe usa o Azure DevOps, você pode 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 compilação para coletar erros de validação. Para criar compilações de check-in fechado, consulte Check-in fechado TFVC.
Para validar o código automaticamente durante uma compilação local
Use um editor de texto para abrir o arquivo de projeto de modelagem (.modelproj) e 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 de diagrama de dependência (.layerdiagram) que você deseja usar para validação.
Na janela Propriedades , verifique se a propriedade Build Action do diagrama está definida como Validate.
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 dos 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 | Causa possível | Resolução |
|---|---|---|
| Os 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. Os diagramas de dependência copiados desta 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 relação a um diagrama de dependência, erros de validação ocorrem 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. Neste caso, mova o artefato.
Um artefato, como uma classe, usa outra classe de uma maneira 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 apareçam 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.
| Syntax | 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(Método) |
| 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 Calls 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. Esta é uma violação de restrição de dependência. |
| DV1001: Nome de namespace inválido | Esse problema é relatado em um elemento de código associado a uma camada cuja propriedade "Nomes de namespace permitidos" não contém o namespace no qual esse elemento de código é definido. Esta é 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 na qual os elementos de código associados à camada podem ser definidos. |
| DV1002: Dependência de namespace não referenciado | Esse problema é relatado em um elemento de código associado a uma camada e fazendo referência a outro elemento de código definido em um namespace que é definido na propriedade "Unreferenceable Namespace" da camada. Esta é uma violação de restrição de nomenclatura. Observe que a propriedade "Unreferenceable Namespaces" é 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 cuja propriedade "Disallowed Namespace Names" contém o namespace no qual esse elemento de código é definido. Esta é uma violação de restrição de nomenclatura. Observe que a propriedade "Disallowed namespace name" é definida como uma lista separada por ponto-e-vírgula de namespaces na qual os elementos de código associados a essa camada não devem ser definidos. |
| DV2001: Presença de 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 a partir do seu código. |
| DV2002: Base de tipos não mapeados | Esse problema é relatado quando um elemento de código não é mapeado para qualquer camada. |
| DV3001: Link ausente | Layer 'LayerName' liga a 'Artifact' que não foi encontrado. Está a faltar uma referência de assemblagem? |
| DV9001: A análise arquitetônica encontrou erros internos | Os resultados podem não estar completos. Para obter mais informações, consulte o log de eventos de compilação detalhado ou a janela de saída. |