Bandingkan dua file di Visual Studio

430

Saya melihat alat perbandingan di VS 2012 untuk membandingkan dua file atau dua versi file. Saya suka itu. Tetapi ketika saya mencoba menemukannya saya tidak bisa karena saya tidak menggunakan TFS. Apakah ada cara bagaimana saya bisa membandingkan dua file dengan fitur builtin di VS tetapi tanpa TFS?

Libor Zapletal
sumber
1
Sama seperti komentar untuk penggunaan lebih lanjut: Jika Anda bekerja dengan vs2015, gunakan tautan ini: visualstudio.com/en-us/docs/tfvc/compare-files
Elnaz
Catatan ini masih berlaku untuk VS 2017. Oleh karena itu, saya telah memberikan jawaban bagaimana menangani masalah ini dengan nyaman.
Matt
2
Tidak ada jawaban yang dapat membandingkan dua file yang sudah dibuka di Visual Studio.
user3454439
1
Silakan pilih fitur ini di sini: developercommunity.visualstudio.com/content/idea/619706/…
Happypig375
Di VS2017 dan VS2019, bahkan bilah alat bandingkan file terbuka, tidak tahu bagaimana menggunakannya ... Menggunakan VSCode sekarang, cukup buka dua file dan pilih keduanya dan konteks menu-> bandingkan yang dipilih.
jw_

Jawaban:

809

Anda dapat meminta devenv.exe /diff list1.txt list2.txtdari prompt perintah atau, jika instance Visual Studio sudah berjalan, Anda dapat mengetik Tools.DiffFilesdi jendela Command, dengan penyelesaian nama file yang berguna:

Menggunakan Tools.DiffFiles dari jendela Visual Studio Command

Vladimir Reshetnikov
sumber
15
Apakah alat diff ini menyediakan fitur yang berguna seperti salin ke kiri, salin ke kanan, dll? Ketika saya menyalin copy pekerjaan dengan versi server saya kadang-kadang ingin membatalkan beberapa perubahan dan harus melakukan paste copy manual.
Samuel
118
Mengapa fitur ini disembunyikan dari VS UI? Ini adalah cara termudah dan efektif untuk membandingkan dua file ...
eka808
76
Bagi Anda yang baru mengenal Visual Studio, Command Window dapat dibuka dengan masuk ke: View> Other Windows> Command Window (VS Pro 2013) atau dengan CTRL + ALT + A
Cleanshooter
35
Sayang sekali VS tidak memiliki item menu untuk fungsi yang sangat mendasar ini. banyak IDE / editor lakukan.
dewd
15
Catatan: Di Visual Studio 2015, Anda dapat menemukannya di sini: Lihat -> Toolbar -> Bandingkan File . Cukup ketik "bandingkan" ke jendela peluncuran cepat dan Anda akan menambahkannya.
Matt
84

Terinspirasi oleh jawaban yang diterima di atas, saya menemukan cara yang sangat nyaman bagaimana Anda dapat langsung membandingkan dua file dengan Visual Studio dengan menggunakan drag and drop atau melalui menu konteks "Kirim Ke" . Ini hanya membutuhkan sedikit persiapan yang perlu Anda lakukan sekali dan kemudian berguna seperti pisau tentara Swiss.

Visual Studio sudah memiliki semua yang Anda butuhkan, hanya ada beberapa langkah konfigurasi yang diperlukan untuk membuatnya bekerja:

Membandingkan file menggunakan seret & jatuhkan

Persiapan:

1. Buat file batch baru menggunakan editor teks favorit Anda. Ketikkan yang berikut ini:

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

Anda mungkin memperhatikan bahwa saya telah membalikkan %1dan %2parameter dalam batch. Ini karena saya perhatikan bahwa file explorer melewati file ke - 2 sebagai parameter pertama, kemudian file ke - 1 sebagai parameter kedua.

2. Simpan kode ini VS_FileCompare.cmduntuk menggunakannya, modifikasi vspathjika diperlukan untuk mencocokkan lokasi devenv.exe(tergantung pada versi Visual Studio yang sedang Anda gunakan, lihat catatan kaki *) )

