Сравните два файла в Visual Studio

430

Я видел новый инструмент сравнения в VS 2012 для сравнения двух файлов или двух версий файла. Мне это нравится. Но когда я пытался найти его, я не могу, потому что я не использую TFS. Есть ли способ, как я могу просто сравнить два файла со встроенной функцией в VS, но без TFS?

Либор Заплетал
источник
1
Так же, как комментарий для дальнейшего использования: Если вы работаете с vs2015, используйте эту ссылку: visualstudio.com/en-us/docs/tfvc/compare-files
Elnaz
Обратите внимание, что это все еще применимо к VS 2017. Следовательно, я дал ответ, как решить эту проблему с комфортом.
Мэтт
2
Ни один из ответов не может сравнить два файла, уже открытых в Visual Studio.
user3454439
1
Пожалуйста, проголосуйте за эту функцию здесь: developercommunity.visualstudio.com/content/idea/619706/…
Happypig375
В VS2017 и VS2019 даже панель инструментов сравнения файлов открыта, не знаю, как ее использовать ... Используя VSCode сейчас, просто откройте два файла и выберите оба, и контекстное меню-> сравнить выбранное.
jw_

Ответы:

809

Вы можете вызвать devenv.exe /diff list1.txt list2.txtиз командной строки или, если экземпляр Visual Studio уже запущен, вы можете набрать Tools.DiffFilesв окне команд с удобным завершением имени файла:

Использование Tools.DiffFiles из командного окна Visual Studio

Владимир Решетников
источник
15
Предоставляет ли этот инструмент сравнения какие-либо полезные функции, такие как копирование слева, копирование справа и т. Д.? Когда я проверяю рабочую копию с серверной версией, я иногда хочу отменить некоторые изменения и должен выполнить ручное копирование копии.
Самуил
119
Почему эта функция скрыта от интерфейса пользователя VS? Это самый простой и эффективный способ сравнения двух файлов ...
eka808
77
Для тех из вас, кто не знаком с Visual Studio, окно командной строки можно открыть, выбрав: Вид> Другие окна> Окно командной строки (VS Pro 2013) или с помощью CTRL + ALT + A
Cleanshooter
36
такой позор VS не имеет пункта меню для этой самой основной функциональности. многие IDE / редакторы делают.
роса
15
Примечание. В Visual Studio 2015 вы можете найти его здесь: Вид -> Панели инструментов -> Сравнить файлы . Просто введите «сравнить» в окно быстрого запуска, и вы добавите его.
Мэтт
84

Вдохновленный принятым ответом выше, я нашел очень удобный способ, позволяющий мгновенно сравнивать два файла в Visual Studio с помощью перетаскивания или контекстного меню «Отправить» . Требуется лишь небольшая подготовка, которую нужно сделать один раз, а потом он полезен, как швейцарский армейский нож.

В Visual Studio уже есть все, что нужно, есть только несколько шагов настройки, необходимых для того, чтобы это работало:

Сравнение файлов с помощью перетаскивания

Подготовка:

1. Создайте новый командный файл, используя ваш любимый текстовый редактор. Введите следующее:

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

Вы могли заметить , что я отменил %1и %2параметры в пакете. Это потому, что я заметил, что файловый менеджер передает 2-й файл в качестве первого параметра, а затем 1-й файл в качестве второго параметра.

2. Сохраните этот код , как VS_FileCompare.cmdего использовать, изменять vspathпри необходимости , чтобы соответствовать расположение devenv.exe( в зависимости от визуальной версии студии вы используете, см сноску *) )

3. Либо создать ярлык с именем «File Compare» для VS_FileCompare.cmdи место это на рабочем столе(как показано в анимации ниже), поэтому всегда можно перетащить на него файлы или напрямую разместить командный файл на рабочем столе. Это все!

Применение:

  1. Откройте проводник Windows через Win+E
  2. Выберите два файла для сравнения в проводнике
  3. Перетащите их, как показано на анимации ниже: DragDropDemo

  4. Через несколько секунд (в зависимости от времени запуска Visual Studio) результаты будут показаны в Visual Studio: Visual Studio View

Примечание. Это не повредит, если Visual Studio уже открыта. В этом случае он просто откроет новое окно в работающем экземпляре Visual Studio. Таким образом, вы можете сравнить несколько пар файлов, но убедитесь, что вы выбрали только 2 файла одновременно.


Альтернативный способ: контекстное меню SendTo

Вот альтернативный способ использования командного файла, VS_FileCompare.cmdупомянутого в разделе выше. Это позволяет использовать папку «Отправить в» контекстного меню для сравнения файлов.

Приготовление:

  1. Создайте ярлык «Compare2Files VS» для командного файла VS_FileCompare.cmdи скопируйте его в папку « SendTo ». Откройте проводник Windows через Win+E
  2. Откройте папку SendTo , введя shell:sendtoв адресную строку проводника файлов (как описано здесь ). Затем поместите подготовленный ярлык в эту папку.

