Compare dois arquivos no Visual Studio

430

Eu vi uma nova ferramenta de comparação no VS 2012 para comparar dois arquivos ou duas versões de arquivo. Eu gosto disso. Mas quando tentei encontrá-lo, não posso porque não uso o TFS. Existe uma maneira de comparar apenas dois arquivos com o recurso incorporado no VS, mas sem o TFS?

Libor Zapletal
fonte
1
Assim como recado para uso posterior: Se você estiver trabalhando com vs2015, use este link: visualstudio.com/en-us/docs/tfvc/compare-files
Elnaz
Observe que isso ainda é aplicável ao VS 2017. Portanto, forneci uma resposta sobre como lidar com esse problema confortavelmente.
Matt
2
Nenhuma das respostas pode comparar dois arquivos abertos no Visual Studio.
User3454439
1
Por favor vote para esse recurso aqui: developercommunity.visualstudio.com/content/idea/619706/...
Happypig375
No VS2017 e no VS2019, até a barra de ferramentas de comparação de arquivos está aberta, não sei como usá-lo ... Agora, usando o VSCode, basta abrir os dois arquivos e selecionar os dois e o menu de contexto-> comparar selecionado.
jw_ 15/01

Respostas:

809

Você pode chamar a devenv.exe /diff list1.txt list2.txtpartir do prompt de comando ou, se uma instância do Visual Studio já estiver em execução, você pode digitar Tools.DiffFilesna janela Comando, com um prático preenchimento de nome de arquivo:

Usando Tools.DiffFiles na janela de comando do Visual Studio

Vladimir Reshetnikov
fonte
15
Esta ferramenta diff fornece algum recurso útil como copiar para a esquerda, copiar para a direita, etc? Quando difiro a cópia de trabalho com a versão do servidor, às vezes desejo desfazer algumas das alterações e preciso colar a cópia manual.
Samuel
118
Por que esse recurso está oculto na interface do usuário do VS? Esta é a maneira mais fácil e eficaz de comparar dois arquivos ...
eka808:
76
Para aqueles de vocês que são novos para Visual Studio janela de comando pode ser aberto, indo para: View> Other Windows> Janela de Comando (VS Pro 2013) ou com CTRL + ALT + A
Cleanshooter
35
que vergonha O VS não possui um item de menu para essa funcionalidade muito básica. muitos IDE / editores fazem.
dewd
15
Nota: No Visual Studio 2015, você pode encontrá-lo aqui: Exibir -> Barras de ferramentas -> Comparar arquivos . Basta digitar "compare" na janela de início rápido e você será adicionado.
Matt
84

Inspirado na resposta aceita acima, achei uma maneira muito confortável de comparar instantaneamente dois arquivos com o Visual Studio usando arrastar e soltar ou através do menu de contexto "Enviar para" . Requer apenas um pouco de preparação que você precisa fazer uma vez e depois é útil como um canivete suíço.

O Visual Studio já tem tudo o que você precisa, existem apenas algumas etapas de configuração necessárias para fazer isso funcionar:

Comparação de arquivos usando arrastar e soltar

Preparação:

1. Crie um novo arquivo em lote usando seu editor de texto favorito. Digite o seguinte:

@echo off
setlocal
set vspath=C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE
start "Compare files" /B /MIN "%vspath%\devenv.exe" /diff %2 %1 First:'%2' Second:'%1'

Você pode perceber que eu invertei os parâmetros %1e %2no lote. Isso ocorre porque eu notei que o gerenciador de arquivos passa o segundo arquivo como primeiro parâmetro e o primeiro arquivo como segundo parâmetro.

2. Salve esse código como VS_FileCompare.cmdusá-lo, modificar vspath, se necessário para coincidir com a localização do devenv.exe(dependendo da versão Visual Studio você está usando atualmente, ver nota *) )

3. Ou criar um atalho chamado "File Compare" para VS_FileCompare.cmde lugar na área de trabalho(conforme usado na animação abaixo), para que esteja sempre disponível para arrastar e soltar arquivos nele ou colocar diretamente o arquivo em lotes na área de trabalho. Isso é tudo!