3. Buat pintasan bernama "Pembandingan File" untuk VS_FileCompare.cmddan tempatkan itu di desktop(seperti yang digunakan dalam animasi di bawah), jadi selalu tersedia untuk menarik & melepas file ke atasnya atau langsung menempatkan file batch di desktop. Itu saja!

Pemakaian:

  1. Buka Windows explorer melalui Win+E
  2. Pilih dua file untuk dibandingkan di explorer
  3. Seret dan jatuhkan seperti yang ditunjukkan pada animasi di bawah ini: DragDropDemo

  4. Setelah beberapa detik (tergantung pada waktu peluncuran Visual Studio), hasilnya akan ditampilkan di Visual Studio: Tampilan Visual Studio

Catatan: Tidak ada salahnya jika Visual Studio sudah terbuka. Dalam hal ini, ia hanya akan membuka jendela baru dalam instance Visual Studio yang sedang berjalan. Jadi Anda dapat membandingkan beberapa pasangan file, tetapi pastikan Anda hanya memilih 2 file sekaligus.


Cara alternatif: Menu konteks SendTo

Berikut ini alternatif cara Anda dapat menggunakan file batch yang VS_FileCompare.cmddisebutkan di bagian atas. Hal ini memungkinkan untuk menggunakan folder Kirim Ke menu konteks untuk membandingkan file.

Persiapan:

  1. Buat pintasan "Compare2Files VS" untuk file batch VS_FileCompare.cmddan salin ke folder SendTo . Buka Windows explorer melalui Win+E
  2. Buka folder SendTo dengan memasukkan shell:sendtoke dalam address bar file explorer (seperti dijelaskan di sini ). Kemudian, masukkan shortcut yang sudah disiapkan ke folder ini.

Pemakaian:

  1. Buka Windows explorer melalui Win+E
  2. Pilih dua file untuk dibandingkan di explorer
  3. Dengan asumsi pintasan untuk file batch VS_FileCompare.cmdbernama "Compare2Files VS" , Anda dapat memilih dua file, klik kanan dan pilih Kirim Ke -> Compare2Files VS untuk meminta perbandingan seperti yang ditunjukkan di bawah ini: Kirim ke

  4. Setelah beberapa detik (tergantung pada waktu peluncuran Visual Studio), hasilnya akan ditampilkan di Visual Studio: Tampilan Visual Studio


Referensi MSDN:
- Penggunaan jendela diff
- Parameter Diff Visual Studio


*)  Catatan Kaki: Karena vsPath(jalur menuju DEVENV.exe) berbeda tergantung pada versi Visual Studio Anda, saya menjelaskan bagaimana Anda dapat menemukannya (Windows 10):

  1. Di menu mulai Windows Ikon Windows Kecil , cari ikon Visual Studio Ikon Visual Studio Kecil
  2. Klik kanan untuk membuka menu konteks. Pilih Lainnya> Buka Lokasi File .
    Windows Explorer terbuka dengan pintasan Visual Studio disorot.
  3. Klik kanan pada Visual Studio dan pilih Properties
  4. Dalam dialog properti, Anda dapat menemukan jalur di "Target:" VSProperties
Mat
sumber
5
Ini benar-benar jawaban yang sangat bagus dan rumit, harus dipilih. Saya dari grup yang terus mencari di luar kotak jawaban meskipun jawaban ditandai di utas jadi saya benar-benar menyerah.
Div Tiwari
1
@DivTiwari - Terima kasih, senang mendengarnya!
Matt
Sunting: Ini adalah skrip untuk VS 2013, terima kasih lagi. @echo off setlocal set vspath = C: \ Program Files (x86) \ Microsoft Visual Studio 12.0 \ Common7 \ IDE mulai "Bandingkan file" / B / MIN "% vspath% \ devenv.exe" / diff% 2% 1 Pertama: '% 2' Kedua: '% 1'
Fernando Aguilar
1
Itu luar biasa dan bekerja seperti pesona. Terima kasih banyak sobat
Sabbir Hassan
1
Bagus! up-voting ini..hanya suka sifat 'peretasan' dari solusi ini. Terima kasih sudah berbagi.
Leo Gurdian
77

