Visual Studio mover projeto para uma pasta diferente

182

Como mover um projeto para uma pasta diferente no Visual Studio? Estou acostumado a essa estrutura em meus projetos.

-- app
---- Project.Something
---- Project.SomethingElse

Quero renomear todo o espaço para nome SomethingElse para SomethingNew, qual é a melhor maneira de fazer isso (sem entrar manualmente no arquivo .sln)?

Egor Pavlikhin
fonte
Você está usando o TFS como seu provedor de controle de origem?
Bermo 12/04/10
Deseja renomear apenas a pasta ou todo o projeto?
Charles Gargent
Projeto, pasta e namespace (s).
Egor Pavlikhin 12/04/10
1
possível duplicação de Como renomear uma pasta de projeto no Visual Studio?
Tim Abell

Respostas:

175

Remova o projeto da sua solução clicando com o botão direito do mouse na janela Solution Explorer e escolhendo Remove. Mova a pasta inteira do projeto, incluindo subdiretórios, para onde você quiser. Adicione o projeto novamente à sua solução.

Nomes de espaço para nome é algo completamente diferente, basta editar o código-fonte.

Hans Passant
fonte
6
Foi o que fiz, mas achei que havia uma maneira de fazer tudo isso sem remover todo o projeto, o que me leva a adicionar novamente todas as dependências.
Egor Pavlikhin 12/04
31
Descarregue todos os projetos dependentes da solução antes de remover o projeto que você deseja mover. Dessa forma, eles não detectam a remoção e as referências do projeto permanecem intactas. Depois de mover o projeto e adicioná-lo novamente à solução, você pode carregar os projetos dependentes novamente.
base2 30/11
13
Não se esqueça que excluir um arquivo no TFS e, em seguida, reimportá-lo novamente para o TFS em outro local ou projeto de diretório, faz com que o histórico de alterações do arquivo seja excluído.
Paul
Eu quero fazer isso sem perder o histórico de alterações, para que eu ainda possa fazer comparações quando quiser.
user734028
196

Tentei a sugestão de remover e adicionar novamente o projeto, mas a correção de dependências pode ser uma dor.

Eu uso essa abordagem:

  1. Mova a pasta do projeto.
    • Se o projeto estiver no controle de origem, faça o movimento usando comandos de controle de origem.
  2. Edite o arquivo da solução em um editor de texto. Deve haver apenas um caminho que você precisa alterar.
Igor ostrovsky
fonte
Definitivamente mais fácil! Mas, depois que eu movo e edito a solução usando a edição de texto, o arquivo da solução é mostrado abaixo como um arquivo de texto comum. Como faço para me livrar disso?
Abriel
2
"Se o projeto estiver no controle de origem, faça o movimento usando comandos de controle de origem." .. Você pode explicar como fazer isso?
Anish V
3
@AnishV Por exemplo, se você usa Git, digite em git mv ...vez de mv .... Consulte a git-mvdocumentação para mais informações.
precisa saber é o seguinte
3
No arquivo .csproj, você precisa atualizar a propriedade SolutionDir, bem como corrigir todos os caminhos para referências de projetos e locais de pacotes de nuget. No arquivo .sln, tudo o que você precisa fazer é atualizar o caminho para o projeto.
Pete
Isso tem funcionado para mim. O único "truque" foi que eu tive que alterar o arquivo .sln para que não fosse somente leitura e editá-lo e depois marcá-lo como somente leitura novamente por questões de segurança.
JustWannaFly
44
  1. Feche sua solução no VS2012
  2. Mova seu projeto para o novo local
  3. Abra sua solução
  4. Selecione o projeto que falhou ao carregar
  5. Na janela da ferramenta Propriedades, existe uma entrada editável "Caminho do arquivo" que permite selecionar o novo local do projeto
  6. Defina o novo caminho
  7. Clique com o botão direito do mouse no projeto e clique em recarregar