Uso:

  1. Abra o Windows Explorer via Win+E
  2. Selecione dois arquivos para comparar no explorer
  3. Arraste e solte-os como mostrado na animação abaixo: DragDropDemo

  4. Após alguns segundos (dependendo do tempo de inicialização do Visual Studio), os resultados serão mostrados no Visual Studio: Visualização do Visual Studio

Nota: Não faz mal se o Visual Studio já estiver aberto. Nesse caso, ele abrirá apenas uma nova janela na instância em execução do Visual Studio. Assim, você pode comparar vários pares de arquivos, mas verifique se selecionou apenas 2 arquivos por vez.


Maneira alternativa: menu de contexto SendTo

Aqui está uma alternativa de como você pode usar o arquivo VS_FileCompare.cmdem lotes mencionado na seção acima. Permite usar a pasta Enviar para do menu de contexto para comparar os arquivos.

Preparação:

  1. Crie um atalho "Compare2Files VS" para o arquivo em lotes VS_FileCompare.cmde copie-o para a pasta SendTo . Abra o Windows Explorer via Win+E
  2. Abra a pasta SendTo , inserindo shell:sendtoa barra de endereços do gerenciador de arquivos (conforme descrito aqui ). Em seguida, coloque o atalho preparado nesta pasta.

Uso:

  1. Abra o Windows Explorer via Win+E
  2. Selecione dois arquivos para comparar no explorer
  3. Supondo que o atalho para o arquivo em lotes VS_FileCompare.cmdseja denominado "Compare2Files VS" , você pode selecionar os dois arquivos, clicar com o botão direito do mouse e selecionar Enviar para -> Compare2Files VS para chamar a comparação, como mostrado abaixo: Enviar para

  4. Após alguns segundos (dependendo do tempo de inicialização do Visual Studio), os resultados serão mostrados no Visual Studio: Visualização do Visual Studio


Referências do MSDN:
- Uso da janela de diferenças
- Parâmetro Diff do Visual Studio


*)  Nota de rodapé: como vsPath(o caminho para DEVENV.exe) difere dependendo da sua versão do Visual Studio, estou descrevendo como você pode descobrir (Windows 10):

  1. No menu Iniciar do WindowsÍcone do Windows Pequeno , localize o ícone do Visual Studio Ícone do Visual Studio Small
  2. Clique com o botão direito do mouse para abrir o menu de contexto. Selecione Mais> Abrir local do arquivo .
    O Windows Explorer é aberto com o atalho do Visual Studio realçado.
  3. Clique com o botão direito do mouse no Visual Studio e selecione Propriedades
  4. Na caixa de diálogo de propriedades, você pode encontrar o caminho em "Destino:" VSProperties
Matt
fonte
5
Esta é realmente uma resposta muito boa e elaborada, que definitivamente deve ser votada. Eu sou do grupo que continua procurando respostas prontas para uso, mesmo que a resposta esteja marcada em um tópico, por isso estou absolutamente dando o aviso.
Div Tiwari
1
@DivTiwari - Obrigado, prazer em ouvir isso!
19418 Matt
Edit: Este é o script para o VS 2013, obrigado novamente. @echo off setlocal set vspath = C: \ Arquivos de Programas (x86) \ Microsoft Visual Studio 12.0 \ Common7 \ IDE start "Compare files" / B / MIN "% vspath% \ devenv.exe" / diff% 2% 1 Primeiro: '% 2' Segundo: '% 1'
Fernando Aguilar
1
Isso foi excelente e funcionou como um encanto. Graças um companheiro muito
Sabbir Hassan
1
Agradável! up-vote this..just amor a natureza 'hackish' desta solução. Obrigado por compartilhar.
Leo Gurdian 15/05/19
24

Eu sempre fui fã do WinMerge, que é um projeto de código aberto. Você pode conectá-lo ao Visual Studio com bastante facilidade.

http://blog.paulbouwer.com/2010/01/31/replace-diffmerge-tool-in-visual-studio-team-system-with-winmerge/

