Resumo: renomear e mover no VS2019 com git, manter o histórico do git, alavancar um pouco o R #, atualização automática de referência dependente do projeto (importante para sln's com muitos projetos, temos> 200)
Eu tenho usado as etapas a seguir para renomear e mover projetos C # no Visual Studio 2019. Esse processo usa R # para ajustar os espaços para nome. O histórico do git é mantido com um "git mv" (evitando a adição / exclusão do histórico).
Duas fases: 1) renomeie o projeto no local e 2) mova o projeto.
(Usa dica dos projetos de descarregamento da base2 re).
Renomear
- VS Gerenciador de Soluções | projeto com o botão direito | Renomeie (por exemplo, Utils.Foo para Foo).
- VS Gerenciador de Soluções | projeto com o botão direito | Propriedades | alterar nome da montagem, espaço para nome padrão e campos Informações da montagem
- Faça 1 e 2 para o projeto de teste correspondente (por exemplo, Utils.Foo.Tests)
- VS Gerenciador de Soluções | clique com o botão direito do mouse em projetos (produção e teste) | Refatorador Ajustar namespaces
- Os arquivos XAML que usam o projeto podem precisar ser atualizados (manualmente ou com uma pesquisa e substituição global apropriadas)
- Reconstruir tudo
- Commit !! (para confirmar alterações antes das jogadas)
Nota: A pasta no Windows Explorer permanece o nome antigo até este ponto (por exemplo, Utils.Foo). Isso é corrigido nas etapas de movimentação.
Mover
Este método: 1) mantém o histórico do git, 2) aproveita o R # para ajustar os espaços de nome atomicamente e 3) atualiza os projetos dependentes em massa (evita a edição manual tediosa dos arquivos sln e csproj dependentes).
descarregar todos os projetos na solução (para que a remoção do projeto de destino não acione alterações nos projetos dependentes)
VS selecione todas as pastas da solução em Solução | clique com o botão direito do mouse em Descarregar projetos
mover pastas usando o git (para manter o histórico)
a) abra o prompt de comando do desenvolvedor para 2019
b) status git (para ilustrar “nada a confirmar, trabalhando com a árvore limpa”)
c) git mv no projeto, por exemplo, git mv "C: \ Code \ foo \ foo \ Utils.Foo" "C: \ Code \ Foo"
d) status git para visualizar / verificar alterações
- remover o projeto
VS Gerenciador de Soluções | selecione projeto | clique com o botão direito | Remover (uma vez que todos os projetos são descarregados, isso NÃO removerá corretamente as referências a ele em projetos dependentes)
- adicione novamente o projeto (ao novo local na árvore no Solution Explorer)
a) VS | Gerenciador de Soluções | selecione a pasta pai de destino | clique com o botão direito | Adicionar Projeto existente
- recarregar todos os projetos
IMPORTANTE: Confirme se os arquivos * .csproj para projetos dependentes foram atualizados.
(VS | Team Explorer | Alterações | clique duas vezes em qualquer csproj dependente listado | inspecione-verifique a alteração do caminho do ProjectReference)
- Corrija manualmente caminhos no único arquivo * .csproj movido
Use o Notepad ++ (ou outro editor de texto) para corrigir os caminhos. Geralmente, isso pode ser feito com uma simples pesquisa e substituição (por exemplo, ../../../../ a ../../).
Isso atualizará ...
a) referências GlobalAssmeblyInfo.cs
b) caminhos para pacotes
c) caminhos para os arquivos do diagrama de Validação de Dependência
d) caminhos para caminhos do conjunto de regras (por exemplo, <CodeAnalysisRuleSet>..\..\..\..\SolutionDependencyValidation\IgnoreWarnings.ruleset</CodeAnalysisRuleSet>
)
- Feche e abra novamente a solução (para obter as referências do projeto em boa forma)
Salvar tudo, fechar solução, prefiro excluir as pastas bin e obj para não ter histórico, reabrir a solução
- Validar
a) VS | Team Explorer | Alterar
i) deve ver as mudanças em etapas que revelam os arquivos que foram movidos ii) deve ver os projetos dependentes (* .csproj) que foram bem atualizados, revise as diferenças do csproj e observe que os caminhos foram maravilhosamente atualizados! (essa é a mágica que evita a atualização manual e laboriosa dos arquivos csproj usando um editor de texto)
b) no Windows Explorer, verifique se o local antigo está vazio
c) Solução limpa, Reconstruir solução, Executar testes de unidade, Iniciar aplicativos no sln.
- Commit !!