Visual Studio: Detectando Assemblies Desnecessários

Em projetos maiores e/ou de longa duração, tenho a tendência de fazer referência a muitos conjuntos de módulos e espaços de nomes, e muitas vezes acabo removendo algumas funcionalidades posteriormente ou movendo-as para um projeto diferente.

Eu apenas me pergunto, existe uma maneira de verificar cada projeto (heck, todo arquivo .cs) em toda a minha solução Visual Studio e obter uma lista de todos os Assemblies e Namespaces referenciados que não estão sendo usados ​​e podem ser removidos com segurança? Eu sei que o ReSharper pode fazer isso por um único arquivo de código, mas eu não vi uma opção para verificar todos os arquivos ou para verificar se há Assemblies desnecessários.

Usando o Visual Studio 2005 e 2008 Professional, se isso é importante.

Edit: Obrigado até agora. O problema com o ReSharper ou "Remove and Readd if build breaks" é que é bastante entediante em cada arquivo e montagem (Meu projeto tem aproximadamente 120 arquivos .cs em 7 Assemblies e faz referência a um total de 18 Assemblies fora da solução), Então, idealmente eu estou procurando por algo "um clique". Big bônus pontos para alguma forma automática que pode ser usada em buildscripts para gerar um relatório :)

0
adicionado editado
Visualizações: 2
A Resharper recentemente fez uma licença pessoal mais barata. Eu acho que é 134 € para C# agora. Ferramentas gratuitas seriam legais (se o MSBuild pudesse fazer isso com o honkey-dorey!), Mas eu estou principalmente procurando por algo que funcione primeiro :)
adicionado o autor Michael Stum, fonte
adicionado o autor Josh Lee, fonte
Seria bom se a questão fosse em termos de ferramentas gratuitas, não apenas de ferramentas. Por acaso tenho reaparelhamento para que a solução abaixo seja boa, mas ainda assim ...
adicionado o autor Oskar, fonte

10 Respostas

Sim, eu não acho que haja um. Acabei de excluir alguns que não são necessários, em seguida, construir: /

BTW. que continuará usando erros. Você pode usar os comandos do Visual Studio Power para remover e ordenar os usos, faça isso primeiro e exclua os conjuntos aleatórios: D

0
adicionado

Qualquer decodificador de código decente fará isso por você. Eu gosto do DevPartner pessoalmente.

0
adicionado

Ele não vai se livrar de quaisquer referências em código para seus assemblies referenciados (eu acho), mas você pode ir para as propriedades de cada um dos seus projetos, chegou a referências, e clique em "Referências não utilizadas ...". O Visual Studio oferece a opção de removê-los ali mesmo.

Não há como fazer isso no nível da solução.

0
adicionado

(Cross-posted de aqui ) Dado que o VisualStudio (ou é msbuild?) Detecta referências não utilizadas e não as inclui no arquivo de saída, você pode escrever um script que analisa as referências fora do csproj, e compara isso com os Assemblies referenciados detectados por reflexão no saída do projeto.

Se você está motivado ...

0
adicionado

Eu encontrei esta pergunta enquanto procurava no Google e procurava uma maneira de remover instruções "Using" não usadas do meu código.

Refactor é ótimo, mas não está disponível para mim. No entanto, como se vê, o Visual Studio 2008 faz isso sozinho.

Aqui estão os passos:

  1. Carregue o código no Visual Studio.
  2. Clique com o botão direito em qualquer lugar na página de código.
  3. Clique em "Organizar Usos" no menu.
  4. Clique em "Remover Usos não Usados"

Feito. Eu percebo que isso não responde à pergunta original (fazendo isso em massa para um projeto inteiro), mas responde à minha pergunta.

0
adicionado
isso também está disponível no Visual Studio 2010
adicionado o autor Junior M, fonte

Resharper will do this for you and you can set it up in the Clean Code option that you can run solution wide ;o)

0
adicionado

Se você tiver o ReSharper instalado, a partir do Solution Explorer, você pode clicar com o botão direito do mouse em uma referência e clicar em Localizar Código Dependente . Se voltar com um diálogo de resultados, então você está usando essa referência/assembly. Se você receber a mensagem "Código dependente do módulo nome do módulo não encontrado." Então você deve estar OK para remover essa referência/montagem porque não está sendo usado.

0
adicionado

Como foi mencionado por respostas anteriores, Resharper funciona bem para isso, assim como uma variedade de outros casos, como como maneiras de tornar o código mais limpo e gerar certas coisas para você. A melhor maneira de realmente descobrir todas as vantagens do Resharper é baixar o trial, imprimir um KeyMate Cheatsheet e cole-o ao seu lado onde você está desenvolvendo.

Resumindo, resolve este problema, mas faz muito mais do que isso.

0
adicionado

Se você tiver o ReSharper, selecione a solução, clique com o botão direito e selecione o código de limpeza. O Resharper passará por todos os arquivos de código na solução.

Quanto à remoção de referências de projeto, quando o compilador é executado, ele não adicionará a referência se nenhum código usar essa dll.

0
adicionado

Remover referências não utilizadas é um recurso que o Visual Studio 2008 já suporta. Infelizmente, apenas para projetos do VB .NET.

Eu abri uma sugestão no Microsoft Connect para obter esse recurso para projetos de C# também:

http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=510326

Se você gosta desse recurso também, pode votar em minha sugestão.

0
adicionado
Obrigado por abrir a sugestão de conexão, poucas pessoas se esforçam para fazê-lo. Também estou querendo saber se há alguma maneira de obter este recurso oculto através do uso de uma macro para um projeto c #.
adicionado o autor jpierson, fonte