mostrará como fazer isso


fonte
Também é capaz de pastas diff - muito poderoso
Jaans
2
A única desvantagem do WinMerge é a sua limitada ablitiy reconhecer alterações (como espaços em branco, as linhas divididas em mais linhas, etc)
24

Há também uma extensão do Visual Studio chamada CompareFiles , que nada mais faz além de adicionar a entrada "Comparar arquivos" ao menu de contexto do Solution Explorer. Invoca a ferramenta de diferenças interna do Visual Studio.

Apenas no caso de alguém (como eu) não querer instalar uma extensão multifuncional como o VSCommands ...

Stephan
fonte
1
NB - esta extensão é apenas para o VS2012, mas você pode editar o arquivo de manifesto para oferecer suporte ao VS2013 com bastante facilidade - veja meu comentário na guia Perguntas e Respostas da extensão para obter detalhes. (Eu queria esse recurso, mas não pode usar a versão gratuita do VSCommands no trabalho devido à sua licença)
James S
As Ferramentas de Comparação do Visual Studio estão disponíveis para 2013, visualstudiogallery.msdn.microsoft.com/…
Alinhado em
23

VS2019->View->Other Windows->Command Window (Ctrl + Alt + A)

Tools.DiffFiles File1 File2
patrick
fonte
É o mesmo que outra resposta
niico 06/06
5
Talvez - embora pessoalmente eu prefiro usar uma GUI para selecionar os arquivos que o tipo tem que construir dois caminhos em qualquer caso - Quero dizer que não é 1984.
niico
18

No Visual Studio 2012, 2013, 2015, você também pode fazer isso com o Web Essentials , basta clicar com o botão direito do mouse nos arquivos e, no menu de contexto> Web Essential >> Dif. Arquivos selecionados:

Editar: agora está disponível como uma extensão separada

insira a descrição da imagem aqui

Hamid Mosalla
fonte
Não vejo Diff arquivos selecionados ou compilar Markdown para HTML em Essential Web - VS 2015
usefulBee
Eu instalei a nova versão, VS 2015mas não consigo ver a Diff selected filesopção por que?
shaijut
@stom instale a extensão que eu mencionei.
Hamid Mosalla 01/10/19
16

Se você tiver o VS instalado, também poderá ligar

"%VS110COMNTOOLS%..\IDE\vsdiffmerge.exe" "File1" "File2"

ou para o VS 2013

"%VS120COMNTOOLS%..\IDE\vsdiffmerge.exe" "File1" "File2"

Fonte: http://roadtoalm.com/2013/10/22/use-visual-studio-as-your-diff-and-merging-tool-for-local-files/

Chandramouleswaran Ravichandra
fonte
Obrigado funcionou perfeitamente para mim. c: \ temp> "% VS120COMNTOOLS% .. \ IDE \ vsdiffmerge.exe" 1256.txt 1256_PROD_Original.txt
Craig B
8

No Código do Visual Studio, você pode:

  • Vou ao Explorer
  • Clique com o botão direito do mouse no primeiro arquivo que você deseja comparar
  • Selecione Select for compare
  • Clique com o botão direito do mouse no segundo arquivo que você deseja comparar
  • Selecione Compare with '[NAME OF THE PREVIOUSLY SELECTED FILE]'
jahller
fonte
Isso funciona maravilhosamente no código do Visual Studio, como você mencionou, mas infelizmente não no Visual Studio Enterprise (nem no Professional).
Eptin 15/04
4

ATUALIZADO: Para o VS 2019 File Differ Plugin Permite comparar arquivos em projetos distintos insira a descrição da imagem aqui

insira a descrição da imagem aqui

Você pode instalá-lo aqui:

insira a descrição da imagem aqui

OLD: para o VS 2017 Instale https://marketplace.visualstudio.com/items?itemName=vs-publisher-457497.FileComparer2017

O problema é que você não pode comparar arquivos em diferentes projetos, mas pode copiar os arquivos no mesmo projeto para comparar ...

