Comparer deux fichiers dans Visual Studio

430

J'ai vu un nouvel outil de comparaison dans VS 2012 pour comparer deux fichiers ou deux versions de fichier. Je l'aime. Mais quand j'ai essayé de le trouver, je ne peux pas parce que je n'utilise pas TFS. Existe-t-il un moyen de comparer deux fichiers avec une fonction intégrée dans VS mais sans TFS?

Libor Zapletal
la source
1
Tout comme commentaire pour une utilisation ultérieure: Si vous travaillez avec vs2015, utilisez ce lien: visualstudio.com/en-us/docs/tfvc/compare-files
Elnaz
Notez que cela est toujours applicable pour VS 2017. Par conséquent, j'ai fourni une réponse sur la façon de traiter ce problème confortablement.
Matt
2
Aucune des réponses ne peut comparer deux fichiers déjà ouverts dans Visual Studio.
user3454439
1
Veuillez voter pour cette fonctionnalité ici: developercommunity.visualstudio.com/content/idea/619706/…
Happypig375
Dans VS2017 et VS2019, même la barre d'outils de comparaison de fichiers est ouverte, je ne sais pas comment l'utiliser ... En utilisant VSCode maintenant, ouvrez simplement les deux fichiers et sélectionnez les deux et le menu contextuel-> comparer la sélection.
jw_

Réponses:

809

Vous pouvez invoquer à devenv.exe /diff list1.txt list2.txtpartir de l'invite de commande ou, si une instance de Visual Studio est déjà en cours d'exécution, vous pouvez taper Tools.DiffFilesdans la fenêtre de commande, avec un nom de fichier pratique complétée:

Utilisation de Tools.DiffFiles à partir de la fenêtre de commande Visual Studio

Vladimir Reshetnikov
la source
15
Cet outil diff fournit-il une fonctionnalité utile comme la copie à gauche, la copie à droite, etc.? Lorsque je diffère la copie de travail avec la version du serveur, je souhaite parfois annuler certaines des modifications et dois faire un copier-coller manuel.
Samuel
119
Pourquoi cette fonctionnalité est-elle cachée de l'interface utilisateur VS? C'est le moyen le plus simple et le plus efficace de comparer deux fichiers ...
eka808
77
Pour ceux d'entre vous qui débutent dans Visual Studio, la fenêtre de commande peut être ouverte en allant à: Affichage> Autres fenêtres> Fenêtre de commande (VS Pro 2013) ou avec CTRL + ALT + A
Cleanshooter
36
une telle honte VS n'a pas d'élément de menu pour cette fonctionnalité très basique. de nombreux IDE / éditeurs le font.
rosée
15
Remarque: Dans Visual Studio 2015, vous pouvez le trouver ici: Affichage -> Barres d'outils -> Comparer les fichiers . Tapez simplement "comparer" dans la fenêtre de lancement rapide et vous l'aurez ajouté.
Matt
84

Inspiré par la réponse acceptée ci-dessus, j'ai trouvé un moyen très confortable de comparer instantanément deux fichiers avec Visual Studio en utilisant le glisser-déposer ou via le menu contextuel "Envoyer vers" . Il ne nécessite qu'une petite préparation que vous devez faire une fois, puis il est utile comme un couteau suisse.

Visual Studio a déjà tout ce dont vous avez besoin, seules quelques étapes de configuration sont nécessaires pour que cela fonctionne:

Comparaison de fichiers par glisser-déposer

Préparation:

1. Créez un nouveau fichier de commandes à l' aide de votre éditeur de texte préféré. Tapez ce qui suit:

@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'

Vous remarquerez peut-être que j'ai inversé les paramètres %1et %2dans le lot. C'est parce que j'ai remarqué que l'explorateur de fichiers passe le 2ème fichier comme premier paramètre, puis le 1er fichier comme deuxième paramètre.

2. Enregistrez ce code VS_FileCompare.cmdpour l'utiliser, modifiez-le vspathsi nécessaire pour qu'il corresponde à l'emplacement de devenv.exe(selon la version de Visual Studio que vous utilisez actuellement, voir la note de bas de page *) )

