เปรียบเทียบสองไฟล์ใน Visual Studio


429

ฉันเห็นเครื่องมือการรวมใหม่ใน VS 2012 สำหรับการเปรียบเทียบสองไฟล์หรือสองเวอร์ชันของไฟล์ ฉันชอบมัน. แต่เมื่อฉันพยายามค้นหาฉันไม่สามารถทำได้เพราะฉันไม่ได้ใช้ TFS มีวิธีฉันจะเปรียบเทียบสองไฟล์กับคุณสมบัติ builtin ใน 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_

คำตอบ:


808

คุณสามารถเรียกใช้devenv.exe /diff list1.txt list2.txtจากพรอมต์คำสั่งหรือหากอินสแตนซ์ Visual Studio กำลังทำงานอยู่คุณสามารถพิมพ์Tools.DiffFilesในหน้าต่างคำสั่งด้วยชื่อไฟล์ที่มีประโยชน์:

ใช้ Tools.DiffFiles จากหน้าต่างคำสั่ง Visual Studio


15
เครื่องมือ diff นี้มีคุณสมบัติที่มีประโยชน์เช่นการคัดลอกไปซ้ายคัดลอกไปขวา ฯลฯ หรือไม่ เมื่อฉันทำสำเนาการทำงานกับรุ่นเซิร์ฟเวอร์ต่าง ๆ บางครั้งฉันต้องการยกเลิกการเปลี่ยนแปลงบางอย่างและต้องทำสำเนาด้วยตนเอง
ซามูเอล

118
เหตุใดคุณสมบัตินี้จึงซ่อนอยู่จาก VS UI นี่เป็นวิธีที่ง่ายและมีประสิทธิภาพในการเปรียบเทียบสองไฟล์ ...
eka808

76
สำหรับผู้ที่ยังใหม่กับ Visual Studio คุณสามารถเปิดหน้าต่างคำสั่งได้โดยไปที่: ดู> Windows อื่น ๆ > หน้าต่างคำสั่ง (VS Pro 2013) หรือด้วย CTRL + ALT + A
Cleanshooter

35
ความอัปยศเช่นนี้ไม่มีรายการเมนูสำหรับฟังก์ชันการทำงานพื้นฐานนี้ 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ในชุด นี่เป็นเพราะฉันสังเกตเห็นว่า file explorer ส่งผ่านไฟล์ที่ 2เป็นพารามิเตอร์แรกจากนั้นไฟล์ที่ 1เป็นพารามิเตอร์ที่สอง

2. บันทึกรหัสนี้เป็นVS_FileCompare.cmdที่จะใช้มันปรับเปลี่ยนvspathถ้าจำเป็นต้องใช้เพื่อให้ตรงกับสถานที่ตั้งของdevenv.exe(ขึ้นอยู่กับรุ่นของ Visual Studioคุณกำลังใช้อยู่ในขณะนี้ดูเชิงอรรถ*) )

3. ทั้งสร้างทางลัดชื่อ"แฟ้มเปรียบเทียบ"สำหรับVS_FileCompare.cmdสถานที่ บนเดสก์ท็อป(ตามที่ใช้ในภาพเคลื่อนไหวด้านล่าง) ดังนั้นจึงสามารถลากและวางไฟล์ได้ตลอดเวลาหรือวางไฟล์แบตช์ไว้บนเดสก์ท็อปโดยตรง นั่นคือทั้งหมด!

การใช้งาน:

  1. เปิดWindows explorerผ่านทางWin+E
  2. เลือกสองไฟล์เพื่อเปรียบเทียบใน explorer
  3. ลากแล้วปล่อยตามที่แสดงในภาพเคลื่อนไหวด้านล่าง: DragDropDemo

  4. หลังจากนั้นไม่กี่วินาที (ขึ้นอยู่กับเวลาเปิดตัวของ Visual Studio) ผลลัพธ์จะปรากฏใน Visual Studio: Visual Studio View

