Porównaj dwa pliki w Visual Studio


429

W VS 2012 widziałem nowe narzędzie do porównywania dwóch plików lub dwóch wersji pliku. Lubię to. Ale kiedy próbowałem go znaleźć, nie mogę, bo nie używam TFS. Czy istnieje sposób, w jaki sposób mogę po prostu porównać dwa pliki z wbudowaną funkcją VS, ale bez TFS?


1
Podobnie jak komentarz do dalszego użytku: Jeśli pracujesz z vs2015, użyj tego linku: visualstudio.com/en-us/docs/tfvc/compare-files
Elnaz

Uwaga: nadal dotyczy to VS 2017. W związku z tym podałem odpowiedź, jak wygodnie poradzić sobie z tym problemem.
Matt

2
Żadna z odpowiedzi nie może porównać dwóch plików już otwartych w Visual Studio.
user3454439


W VS2017 i VS2019 nawet pasek narzędzi porównywania plików jest otwarty, nie wiem, jak go używać ... Używając teraz VSCode, po prostu otwórz oba pliki i wybierz oba oraz menu kontekstowe-> porównaj wybrane.
jw_

Odpowiedzi:


808

Możesz wywoływać devenv.exe /diff list1.txt list2.txtz wiersza polecenia lub, jeśli instancja programu Visual Studio jest już uruchomiona, możesz wpisać Tools.DiffFilesw oknie poleceń, używając wygodnego uzupełnienia nazwy pliku:

Korzystanie z narzędzi.DiffFiles z okna polecenia Visual Studio


15
Czy to narzędzie porównywania udostępnia jakąkolwiek przydatną funkcję, taką jak kopiowanie w lewo, kopiowanie w prawo itp.? Kiedy różnicuję kopię roboczą z wersją serwerową, czasami chcę cofnąć niektóre zmiany i muszę ręcznie wkleić kopię.
Samuel

118
Dlaczego ta funkcja jest ukryta w interfejsie VS? Jest to najłatwiejszy i najskuteczniejszy sposób porównywania dwóch plików ...
eka808

76
Dla tych, którzy są nowicjuszami w Visual Studio, okno poleceń można otworzyć, przechodząc do: Widok> Inne okna> Okno poleceń (VS Pro 2013) lub CTRL + ALT + A
Cleanshooter

35
taka szkoda, że ​​VS nie ma pozycji menu dla tej bardzo podstawowej funkcjonalności. robi to wiele IDE / redaktorów.
dewd

15
Uwaga: W programie Visual Studio 2015 można go znaleźć tutaj: Widok -> Paski narzędzi -> Porównaj pliki . Po prostu wpisz „porównaj” w oknie szybkiego uruchamiania, a zostanie ono dodane.
Matt

84

Zainspirowany powyższą odpowiedzią znalazłem bardzo wygodny sposób na natychmiastowe porównanie dwóch plików za pomocą programu Visual Studio za pomocą przeciągania i upuszczania lub za pomocą menu kontekstowego „Wyślij do” . Wymaga tylko niewielkiego przygotowania, które musisz zrobić raz, a potem jest użyteczny jak szwajcarski scyzoryk.

Program Visual Studio ma już wszystko, czego potrzebujesz, tylko niektóre kroki konfiguracji są wymagane, aby to działało:

Porównywanie plików za pomocą przeciągania i upuszczania

Przygotowanie:

1. Utwórz nowy plik wsadowy za pomocą ulubionego edytora tekstu. Wpisz następujące polecenie:

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

Możesz zauważyć, że odwróciłem parametry %1i %2w partii. Jest tak, ponieważ zauważyłem, że eksplorator plików przekazuje drugi plik jako pierwszy parametr, a następnie pierwszy plik jako drugi parametr.

2. Zapisz ten kod, jak VS_FileCompare.cmdgo używać, modyfikować vspathw razie potrzeby dopasować położenie devenv.exe(w zależności od wersji Visual Studio aktualnie używany, patrz przypis *) )

3. Albo utworzyć skrót o nazwie „File Porównaj” za VS_FileCompare.cmdi miejsce to na pulpicie(jak w poniższej animacji), więc zawsze jest możliwe przeciąganie i upuszczanie na niego plików lub bezpośrednie umieszczanie pliku wsadowego na pulpicie. To wszystko!

Stosowanie:

  1. Otwórz Eksploratora Windows za pomocą Win+E
  2. Wybierz dwa pliki do porównania w eksploratorze
  3. Przeciągnij i upuść je, jak pokazano na poniższej animacji: DragDropDemo

  4. Po kilku sekundach (w zależności od czasu uruchomienia programu Visual Studio) wyniki zostaną wyświetlone w programie Visual Studio: Widok programu Visual Studio

Uwaga: Nie szkodzi, jeśli program Visual Studio jest już otwarty. W takim przypadku po prostu otworzy się nowe okno w działającej instancji programu Visual Studio. Możesz więc porównać wiele par plików, ale upewnij się, że wybrałeś tylko 2 pliki na raz.