3. Soit créez un raccourci nommé "Comparaison de fichiers" pour VS_FileCompare.cmdet placez sur le bureau(comme utilisé dans l'animation ci-dessous), il est donc toujours disponible pour y glisser-déposer des fichiers ou placer directement le fichier de commandes sur le bureau. C'est tout!

Usage:

  1. Ouvrez l' explorateur Windows via Win+E
  2. Sélectionnez deux fichiers à comparer dans l'explorateur
  3. Faites-les glisser et déposez-les comme indiqué dans l'animation ci-dessous: DragDropDemo

  4. Après quelques secondes (selon l'heure de lancement de Visual Studio), les résultats seront affichés dans Visual Studio: Visual Studio View

Remarque: cela ne nuit pas si Visual Studio est déjà ouvert. Dans ce cas, il ouvrira simplement une nouvelle fenêtre dans l'instance en cours d'exécution de Visual Studio. Vous pouvez donc comparer plusieurs paires de fichiers, mais assurez-vous de n'avoir sélectionné que 2 fichiers à la fois.


Autre moyen: menu contextuel SendTo

Voici une alternative pour utiliser le fichier de commandes VS_FileCompare.cmd mentionné dans la section ci-dessus. Il permet d'utiliser le dossier Envoyer vers du menu contextuel pour comparer les fichiers.

Préparation:

  1. Créez un raccourci "Compare2Files VS" pour le fichier de commandes VS_FileCompare.cmdet copiez-le dans le dossier SendTo . Ouvrez l' explorateur Windows via Win+E
  2. Ouvrez le dossier SendTo en entrant shell:sendtodans la barre d'adresse de l'explorateur de fichiers (comme décrit ici ). Ensuite, placez le raccourci préparé dans ce dossier.

Usage:

  1. Ouvrez l' explorateur Windows via Win+E
  2. Sélectionnez deux fichiers à comparer dans l'explorateur
  3. En supposant que le raccourci pour le fichier de commandes VS_FileCompare.cmdest nommé "Compare2Files VS" , vous pouvez sélectionner les deux fichiers, cliquez avec le bouton droit et sélectionnez Envoyer vers -> Compare2Files VS pour appeler la comparaison, comme indiqué ci-dessous: Envoyer à

  4. Après quelques secondes (selon l'heure de lancement de Visual Studio), les résultats seront affichés dans Visual Studio: Visual Studio View


Références MSDN:
- Utilisation de la fenêtre diff
- Paramètre Diff de Visual Studio


*)  Note de bas de page: Parce que vsPath(le chemin versDEVENV.exe ) diffère selon votre version de Visual Studio, je décris comment vous pouvez le découvrir (Windows 10):

  1. Dans le menu Démarrer de Windows Icône Windows petite , recherchez l' icône Visual Studio Icône Visual Studio Small
  2. Cliquez avec le bouton droit pour afficher le menu contextuel. Sélectionnez Plus> Ouvrir l'emplacement du fichier .
    L'Explorateur Windows s'ouvre avec le raccourci Visual Studio en surbrillance.
  3. Cliquez avec le bouton droit sur Visual Studio et sélectionnez Propriétés
  4. Dans la boîte de dialogue des propriétés, vous pouvez trouver le chemin dans "Cible:" VSProperties
Mat
la source
5
C'est vraiment une très bonne réponse élaborée, qui devrait certainement être votée. Je fais partie du groupe qui continue de chercher une réponse prête à l'emploi même si la réponse est marquée dans un fil, donc je donne absolument la tête haute.
Div Tiwari
1
@DivTiwari - Merci, heureux d'entendre ça!
Matt
Edit: Ceci est le script pour VS 2013, merci encore. @echo off setlocal set vspath = C: \ Program Files (x86) \ Microsoft Visual Studio 12.0 \ Common7 \ IDE start "Compare files" / B / MIN "% vspath% \ devenv.exe" / diff% 2% 1 First: '% 2' Deuxième: '% 1'
Fernando Aguilar
1
C'était superbe et fonctionnait comme un charme. Merci beaucoup
mec
1
Agréable! votant pour cela ... adore la nature "hackish" de cette solution. Merci de votre partage.
Leo Gurdian
24

J'ai toujours été fan de WinMerge qui est un projet open source. Vous pouvez le brancher assez facilement dans Visual Studio.

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

vous montrera comment procéder


la source
Également capable de différencier les dossiers - très puissant
Jaans
2
Le seul inconvénient de WinMerge est sa capacité limitée à reconnaître les changements (tels que les espaces blancs, les lignes divisées en plusieurs lignes, etc.)
24

Il existe également une extension Visual Studio appelée CompareFiles , qui ne fait rien d'autre que d'ajouter l'entrée "Compare Files" au menu contextuel de l'explorateur de solutions. Il appelle l'outil de différenciation Visual Studio intégré.

Juste au cas où quelqu'un (comme moi) ne voudrait pas installer une extension tout-en-un comme VSCommands ...

Stephan
la source
1
NB - cette extension est uniquement pour VS2012, mais vous pouvez modifier le fichier manifeste pour prendre en charge VS2013 assez facilement - voir mon commentaire sur l'onglet Q & A de l'extension pour plus de détails. (Je voulais cette fonctionnalité, mais je ne peux pas utiliser la version gratuite de VSCommands au travail en raison de sa licence)
James S
Visual Studio Comparison Tools est disponible pour 2013, visualstudiogallery.msdn.microsoft.com/…
Aligné le
23

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

Tools.DiffFiles File1 File2
patrick
la source
C'est la même chose qu'une autre réponse
niico
5
Peut-être - bien que personnellement, je préfère utiliser une interface graphique pour sélectionner les fichiers que le type doit construire deux chemins dans tous les cas - je veux dire que ce n'est pas 1984.
niico
18

Dans Visual Studio 2012, 2013, 2015, vous pouvez également le faire avec Web Essentials , cliquez simplement avec le bouton droit sur les fichiers et dans le menu contextuel> Web Essential >> Diff fichiers sélectionnés:

Edit: il est maintenant disponible comme une extension distincte

entrez la description de l'image ici

Hamid Mosalla
la source
Je ne vois pas les fichiers sélectionnés par Diff ou Compile Markdown en HTML dans Web Essential - VS 2015
utileBee
J'ai installé une nouvelle version pour VS 2015mais je ne vois pas l' Diff selected filesoption pourquoi?
shaijut
@stom installe l'extension que j'ai mentionnée.
Hamid Mosalla
16

Si VS est installé, vous pouvez également appeler

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

ou pour VS 2013

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

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

Chandramouleswaran Ravichandra
la source
Merci a parfaitement fonctionné pour moi. c: \ temp> "% VS120COMNTOOLS% .. \ IDE \ vsdiffmerge.exe" 1256.txt 1256_PROD_Original.txt
Craig B
8

Dans Visual Studio Code, vous pouvez:

  • Allez au Explorer
  • Faites un clic droit sur le premier fichier que vous souhaitez comparer
  • Sélectionner Select for compare
  • Faites un clic droit sur le deuxième fichier que vous souhaitez comparer
  • Sélectionner Compare with '[NAME OF THE PREVIOUSLY SELECTED FILE]'
jahller
la source
Cela fonctionne à merveille dans Visual Studio Code comme vous l'avez mentionné, mais malheureusement pas dans Visual Studio Enterprise (ni Professional).
Eptin
4

MISE À JOUR: Pour VS 2019 File Differ Plugin Permet de comparer les fichiers dans des projets distincts entrez la description de l'image ici

entrez la description de l'image ici

Vous pouvez l'installer à partir d'ici:

entrez la description de l'image ici

ANCIEN: pour VS 2017, installez https://marketplace.visualstudio.com/items?itemName=vs-publisher-457497.FileComparer2017

Le problème est que vous ne pouvez pas comparer les fichiers dans différents projets, mais vous pouvez copier les fichiers dans le même projet pour comparer ...

Diférence de fichier

Juan Pablo
la source
1
Malheureusement, cela ne fonctionne pas lorsque vous essayez de comparer deux fichiers sans solution (par exemple, lorsque vous ouvrez VS2017 en mode dossier: Ouvrir - Dossier)
Yury Kozlov
2

J'ai aussi eu ce problème. Pas de TFS, mais j'ai trouvé cet article utile .

Plus précisément, l'étape 1b.

Ouvrez une invite de commande Visual Studio et accédez au dossier Common7 / IDE et tapez

tf diff /configure
billb
la source
0

Fichier Comparer VS Extension par Akhil Mittal. Excellent outil léger qui fait le travail.

utileBee
la source
0

Pour comparer deux fichiers et les fusionner en un seul fichier Voici les étapes suivantes que vous pouvez suivre si Visual Studio (toute version) est installé.

Étape 1: ouvrez l'invite de commande Visual studio. Si vous ne trouvez pas l'invite de commande de Visual Studio, choisissez les outils de Visual Studio

Démarrer -> invite de commande Visual studio

entrez la description de l'image ici

entrez la description de l'image ici

Étape 2: entrez la commande vsdiffmerge.exe

Ignorez le commutateur / m si vous avez juste besoin d'une comparaison.

Syntaxe 1:
vsdiffmerge <file1> <file2> <file1> <outputfile> / t / m

Syntaxe 2:
vsdiffmerge <nom du fichier de base> <nom du fichier de comparaison> <nom du fichier de base> <nom du fichier de sortie> / t / m

Exemple 1:
vsdiffmerge test1.js test2.js test1.js output.js / t / m
Exemple 2:
vsdiffmerge.exe "C: \ Users \ livingston \ Downloads \ wa \ wa \ Files \ pre \ Test.js" "C : \ Users \ livingston \ Downloads \ wa \ wa \ Files \ Prod \ Test.js "" C: \ Users \ livingston \ Downloads \ wa \ wa \ Files \ pre \ Test.js "" C: \ Users \ livingston \ Téléchargements \ wa \ wa \ Files \ output \ samp.js "/ t / m

entrez la description de l'image ici


Étape 3: fusionner les fichiers

entrez la description de l'image ici Veuillez noter que si le nom de fichier n'existe pas à l'emplacement, il ne sera pas n'ouvrira le comparateur.

Vous pouvez également embellir le fichier avant de faire la comparaison. Dans Visual Studio Ctrl + K + D.

Il existe de nombreux sites d'embellissement disponibles en ligne.

George Livingston
la source
0

Le code Visual Studio est idéal pour cela - ouvrez un dossier, cliquez avec le bouton droit sur les deux fichiers et comparez.

niico
la source
0

Dans Visual Studio, le diff peut être appelé à l'aide de la commande Command WindowpuisTools.DiffFiles

  1. Ouvrir Command Windowpar raccourcis clavier Ctrl + W, Aou par menuView -> Other Windows -> Command Window
  2. Entrez la commande Tools.DiffFiles "FirstFile.cs" "SecondFile.cs"
Kiryl Khadanovich
la source
-2

Je pense que c'est l'une des meilleures extensions pour Visual Studio 2012, elle s'appelle Code Compare et peut être trouvée ici.

Opster Elasticsearch - Nathan
la source
-4

Si vous travaillez avec TFS connecté, faites un clic droit sur le fichier que vous devez comparer (via l'explorateur de contrôle de source) et il vous présente une fenêtre comme celle-ci - entrez la description de l'image ici

Maintenant, changez le chemin du fichier source dans 'Souce Path:' et vous obtenez la comparaison via l'outil de comparaison VS.

De même, vous pouvez également comparer un dossier qui compare tous les fichiers d'un dossier à la fois.

Chetan Naithani
la source
2
Si vous lisez le post original, il dit spécifiquement: "Existe-t-il un moyen de comparer deux fichiers avec une fonction intégrée dans VS mais sans TFS?" Votre réponse l'oblige à avoir TFS.
CigarDoug
bien qu'il ait tenté de répondre .. bien que sa tentative ait été mauvaise +1
Irf