หมายเหตุ:ไม่เป็นอันตรายหาก Visual Studio เปิดอยู่ ในกรณีนี้มันจะเปิดหน้าต่างใหม่ภายในอินสแตนซ์ที่กำลังทำงานของ Visual Studio เพื่อให้คุณสามารถเปรียบเทียบไฟล์หลายคู่ได้ แต่โปรดให้แน่ใจว่าคุณได้เลือกไฟล์เพียง 2 ไฟล์ในแต่ละครั้ง


ทางเลือกอื่น: เมนูบริบท SendTo

ต่อไปนี้เป็นอีกวิธีการใช้แบตช์ไฟล์ที่VS_FileCompare.cmdกล่าวถึงในส่วนด้านบน อนุญาตให้ใช้โฟลเดอร์ Send To ของเมนูบริบทเพื่อเปรียบเทียบไฟล์

เตรียม:

  1. สร้างทางลัด"Compare2Files VS"สำหรับไฟล์แบตช์VS_FileCompare.cmdและคัดลอกลงในโฟลเดอร์SendTo เปิดWindows explorerผ่านทางWin+E
  2. เปิดโฟลเดอร์SendToโดยป้อน shell:sendtoลงในแถบที่อยู่ของ explorer ของไฟล์ (ดังอธิบายไว้ที่นี่ ) จากนั้นใส่ทางลัดที่เตรียมไว้ลงในโฟลเดอร์นี้

การใช้งาน:

  1. เปิดWindows explorerผ่านทางWin+E
  2. เลือกสองไฟล์เพื่อเปรียบเทียบใน explorer
  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 ไอคอนเล็ก
  2. คลิกขวาเพื่อแสดงเมนูบริบท เลือกเพิ่มเติม> เปิดแฟ้มสถานที่ตั้ง
    Windows Explorer จะเปิดขึ้นพร้อมกับทางลัด Visual Studio
  3. คลิกขวาที่ Visual Studio แล้วเลือกProperties
  4. ในกล่องโต้ตอบคุณสมบัติคุณสามารถค้นหาเส้นทางใน"เป้าหมาย:" VSProperties

5
นี่เป็นคำตอบที่ดีและมีรายละเอียดมากควรได้รับการโหวตอย่างแน่นอน ฉันมาจากกลุ่มที่คอยมองหาคำตอบนอกกรอบแม้ว่าคำตอบจะถูกทำเครื่องหมายไว้ในเธรดดังนั้นฉันจึงพยายามอย่างเต็มที่
Div Tiwari

1
@DivTiwari - ขอบคุณดีใจที่ได้ยินเช่นนั้น!
Matt

แก้ไข: นี่คือสคริปต์สำหรับ VS 2013 ขอบคุณอีกครั้ง @echo off setlocal set vspath = ไฟล์ C: \ Program (x86) \ Microsoft Visual Studio 12.0 \ Common7 \ IDE เริ่ม "เปรียบเทียบไฟล์" / B / MIN "% vspath% \ devenv.exe" / diff% 2% 1 ก่อน: '% 2' ที่สอง: '% 1'
เฟอร์นันโดอากีลาร์

1
นั่นยอดเยี่ยมและทำงานเหมือนมีเสน่ห์ ขอบคุณมากเพื่อน
Sabbir Hassan

1
ดี! โหวตขึ้นแบบนี้ .. แค่ชอบธรรมชาติ 'แฮ็ค' ของวิธีนี้ ขอบคุณสำหรับการแบ่งปัน
Leo Gurdian

77

คุณสามารถลองขยาย VSCommands จาก Visual Studio แกลลอรี่ รุ่นล่าสุดช่วยให้คุณสามารถเลือกสองไฟล์และเปรียบเทียบ:

ป้อนคำอธิบายรูปภาพที่นี่ ป้อนคำอธิบายรูปภาพที่นี่


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/

จะแสดงวิธีการทำเช่นนี้


สามารถ
กระจาย

2
ข้อเสียเพียงอย่างเดียวของ WinMerge คือ ablitiy ที่ จำกัด ในการรับรู้การเปลี่ยนแปลง (เช่นช่องว่าง, เส้นแบ่งออกเป็นอีกหลายบรรทัด)

24