Alternatywny sposób: menu kontekstowe SendTo

Oto alternatywna metoda użycia pliku wsadowego VS_FileCompare.cmdwspomnianego w powyższej sekcji. Pozwala na użycie folderu Send To w menu kontekstowym do porównania plików.

Przygotowanie:

  1. Utwórz skrót „Compare2Files VS” dla pliku wsadowego VS_FileCompare.cmdi skopiuj go do folderu SendTo . Otwórz Eksploratora Windows za pomocą Win+E
  2. Otwórz folder SendTo , wchodząc shell:sendtow pasek adresu eksploratora plików (jak opisano tutaj ). Następnie umieść przygotowany skrót w tym folderze.

Stosowanie:

  1. Otwórz Eksploratora Windows za pomocą Win+E
  2. Wybierz dwa pliki do porównania w eksploratorze
  3. Zakładając, że skrót do pliku wsadowego VS_FileCompare.cmdnosi nazwę „Compare2Files VS” , możesz wybrać dwa pliki, kliknąć prawym przyciskiem myszy i wybrać Wyślij do -> Compare2Files VS, aby wywołać porównanie, jak pokazano poniżej: Wysłać do

  4. Po kilku sekundach (w zależności od czasu uruchomienia programu Visual Studio) wyniki zostaną wyświetlone w programie Visual Studio: Widok programu Visual Studio


Odniesienia MSDN:
- Wykorzystanie okna różnic
- Parametr różnicy Visual Studio


*)  Przypis: Ponieważ vsPath(ścieżka do DEVENV.exe) różni się w zależności od wersji programu Visual Studio, opisuję, jak można to znaleźć (Windows 10):

  1. W menu Start systemu Windows Mała ikona systemu Windows zlokalizuj ikonę Visual Studio Mała ikona programu Visual Studio
  2. Kliknij prawym przyciskiem myszy, aby wyświetlić menu kontekstowe. Wybierz Więcej> Otwórz lokalizację pliku .
    Eksplorator Windows zostanie otwarty z wyróżnionym skrótem Visual Studio.
  3. Kliknij prawym przyciskiem myszy Visual Studio i wybierz Właściwości
  4. W oknie dialogowym właściwości można znaleźć ścieżkę w „Cel:” VSProperties

5
To naprawdę bardzo dobra i dopracowana odpowiedź, zdecydowanie należy głosować. Jestem z grupy, która wciąż szuka nieszablonowej odpowiedzi, nawet jeśli odpowiedź jest zaznaczona w wątku, więc absolutnie daję jej głowę.
Div Tiwari

1
@DivTiwari - Dziękuję, miło to słyszeć!
Matt

Edycja: To jest skrypt dla VS 2013, jeszcze raz dziękuję. @echo setlocal set vspath = C: \ Program Files (x86) \ Microsoft Visual Studio 12.0 \ Common7 \ IDE start „Porównaj pliki” / B / MIN „% vspath% \ devenv.exe” / diff% 2% 1 Najpierw: '% 2' Drugi: '% 1'
Fernando Aguilar

1
To było wspaniałe i działało jak urok.
Wielkie

1
Miły! głosowanie za tym .. po prostu uwielbiam „hackerski” charakter tego rozwiązania. Dziękujemy za udostępnienie.
Leo Gurdian



24

Istnieje również rozszerzenie programu Visual Studio o nazwie CompareFiles , które nie robi nic poza dodaniem pozycji „Porównaj pliki” do menu kontekstowego eksploratora rozwiązań. Wywołuje wbudowane narzędzie do różnicowania programu Visual Studio.

Na wypadek, gdyby ktoś (jak ja) nie chciał instalować rozszerzenia typu wszystko w jednym, takiego jak VSCommands ...


1
Uwaga - to rozszerzenie jest tylko dla VS2012, ale możesz łatwo edytować plik manifestu, aby obsługiwać VS2013 - szczegółowe informacje można znaleźć w moim komentarzu na karcie Pytania i odpowiedzi rozszerzenia. (Chciałem tej funkcji, ale nie mogę korzystać z bezpłatnej wersji VSCommands w pracy z powodu jej licencji)
James S

Narzędzia porównawcze programu Visual Studio są dostępne w 2013 r., Visualstudiogallery.msdn.microsoft.com/…
Wyrównany

23

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

Tools.DiffFiles File1 File2

To jest to samo, co inna odpowiedź
niico

5
Może - choć osobiście wolę użyć GUI do wybrania plików niż typ, w każdym razie muszę zbudować dwie ścieżki - mam na myśli, że to nie jest 1984 rok.
niico

18

W programie Visual Studio 2012, 2013, 2015 można to również zrobić za pomocą programu Web Essentials , wystarczy kliknąć pliki prawym przyciskiem myszy iz menu kontekstowego> Web Essential >> Wybrać wybrane pliki:

Edycja: jest teraz dostępny jako osobne rozszerzenie

wprowadź opis zdjęcia tutaj