Emmanuel
fonte
4
Isso funciona muito bem e parece ser a maneira mais rápida e fácil, não obstante as outras respostas votadas muito mais altas. Há um artigo aqui: msmvps.com/blogs/deborahk/archive/2010/06/30/…
Mike Rosenblum
@MikeRosenblum O link está quebrado, o novo link é blogs.msmvps.com/deborahk/…
Roi Gavish
1
Não funciona no VS2012. O artigo vinculado também menciona apenas o VS2010.
Bassim
Funcionou bem para mim no VS2010, incluindo todas as minhas referências, exceto 1, que eu tive que adicionar novamente.
Kristian
@Vasanth No Visual Studio 2019, você precisa editar manualmente o arquivo .sln para localizar o projeto; e possivelmente (provavelmente) o arquivo .csproj também para referenciar o local correto de qualquer pacote de nuget.
Caltor 20/04
3

O que funcionou para mim foi:

  1. Remova o projeto da solução.
  2. Edite o arquivo do projeto com um editor de texto.
  3. Atualize todos os caminhos relativos para os "pacotes". No meu caso, tive que mudar ..\packagespara ..\..\..\packagesdesde que mudei o projeto para uma pasta mais profunda.
  4. Carregue o projeto novamente na solução.
Gonzalo Méndez
fonte
2

Eu tive o mesmo problema. Resolvi com mover as referências e em menos de 15 minutos, sem alterar as referências.

Para mim, a solução foi simples:

  1. Mova seus arquivos para onde você precisar.
  2. Exclua a pasta com o nome .vs. A pasta deve estar como não visível.
  3. Abra o arquivo de solução (.sln) usando um editor simples, como note ou notepad ++.
  4. Altere a referência onde está o arquivo, usando a seguinte estrutura: se você colocar o projeto na mesma pasta, remova a pasta anterior ou a referência ".. \"; se você colocar em uma pasta acima, adicione a referência ".. \" ou o nome da pasta.
  5. Salve o arquivo com as alterações.
  6. Abra o arquivo do projeto (.csproj) e faça o mesmo, remova ou adicione a referência.
  7. Salve as alterações.
  8. Abra o arquivo da solução.

Exemplos:

No arquivo de solução (.sln)

  • Original: Projeto ("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PATH1.UI", " ScannerPDF \ PATH1.UI \ PATH1.UI.csproj", "{A26438AD-E428-4AE4-8AB8-A5D6933E } "Projeto (" {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} ") =" PATH1.DataService "," ScannerPDF \ PATH1.DataService \ PATH1.DataService.csproj "," {ED5A561B-3674E4613-ADE5-B } "

    Novo: Projeto ("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PATH1.MX.UI", "PATH1.MX.UI \ PATH1.UI.csproj", "{A26438AD-E428-4AE4-8AB8 -A5D6933E2D7B} "Projeto (" {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} ") =" PATH1.DataService "," PATH1.DataService \ PATH1.DataService.csproj "," {ED5A561B-3674-4613 } "

No arquivo do projeto:

  • Original:

    Novo:

    Referência original: .... \ lib \ RCWF \ 2018.1.220.40 \ TelerikCommon.dll

    Nova referência: .. \ lib \ RCWF \ 2018.1.220.40 \ TelerikCommon.dll

Victor David Francisco Enrique
fonte
2

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

  1. VS Gerenciador de Soluções | projeto com o botão direito | Renomeie (por exemplo, Utils.Foo para Foo).
  2. 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
  3. Faça 1 e 2 para o projeto de teste correspondente (por exemplo, Utils.Foo.Tests)
  4. VS Gerenciador de Soluções | clique com o botão direito do mouse em projetos (produção e teste) | Refatorador Ajustar namespaces
  5. Os arquivos XAML que usam o projeto podem precisar ser atualizados (manualmente ou com uma pesquisa e substituição global apropriadas)
  6. Reconstruir tudo
  7. 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).

  1. 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

  2. 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

  1. 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)

  1. 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

  1. 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)

  1. 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>)

  1. 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

  1. 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.

  1. Commit !!
dthal
fonte
1