Anda dapat mencoba ekstensi VSCommands dari Visual Studio Gallery . Rilis terbaru memungkinkan Anda memilih dua file dan membandingkannya:

masukkan deskripsi gambar di sini masukkan deskripsi gambar di sini

Jarek Kardas
sumber
1
Saya menginstal ekstensi, tetapi opsi ini tidak tersedia untuk saya.
PeterX
3
VSCommands 14 tidak menambahkan item pada tangkapan layar di VS 2015 Perbarui 1 Komunitas
Marek Toman
24

Saya selalu menjadi penggemar WinMerge yang merupakan proyek open source. Anda dapat mencolokkannya ke Visual Studio dengan cukup mudah.

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

akan menunjukkan kepada Anda bagaimana melakukan ini


sumber
Juga dapat melakukan diff folder - sangat kuat
Jaans
2
Satu-satunya kelemahan WinMerge adalah kemampuan terbatasnya untuk mengenali perubahan (seperti spasi putih, garis dibagi menjadi lebih banyak garis, dll)
24

Ada juga ekstensi Visual Studio yang disebut CompareFiles , yang tidak melakukan apa-apa selain menambahkan entri "Bandingkan File" ke menu konteks solusi explorer. Itu memanggil alat Visual Studio built-in diff.

Hanya dalam kasus seseorang (seperti saya) tidak ingin menginstal ekstensi all-in-one seperti VSCommands ...

Stephan
sumber
1
NB - ekstensi ini hanya untuk VS2012, tetapi Anda dapat mengedit file manifes untuk mendukung VS2013 dengan cukup mudah - lihat komentar saya pada tab Tanya Jawab pada ekstensi untuk detailnya. (Saya menginginkan fitur ini, tetapi tidak dapat menggunakan versi gratis VSCommands di tempat kerja karena lisensi itu)
James S
Alat Perbandingan Visual Studio tersedia untuk 2013, visualstudiogallery.msdn.microsoft.com/…
Diselaraskan
23

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

Tools.DiffFiles File1 File2
patrick
sumber
Ini sama dengan jawaban lain
niico
5
Mungkin - meskipun secara pribadi saya lebih suka menggunakan GUI untuk memilih file daripada tipe harus membangun dua jalur dalam hal apapun - maksud saya itu bukan 1984.
niico
18

Dalam Visual Studio 2012, 2013, 2015, Anda juga dapat melakukannya dengan Web Essentials , cukup klik kanan file dan dari menu konteks> Web Essential >> file yang dipilih Diff:

Sunting: Sekarang tersedia sebagai ekstensi terpisah

masukkan deskripsi gambar di sini

Hamid Mosalla
sumber
Saya tidak melihat file Diff yang dipilih atau Kompilasi Markdown ke HTML di Web Essential - VS 2015
bergunaBee
Saya telah menginstal versi baru untuk VS 2015tetapi saya tidak dapat melihat Diff selected filesopsi mengapa?
shaijut
@stom, instal ekstensi yang saya sebutkan.
Hamid Mosalla
16

Jika Anda sudah menginstal VS, Anda juga bisa menelepon

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

atau untuk VS 2013

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

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

Chandramouleswaran Ravichandra
sumber
Terima kasih berhasil dengan sempurna untuk saya. c: \ temp> "% VS120COMNTOOLS% .. \ IDE \ vsdiffmerge.exe" 1256.txt 1256_PROD_Original.txt
Craig B
8

Dalam Visual Studio Code Anda dapat:

  • Pergi ke Explorer
  • Klik kanan file pertama yang ingin Anda bandingkan
  • Pilih Select for compare
  • Klik kanan pada file kedua yang ingin Anda bandingkan
  • Pilih Compare with '[NAME OF THE PREVIOUSLY SELECTED FILE]'
jahller
sumber
Ini bekerja sangat baik dalam Visual Studio Code seperti yang Anda sebutkan, tetapi sayangnya tidak dalam Visual Studio Enterprise (atau Profesional).
Eptin
4

DIPERBARUI: Untuk VS 2019 Plugin Perbedaan File Izinkan untuk membandingkan file dalam proyek yang berbeda masukkan deskripsi gambar di sini