Nie widzę wybranych plików Diff ani Kompiluj Markdown do HTML w Web Essential - VS 2015
użyteczne,

Zainstalowałem nową wersję, VS 2015ale nie widzę Diff selected filesopcji dlaczego?
shaijut

@stom zainstaluj wspomniane rozszerzenie.
Hamid Mosalla


8

W Visual Studio Code możesz:

  • Idź do Explorer
  • Kliknij prawym przyciskiem myszy pierwszy plik, który chcesz porównać
  • Wybierz Select for compare
  • Kliknij prawym przyciskiem myszy drugi plik, który chcesz porównać
  • Wybierz Compare with '[NAME OF THE PREVIOUSLY SELECTED FILE]'

Działa to wspaniale w Visual Studio Code, jak wspomniano, ale niestety nie działa w Visual Studio Enterprise (ani Professional).
Eptin


4

ZAKTUALIZOWANO: Dla wtyczki różnicującej pliki VS 2019 Pozwala porównywać pliki w różnych aspektach wprowadź opis zdjęcia tutaj

wprowadź opis zdjęcia tutaj

Możesz go zainstalować tutaj:

wprowadź opis zdjęcia tutaj

STARY: W przypadku VS 2017 zainstaluj https://marketplace.visualstudio.com/items?itemName=vs-publisher-457497.FileComparer2017

Problem polega na tym, że nie można porównywać plików w różnych celach, ale można skopiować pliki w tym samym projekcie, aby porównać ...

Różnica plików


1
Niestety, to nie działa, gdy próbujesz porównać dwa pliki bez rozwiązania (na przykład, gdy otwierasz VS2017 w trybie folderów: Otwórz - Folder)
Yury Kozlov

2

Też miałem ten problem. Bez TFS, ale ja ten artykuł był pomocny .

W szczególności krok 1b.

Otwórz wiersz polecenia programu Visual Studio i przejdź do folderu Common7 / IDE i wpisz

tf diff /configure

0

File Comparer VS Extension autor: Akhil Mittal. Doskonałe lekkie narzędzie, które wykona zadanie.


0

Aby porównać dowolne dwa pliki i połączyć je w jeden plik. Poniżej znajdują się kroki, które można wykonać, jeśli masz zainstalowane studio graficzne (dowolna wersja).

Krok 1: Otwórz wiersz polecenia programu Visual studio. Jeśli nie znajdziesz wiersza polecenia programu Visual Studio, wybierz narzędzia Visual Studio

Start -> wiersz polecenia programu Visual Studio

wprowadź opis zdjęcia tutaj

wprowadź opis zdjęcia tutaj

Krok 2: Wprowadź polecenie vsdiffmerge.exe

Zignoruj ​​przełącznik / m, jeśli potrzebujesz tylko porównania.

Składnia 1:
vsdiffmerge <plik1> <plik2> <plik1> <plik wyjściowy> / t / m

Składnia 2:
vsdiffmerge <nazwa pliku bazowego> <nazwa pliku bazowego> <nazwa pliku bazowego> <nazwa pliku wyjściowego> / t / m

Przykład 1:
vsdiffmerge test1.js test2.js test1.js output.js / t / m
Przykład 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 \ Pobieranie \ wa \ wa \ Files \ output \ samp.js "/ t / m

wprowadź opis zdjęcia tutaj


Krok 3: Scal pliki

wprowadź opis zdjęcia tutaj Pamiętaj, że jeśli nazwa pliku nie istnieje w lokalizacji, nie otworzy się moduł porównujący.

Możesz także upiększyć plik przed wykonaniem porównania. W studiu wizualnym Ctrl + K + D.

Istnieje wiele witryn upiększających dostępnych online.


0

Kod Visual Studio jest do tego świetny - otwórz folder, kliknij oba pliki prawym przyciskiem myszy i porównaj.


0

W Visual Studio Różnicę można wywołać za pomocą, Command Windowa następnie Tools.DiffFilespolecenia

  1. Otwórz za Command Windowpomocą klawiszy skrótu Ctrl + W, Alub menuView -> Other Windows -> Command Window
  2. Wpisz polecenie Tools.DiffFiles "FirstFile.cs" "SecondFile.cs"


-4

Jeśli pracujesz z podłączonym TFS, kliknij prawym przyciskiem myszy plik, który chcesz porównać (za pomocą eksploratora kontroli źródła), a wyświetli się takie okno - wprowadź opis zdjęcia tutaj

Teraz zmień ścieżkę do pliku źródłowego w „Souce Path:” i uzyskasz porównanie za pomocą narzędzia VS VS.

Podobnie możesz porównać folder, który porównuje jednocześnie wszystkie pliki folderu.


2
Jeśli czytasz oryginalny post, mówi on konkretnie: „Czy istnieje sposób, w jaki mogę po prostu porównać dwa pliki z wbudowaną funkcją VS, ale bez TFS?” Twoja odpowiedź wymaga od niego posiadania TFS.
CigarDoug

chociaż próbował odpowiedzieć ... chociaż jego próba była błędna +1
Irf
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.