นอกจากนี้ยังมีส่วนขยายของ Visual Studio ชื่อCompareFilesซึ่งไม่ทำอะไรอื่นนอกจากเพิ่มรายการ "เปรียบเทียบไฟล์" ลงในเมนูบริบทของ Explorer มันเรียกใช้เครื่องมือ diff Studio ในตัว

ในกรณีที่บางคน (เช่นฉัน) ไม่ต้องการติดตั้งส่วนขยาย all-in-one อย่าง VSCommands ...


1
NB - ส่วนขยายนี้ใช้สำหรับ VS2012 เท่านั้น แต่คุณสามารถแก้ไขไฟล์รายการเพื่อรองรับ VS2013 ได้ง่ายพอ - ดูความคิดเห็นของฉันในแท็บคำถาม & คำตอบของส่วนขยายสำหรับรายละเอียด (ผมอยากคุณลักษณะนี้ แต่ไม่สามารถใช้รุ่นฟรีของ VSCommands ที่ทำงานเนื่องจากใบอนุญาตของมัน)
เจมส์ S

เครื่องมือการเปรียบเทียบ Visual Studio พร้อมใช้งานสำหรับ 2013, visualstudiogallery.msdn.microsoft.com/…
จัดชิด

23

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

Tools.DiffFiles File1 File2

นี่เป็นคำตอบเดียวกับอีกคำตอบ
niico

5
บางที - แม้ว่าโดยส่วนตัวแล้วฉันควรใช้ GUI เพื่อเลือกไฟล์มากกว่าประเภทต้องสร้างสองเส้นทางในทุกกรณี - ฉันหมายความว่าไม่ใช่ 1984
niico

18

ใน Visual Studio 2012, 2013, 2015 คุณสามารถทำได้ด้วยWeb Essentialsเพียงคลิกขวาที่ไฟล์และจากเมนูบริบท> Web Essential >> Diff ไฟล์ที่เลือก:

แก้ไข:ตอนนี้ใช้ได้เป็นส่วนขยายแยกต่างหาก

ป้อนคำอธิบายรูปภาพที่นี่


ฉันไม่เห็น Diff ไฟล์ที่เลือกหรือ Compile Markdown เป็น HTML ใน Web Essential - VS 2015
UsefulBee

ฉันติดตั้งเวอร์ชั่นใหม่แล้ว VS 2015แต่ฉันไม่เห็นDiff selected filesตัวเลือกว่าทำไม
shaijut

@stom ติดตั้งส่วนขยายที่ฉันพูดถึง
ฮามิด Mosalla

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
Craig B

8

ในVisual Studio Codeคุณสามารถ:

  • ไปที่ Explorer
  • คลิกขวาที่ไฟล์แรกที่คุณต้องการเปรียบเทียบ
  • เลือก Select for compare
  • คลิกขวาที่ไฟล์ที่สองที่คุณต้องการเปรียบเทียบ
  • เลือก Compare with '[NAME OF THE PREVIOUSLY SELECTED FILE]'

วิธีนี้ใช้งานได้ดีใน Visual Studio Code อย่างที่คุณพูดถึง แต่น่าเสียดายที่ไม่ได้อยู่ใน Visual Studio Enterprise (หรือ Professional)
Eptin


4

ปรับปรุง: สำหรับ VS 2019 ไฟล์ต่างปลั๊กอินอนุญาตให้เปรียบเทียบไฟล์ใน proyects ที่แตกต่างกัน ป้อนคำอธิบายรูปภาพที่นี่

ป้อนคำอธิบายรูปภาพที่นี่

คุณสามารถติดตั้งได้จากที่นี่:

ป้อนคำอธิบายรูปภาพที่นี่

OLD: สำหรับ VS 2017 ติดตั้ง https://marketplace.visualstudio.com/items?itemName=vs-publisher-457497.FileComparer2017

ปัญหาคือคุณไม่สามารถเปรียบเทียบไฟล์ในรูปแบบที่แตกต่างกัน แต่คุณสามารถคัดลอกไฟล์ในโครงการเดียวกันเพื่อเปรียบเทียบ ...

ความแตกต่างของไฟล์


