c #: Utilitário para encontrar circular referências / compilação de forma correta?

StackOverflow https://stackoverflow.com/questions/1669696

  •  13-09-2019
  •  | 
  •  

Pergunta

fazedores Alguém sabe de uma boa utilidade ou programa para interrogar uma solução ou um diretório para todos os projetos e dizer-lhe onde as referências circulares são e possíveis de compilação, a fim ..

Lembro-me de ver um há um tempo atrás, mas eu não posso encontrá-lo em qualquer lugar ..

Foi útil?

Solução

NDepend é uma excelente ferramenta que vai fazer isso e muito mais. Talvez seja um exagero para o que quiser, mas não há uma versão de teste então dê uma olhada ...

Outras dicas

Eu sei que esta é uma resposta tardia, mas eu achei usando GraemeF e respostas de tsilb ambos mostraram nenhuma dependência entre os dois conjuntos. Parece que se você inverter a ordem das dependências ( Assembléia A referências B , mas você mude para B referência A ), deixa a dependência na ordem de construção. Para resolver isso, abra o diálogo Propriedades para a sua solução, vá para propriedades comuns, e depois Dependências do projeto. Encontre o Assembléia A e remover a dependência Assembleia B . Isso permitirá que você para adicionar a referência normalmente.

Você pode perseguir a árvore de dependência através de System.Reflection. Como você construir a árvore, ao adicionar um nó, você iria verificar para ver se quaisquer pais do nó são o mesmo projeto ou montagem como esse que você está adicionando. Se for verdade, lançar uma exceção para o usuário.

Jogando exceções técnicas como esta são ok se os usuários serão pessoas que sabem como assembly referências e exceções trabalho - pessoas como Desenvolvedores:)

Se você usar projecto referências entre os projetos em sua solução a ordem de compilação correta será determinado automaticamente pelo Visual Studio (ou MSBuild). Isso quebra, claro, se você usar montagem referências .. Também Visual Studio você vai parar de adição circulares projeto referências.

I herdou uma solução visual studio gigantesco com algumas caminhos de referência circulares. Eu escrevi um script LINQPad para ajudar a encontrar a circular cadeia de referência:

https://github.com/ronnieoverby /linqpad-utils/blob/master/Find%20circular%20references.linq

Meu implementação é provavelmente ingênuo, mas funcionou razoavelmente rápido para mim.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top