Применение:

  1. Откройте проводник Windows через Win+E
  2. Выберите два файла для сравнения в проводнике
  3. Предполагая, что ярлык для командного файла VS_FileCompare.cmdназывается «Compare2Files VS» , вы можете выбрать два файла, щелкнуть правой кнопкой мыши и выбрать « Отправить в -> Compare2Files VS», чтобы вызвать сравнение, как показано ниже: Отправить

  4. Через несколько секунд (в зависимости от времени запуска Visual Studio) результаты будут показаны в Visual Studio: Visual Studio View


Ссылки MSDN:
- Использование окна diff
- Параметр Diff в Visual Studio


*)  Сноска. Поскольку vsPath(путь к DEVENV.exe) зависит от вашей версии Visual Studio, я описываю, как вы можете это выяснить (Windows 10):

  1. В меню «Пуск» Windows Windows Icon Small найдите значок Visual Studio Visual Studio Icon Small
  2. Щелкните правой кнопкой мыши, чтобы вызвать контекстное меню. Выберите Дополнительно> Открыть местоположение файла .
    Проводник Windows открывается с выделенным ярлыком Visual Studio.
  3. Щелкните правой кнопкой мыши Visual Studio и выберите « Свойства».
  4. В диалоговом окне свойств вы можете найти путь в «Target:» VSProperties
Matt
источник
5
Это действительно очень хороший и продуманный ответ, определенно стоит проголосовать. Я из группы, которая продолжает искать ответ «из коробки», даже если ответ отмечен в ветке, поэтому я абсолютно точно отвечаю.
Div Tiwari
1
@DivTiwari - Спасибо, рад это слышать!
Мэтт
Изменить: Это скрипт для VS 2013, еще раз спасибо. @echo off setlocal set vspath = C: \ Program Files (x86) \ Microsoft Visual Studio 12.0 \ Common7 \ IDE запускает «Сравнить файлы» / B / MIN «% vspath% \ devenv.exe» / diff% 2% 1 Первый: «% 2» Второе: «% 1»
Фернандо Агилар
1
Это было превосходно и работало как шарм. Большое спасибо друг
Саббир Хасан
1
Ницца! голосование за это .. просто любите "хакерскую" природу этого решения. Спасибо, что поделились.
Лев Гурдиан
77

Вы можете попробовать расширение VSCommands из Visual Studio Gallery . Последний выпуск позволяет выбрать два файла и сравнить их:

введите описание изображения здесь введите описание изображения здесь

Ярек Кардас
источник
1
Я установил расширения, но эта опция для меня недоступна.
PeterX
3
VSCommands 14 не добавляют ни один из элементов на скриншоте в VS 2015 Обновление 1 Сообщество
Marek Toman
24

Я всегда был поклонником WinMerge, который является проектом с открытым исходным кодом. Вы можете подключить его в Visual Studio довольно легко.

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

покажет вам, как это сделать


источник
Также может различать папки - очень мощный
Jaans
2
Единственным недостатком WinMerge является его ограниченная возможность распознавать изменения (такие как пробелы, строки, разделенные на несколько строк и т. Д.)
24

Существует также расширение Visual Studio под названием CompareFiles , которое делает только добавление записи «Сравнить файлы» в контекстное меню обозревателя решений. Вызывает встроенный инструмент сравнения Visual Studio.

На всякий случай, если кто-то (например, я) не хочет устанавливать расширение «все в одном», например, VSCommands ...

Stephan
источник
1
Примечание: это расширение только для VS2012, но вы можете легко отредактировать файл манифеста для поддержки VS2013 - подробности см. В моем комментарии на вкладке «Вопросы и ответы» расширения. (Я хотел эту функцию, но не могу использовать бесплатную версию VSCommands на работе из-за ее лицензии)
James S
Инструменты Visual Studio Tools Сравнения доступна на 2013 год , visualstudiogallery.msdn.microsoft.com/...
унифицированный
23

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

Tools.DiffFiles File1 File2
Патрик
источник
Это так же, как другой ответ
niico
5
Возможно - хотя лично я предпочел бы использовать графический интерфейс для выбора файлов, а не тип должен в любом случае построить два пути - я имею в виду, что это не 1984.
niico
18

В Visual Studio 2012, 2013, 2015 вы также можете сделать это с помощью Web Essentials , просто щелкнув правой кнопкой мыши файлы и в контекстном меню> Web Essential >> Разблокировать выбранные файлы:

Изменить: теперь это доступно как отдельное расширение

введите описание изображения здесь

Хамид Мосалла
источник
Я не вижу выбранных файлов Diff или Markdown для HTML в Web Essential - VS 2015
полезныйBee
Я установил новую версию для, VS 2015но я не могу увидеть Diff selected filesвариант почему?
Shaijut
@stom установите расширение, которое я упомянул.
Хамид Мосалла
16

Если у вас установлена ​​VS, вы также можете позвонить

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