1
น่าเสียดายที่สิ่งนี้ไม่ทำงานเมื่อพยายามเปรียบเทียบสองไฟล์โดยไม่มีวิธีแก้ปัญหา (ตัวอย่างเช่นเมื่อคุณเปิด VS2017 ในโหมดโฟลเดอร์: เปิด - โฟลเดอร์)
Yury Kozlov

2

ฉันมีปัญหานี้เช่นกัน ไม่มี TFS แต่ฉันพบบทความนี้เป็นประโยชน์

โดยเฉพาะขั้นตอนที่ 1b

เปิดพรอมต์คำสั่ง Visual Studio และไปที่โฟลเดอร์ Common7 / IDE และประเภท

tf diff /configure

0

ไฟล์ Comparer VS นามสกุลโดย Akhil Mittal เครื่องมือน้ำหนักเบาที่ยอดเยี่ยมที่ทำให้งานเสร็จ


0

ในการเปรียบเทียบไฟล์สองไฟล์และรวมเป็นไฟล์เดียวนี่คือขั้นตอนต่อไปนี้คุณสามารถติดตามได้หากคุณติดตั้ง visual Studio (ทุกเวอร์ชัน)

ขั้นตอนที่ 1:พร้อมรับคำสั่งเปิด Visual Studio หากคุณไม่พบพรอมต์คำสั่ง visual studio ให้เลือกเครื่องมือ visual studio

เริ่ม -> พรอมต์คำสั่ง Visual Studio

ป้อนคำอธิบายรูปภาพที่นี่

ป้อนคำอธิบายรูปภาพที่นี่

ขั้นตอนที่ 2:ป้อนคำสั่ง vsdiffmerge.exe

ละเว้นสวิตช์ / m หากคุณต้องการเปรียบเทียบ

ไวยากรณ์ 1:
vsdiffmerge <file1> <file2> <file1> <outputfile> / t / m

ไวยากรณ์ 2:
vsdiffmerge <basefilename> <CompareFilename> <basefilename> <OutputFilename> / t / m

ตัวอย่างที่ 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 "/ t / m

ป้อนคำอธิบายรูปภาพที่นี่


ขั้นตอนที่ 3:รวมไฟล์

ป้อนคำอธิบายรูปภาพที่นี่ โปรดทราบว่าหากไม่มีชื่อไฟล์ในตำแหน่งดังกล่าวจะไม่เปิดตัวเปรียบเทียบ

นอกจากนี้คุณสามารถตกแต่งไฟล์ก่อนที่จะทำการเปรียบเทียบ ใน visual studio Ctrl + K + D

มีไซต์ beautifier จำนวนมากที่พร้อมใช้งานออนไลน์


0

รหัส Visual Studio นั้นยอดเยี่ยมสำหรับเรื่องนี้ - เปิดโฟลเดอร์คลิกขวาที่ไฟล์และเปรียบเทียบ


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"


-4

หากคุณกำลังทำงานกับการเชื่อมต่อ TFS จากนั้นคลิกขวาที่ไฟล์ที่คุณต้องการเปรียบเทียบ (ผ่าน explorer การควบคุมแหล่งที่มา) และมันจะแสดงหน้าต่างเช่นนี้ - ป้อนคำอธิบายรูปภาพที่นี่

ตอนนี้เปลี่ยนเส้นทางของไฟล์ต้นฉบับใน 'Souce Path:' และคุณจะได้รับการเปรียบเทียบผ่านเครื่องมือเปรียบเทียบ VS

ในทำนองเดียวกันคุณสามารถเปรียบเทียบโฟลเดอร์ซึ่งจะทำการเปรียบเทียบไฟล์ทั้งหมดของโฟลเดอร์ได้ในคราวเดียว


2
ถ้าคุณอ่านโพสต์ต้นฉบับเขาบอกว่า "มีวิธีที่ฉันจะเปรียบเทียบสองไฟล์กับฟีเจอร์ builtin ใน VS แต่ไม่มี TFS หรือไม่?" คำตอบของคุณต้องการให้เขามี TFS
CigarDoug

แม้ว่าเขาพยายามที่จะตอบ .. แม้ว่าความพยายามของเขาผิด +1
Irf
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.