Diferença de arquivo

Juan Pablo
fonte
1
Infelizmente, isso não funciona quando se tenta comparar dois arquivos sem solução (por exemplo, quando você VS2017 aberto no modo pasta: Open - Pasta)
Yury Kozlov
2

Eu tive esse problema também. Sem TFS, mas achei este artigo útil .

Especificamente, etapa 1b.

Abra um prompt de comando do Visual Studio e navegue até a pasta Common7 / IDE e digite

tf diff /configure
billb
fonte
0

Comparador de arquivos VS Extension de Akhil Mittal. Excelente ferramenta leve que faz o trabalho.

usefulBee
fonte
0

Para comparar dois arquivos e mesclá-lo em um arquivo Aqui estão as etapas a seguir que você pode seguir se tiver o visual studio (qualquer versão) instalado.

Etapa 1: Abra o prompt de comando do Visual studio. Se você não encontrar o prompt de comando do visual studio, escolha as ferramentas do visual studio

Iniciar -> prompt de comando do Visual Studio

insira a descrição da imagem aqui

insira a descrição da imagem aqui

Etapa 2: Digite o comando vsdiffmerge.exe

Ignore o switch / m se você precisar apenas de comparação.

Sintaxe 1:
vsdiffmerge <arquivo1> <arquivo2> <arquivo1> <arquivo de saída> / t / m

Sintaxe 2:
vsdiffmerge <basefilename> <CompareFilename> <basefilename> <OutputFilename> / t / m

Exemplo 1:
vsdiffmerge test1.js test2.js test1.js output.js / t / m
Exemplo 2:
vsdiffmerge.exe "C: \ Usuários \ livingston \ Downloads \ wa \ wa \ Arquivos \ pré \ Test.js" "C : \ Users \ livingston \ Downloads \ wa \ wa \ Arquivos \ Prod \ Test.js "" C: \ Usuários \ livingston \ Downloads \ wa \ wa \ Arquivos \ pré \ Test.js "" C: \ Usuários \ livingston \ Downloads \ wa \ wa \ Arquivos \ output \ samp.js "/ t / m

insira a descrição da imagem aqui


Etapa 3: mesclar os arquivos

insira a descrição da imagem aqui Observe que, se o nome do arquivo não existir no local, ele não abrirá o comparador.

Além disso, você pode embelezar o arquivo antes de fazer a comparação. No estúdio visual Ctrl + K + D.

Existem muitos sites de embelezamento disponíveis online.

George Livingston
fonte
0

O código do Visual Studio é ótimo para isso - abra uma pasta, clique com o botão direito do mouse nos dois arquivos e compare.

niico
fonte
0

No Visual Studio, o Diff pode ser chamado usando Command Windowe, em seguida, Tools.DiffFilescomando

  1. Abrir Command Windowpor teclas de atalho Ctrl + W, Aou por menuView -> Other Windows -> Command Window
  2. Comando Enter Tools.DiffFiles "FirstFile.cs" "SecondFile.cs"
Kiryl Khadanovich
fonte
-2

Acredito que essa seja uma das melhores extensões para o Visual Studio 2012, chamada Code Compare e pode ser encontrada aqui.

Opster Elasticsearch - Nathan
fonte
-4

Se você estiver trabalhando com o TFS conectado, clique com o botão direito do mouse no arquivo que você precisa comparar (através do explorador de controle de origem) e ele apresentará uma janela como esta - insira a descrição da imagem aqui

Agora mude o caminho do arquivo de origem em 'Souce Path:' e você obterá uma comparação através da ferramenta de comparação VS.

Da mesma forma, você também pode comparar a pasta, que compara todos os arquivos de uma pasta ao mesmo tempo.

Chetan Naithani
fonte
2
Se você leu a postagem original, ele diz especificamente: "Existe uma maneira de comparar dois arquivos com o recurso incorporado no VS, mas sem o TFS?" Sua resposta exige que ele tenha TFS.
CigarDoug 9/09/15
embora ele tenha tentado responder .. embora, sua tentativa
esteja