или для VS 2013

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

Источник: http://roadtoalm.com/2013/10/22/use-visual-studio-as-your-diff-and-merging-tool-for-local-files/

Чандрамульсваран Равичандра
источник
Спасибо отлично сработало для меня. c: \ temp> "% VS120COMNTOOLS% .. \ IDE \ vsdiffmerge.exe" 1256.txt 1256_PROD_Original.txt
Крейг Б,
8

В Visual Studio Code вы можете:

  • Перейти к Explorer
  • Щелкните правой кнопкой мыши первый файл, который вы хотите сравнить
  • Выбрать Select for compare
  • Щелкните правой кнопкой мыши второй файл, который вы хотите сравнить
  • Выбрать Compare with '[NAME OF THE PREVIOUSLY SELECTED FILE]'
jahller
источник
Это прекрасно работает в коде Visual Studio, как вы упомянули, но, к сожалению, не работает в Visual Studio Enterprise (или Professional).
Eptin
4

ОБНОВЛЕНО: Для VS 2019 File Differ Plugin Позволяет сравнивать файлы в разных проектах введите описание изображения здесь

введите описание изображения здесь

Вы можете установить его отсюда:

введите описание изображения здесь

СТАРЫЙ: для VS 2017 Установите https://marketplace.visualstudio.com/items?itemName=vs-publisher-457497.FileComparer2017

Проблема в том, что вы не можете сравнивать файлы в разных проектах, но вы можете скопировать файлы в одном проекте для сравнения ...

File Diference

Хуан Пабло
источник
1
К сожалению, это не работает при попытке сравнить два файла без решения (например, когда вы открываете VS2017 в режиме папок: Открыть - Папка)
Юрий Козлов
2

У меня тоже была эта проблема. Нет TFS, но я нашел эту статью полезной .

В частности, шаг 1b.

Откройте командную строку Visual Studio и перейдите в папку Common7 / IDE и введите

tf diff /configure
billb
источник
0

Расширение файла VS Extension от Akhil Mittal. Отличный легкий инструмент, который выполняет свою работу.

usefulBee
источник
0

Сравнение любых двух файлов и объединение их в один файл. Ниже приведены шаги, которые вы можете выполнить, если у вас установлена ​​Visual Studio (любая версия).

Шаг 1: Откройте командную строку Visual Studio. Если вы не нашли командную строку Visual Studio, выберите инструменты Visual Studio.

Пуск -> Командная строка Visual Studio

введите описание изображения здесь

введите описание изображения здесь

Шаг 2: введите команду vsdiffmerge.exe

Игнорируйте переключатель / m, если вам нужно только сравнение.

Синтаксис 1:
vsdiffmerge <файл1> <файл2> <файл1> <выходной файл> / т / м

Синтаксис 2:
vsdiffmerge <имя_файла_файла> <имя_файла сравнения> <имя_файла_файла> <имя_файла_файла> / т / м

Пример 1:
vsdiffmerge test1.js test2.js test1.js output.js / t / m
Пример 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 \ Загрузки \ wa \ wa \ Files \ output \ samp.js "/ т / м

введите описание изображения здесь


Шаг 3: объединить файлы

введите описание изображения здесь Обратите внимание, что если имя файла не существует в этом месте, он не откроет средство сравнения.

Также вы можете украсить файл, прежде чем делать сравнение. В визуальной студии Ctrl + K + D.

Есть много красивых сайтов, доступных в Интернете.

Джордж Ливингстон
источник
0

Код Visual Studio отлично подходит для этого - откройте папку, щелкните правой кнопкой мыши оба файла и сравните.

niico
источник
0

В Visual Studio Diff можно вызвать с помощью команды Command WindowзатемTools.DiffFiles

  1. Открыть с Command Windowпомощью горячих клавиш Ctrl + W, Aили по менюView -> Other Windows -> Command Window
  2. Введите команду Tools.DiffFiles "FirstFile.cs" "SecondFile.cs"
Кирилл Хаданович
источник
-2

Я считаю, что это одно из лучших расширений для Visual Studio 2012, оно называется Code Compare и может быть найдено здесь.

Opster Elasticsearch - Натан
источник
-4

Если вы работаете с подключенным TFS, щелкните правой кнопкой мыши по файлу, который нужно сравнить (через проводник управления версиями), и он покажет вам следующее окно - введите описание изображения здесь

Теперь измените путь к исходному файлу в 'Souce Path:', и вы получите сравнение с помощью инструмента сравнения VS.

Точно так же вы можете сравнить папку, которая сравнивает все файлы папки одновременно.

Четан Найтани
источник
2
Если вы читаете оригинальный пост, он специально говорит: «Есть ли способ, как я могу просто сравнить два файла со встроенной функцией в VS, но без TFS?» Ваш ответ требует, чтобы у него был TFS.
CigarDoug
хотя он пытался ответить .. хотя, его попытка была неправильно +1
IRF