É fácil no VS2012; basta usar o recurso de mapeamento de alterações:

  1. Crie a pasta para a qual você deseja que a solução seja movida.
  2. Faça o check-in de todos os seus arquivos de projeto (se você quiser manter as alterações) ou faça o rollback de todos os arquivos com check-out.
  3. Feche a solução.
  4. Abra o Source Control Explorer.
  5. Clique com o botão direito do mouse na solução e selecione "Avançado -> Remover Mapeamento ..."
  6. Altere o valor "Pasta local" para o que você criou na etapa 1.
  7. Selecione "Alterar".
  8. Abra a solução clicando duas vezes no gerenciador de controle de origem.
Forch
fonte
2
Ou seja, se você estiver usando o TFS?
Martin Ba
1

no visual studio community 2019, fiz o que Victor David Francisco Enrique diz, mas precisava apenas excluir a pasta .vs invisbile

BWS1986
fonte
0

No VS 2015

  1. Descarregue seu projeto no gerenciador de soluções
  2. Crie uma nova solução
  3. Copie os projetos para a pasta da nova solução
  4. Clique com o botão direito do mouse na solução, adicione o projeto existente.
  5. Se você usa alguma estrutura, como MVC, pode ser necessário adicionar a referência no gerenciador de referências.
code4j
fonte
0

Eu descobri que essa tentativa funcionou para mim.

No visual studio 2017 community edition, ele cria um projeto neste caminho "C: \ Usuários \ marca \ origem \ repos \ mipmaps \ mipmaps" Isso criará um acesso negado ao arquivo

Agora, você pode corrigir isso dessa maneira.

feche seu processo do visual studio. Em seguida, encontre seu projeto e copie a pasta do projeto. Primeiro, crie uma subpasta Projetos nomeados dentro da pasta do visual studio 2017 em documentos. Em seguida, cole a pasta do projeto dentro da pasta do projeto do visual studio 2017 e não a pasta principal do visual studio 2017, que deve ir para a subpasta chamada Projetos. Em seguida, reinicie o Visual studio 2017. Em seguida, escolha Abrir projeto Solução. Em seguida, encontre o projeto que você colou na pasta Projetos do visual studio 2017. Limpe o Projeto e reconstrua-o. Ele deve compilar e compilar corretamente. Espero que isso tenha ajudado mais alguém. Não sei por que a Microsoft pensou que construir seus projetos em um caminho em que precisa de permissões de gravação está além de mim.

markk
fonte
0

Eu queria que as alterações no Git fossem mostradas como movimentos / renomeamentos em vez de excluir e adicionar. Então eu fiz uma combinação do acima e deste post .

mkdir subdirectory
git mv -k ./* ./subdirectory
# check to make sure everything moved (see below)
git commit

E ajuste os caminhos dos projetos e das montagens dos Nuggets Pkg's no arquivo sln através de um editor de texto.

Bob Lokerse
fonte
0
  1. Copie a pasta do projeto para o novo destino
  2. Remova seu projeto da solução (clique com o botão direito do mouse no projeto em "Solution Explorer" e escolha "Remove")
  3. Em seguida, adicione o projeto existente à solução (clique com o botão direito do mouse no projeto em "Solution Explorer" e escolha "Add" e depois "Project existente")
  4. Altere o caminho para a pasta "packages" no arquivo "YourProjectName.csproj" (abra no bloco de notas e altere os caminhos dos pacotes vinculados)
Outro Mi
fonte
0

Isso funcionou para mim vb2019. Copiei minha pasta do projeto de origem. Em seguida, colei o projeto e renomeei a pasta para o que for. Para romper os vínculos com a pasta do projeto de origem, renomeei temporariamente a pasta de origem. Abri meu projeto de destino. Os caminhos para os formulários e módulos foram redescobertos na pasta local. Passei por todos os meus formulários e módulos para garantir que eles estavam funcionando. Eu dirigi o projeto. Fechei o projeto. Renomeei o nome da pasta do projeto de origem para o nome original. Eu posso abrir os dois projetos ao mesmo tempo sem erros.

Sandy
fonte