masukkan deskripsi gambar di sini

Anda dapat menginstalnya dari sini:

masukkan deskripsi gambar di sini

TUA: Untuk VS 2017 Instal https://marketplace.visualstudio.com/items?itemName=vs-publisher-457497.FileComparer2017

Masalahnya adalah Anda tidak dapat membandingkan file dalam proyects yang berbeda, tetapi Anda dapat menyalin file dalam proyek yang sama untuk membandingkan ...

Perbedaan File

Juan Pablo
sumber
1
Sayangnya, ini tidak berfungsi ketika mencoba membandingkan dua file tanpa solusi (misalnya, ketika Anda membuka VS2017 dalam mode folder: Open - Folder)
Yury Kozlov
2

Saya punya masalah ini juga. Tidak TFS, tetapi saya menemukan artikel ini bermanfaat .

Secara khusus, langkah 1b.

Buka prompt perintah Visual Studio dan arahkan ke folder Common7 / IDE dan ketik

tf diff /configure
billb
sumber
0

File Comparer VS Extension oleh Akhil Mittal. Alat ringan luar biasa yang menyelesaikan pekerjaan.

BermanfaatBee
sumber
0

Untuk membandingkan dua file dan menggabungkannya ke satu file Berikut adalah langkah-langkah berikut yang dapat Anda ikuti jika Anda memiliki studio visual (Versi apa saja) yang diinstal.

Langkah 1: Buka command prompt Visual studio. Jika Anda tidak menemukan prompt perintah visual studio maka pilih alat studio visual

Mulai -> Visual studio command prompt

masukkan deskripsi gambar di sini

masukkan deskripsi gambar di sini

Langkah 2: Masukkan perintah vsdiffmerge.exe

Abaikan sakelar / m jika Anda hanya perlu perbandingan.

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

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

Contoh 1:
vsdiffmerge test1.js test2.js test1.js output.js / t / m
Contoh 2:
vsdiffmerge.exe "C: \ Users \ livingston \ Downloads \ wa \ wa \ Files \ pra \ 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 \ Unduhan \ wa \ wa \ Files \ output \ samp.js "/ t / m

masukkan deskripsi gambar di sini


Langkah 3: Gabungkan file

masukkan deskripsi gambar di sini Harap dicatat bahwa jika nama file tidak ada di lokasi, itu tidak akan membuka pembanding.

Anda juga dapat mempercantik file sebelum melakukan perbandingan. Di studio visual Ctrl + K + D.

Ada banyak situs kecantikan yang tersedia secara online.

George Livingston
sumber
0

Kode Visual Studio sangat bagus untuk ini - buka folder, klik kanan kedua file dan bandingkan.

niico
sumber
0

Dalam Visual Studio Diff dapat dipanggil menggunakan Command Windowkemudian Tools.DiffFilesperintah

  1. Buka Command Windowdengan hotkey Ctrl + W, Aatau menuView -> Other Windows -> Command Window
  2. Masukkan perintah Tools.DiffFiles "FirstFile.cs" "SecondFile.cs"
Kiryl Khadanovich
sumber
-2

Saya percaya ini menjadi salah satu ekstensi yang lebih baik untuk Visual Studio 2012, ini disebut Code Compare dan dapat ditemukan di sini.

Opster Elasticsearch - Nathan
sumber
-4

Jika Anda bekerja dengan TFS terhubung maka klik kanan pada file yang Anda perlu membandingkan (melalui source control explorer) dan itu akan memberi Anda jendela seperti ini - masukkan deskripsi gambar di sini

Sekarang ubah path file sumber di 'Souce Path:' dan Anda mendapatkan perbandingan melalui alat perbandingan VS.

Demikian pula Anda dapat membandingkan folder juga yang membandingkan semua file folder sekaligus.

Chetan Naithani
sumber
2
Jika Anda membaca posting asli, dia secara khusus mengatakan, "Apakah ada cara bagaimana saya bisa membandingkan dua file dengan fitur builtin di VS tetapi tanpa TFS?" Jawaban Anda mengharuskannya memiliki TFS.
CigarDoug
meskipun dia berusaha menjawab .. meskipun, upayanya salah +1
Irf