So sánh hai tệp trong Visual Studio


426

Tôi đã thấy công cụ biên dịch mới trong VS 2012 để so sánh hai tệp hoặc hai phiên bản của tệp. Tôi thích nó. Nhưng khi tôi cố gắng tìm nó thì tôi không thể vì tôi không sử dụng TFS. Có cách nào để tôi có thể so sánh hai tệp với tính năng dựng sẵn trong VS nhưng không có TFS không?


1
Cũng giống như lời nhận xét để sử dụng tiếp: Nếu bạn đang làm việc với vs2015, sử dụng liên kết này: visualstudio.com/en-us/docs/tfvc/compare-files
Elnaz

Lưu ý điều này vẫn có thể áp dụng cho VS 2017. Do đó, tôi đã cung cấp câu trả lời làm thế nào để giải quyết vấn đề này một cách thoải mái.
Matt

2
Không có câu trả lời nào có thể so sánh hai tệp đã được mở trong Visual Studio.
dùng3454439

1
Vui lòng bỏ phiếu cho tính năng này tại đây: Developercommunity.visualstudio.com/content/idea/619706/iêu
Happypig375

Trong VS2017 và VS2019, ngay cả thanh công cụ tệp so sánh cũng mở, không biết cách sử dụng ... Sử dụng VSCode ngay bây giờ, chỉ cần mở hai tệp và chọn cả hai và menu ngữ cảnh-> so sánh đã chọn.
jw_

Câu trả lời:


808

Bạn có thể gọi devenv.exe /diff list1.txt list2.txttừ dấu nhắc lệnh hoặc, nếu một phiên bản Visual Studio đang chạy, bạn có thể nhập Tools.DiffFilesvào cửa sổ Lệnh, với việc hoàn thành tên tệp tiện dụng:

Sử dụng Tools.DiffFiles từ cửa sổ Visual Studio Command


15
Công cụ tìm khác này có cung cấp bất kỳ tính năng hữu ích nào như sao chép sang trái, sao chép sang phải, v.v. không? Khi tôi khác bản sao làm việc với phiên bản máy chủ, đôi khi tôi muốn hoàn tác một số thay đổi và phải thực hiện dán sao chép thủ công.
Samuel

118
Tại sao tính năng này bị ẩn khỏi giao diện người dùng VS? Đây là cách dễ nhất và hiệu quả để so sánh hai tệp ...
eka808

76
Đối với những người mới sử dụng Visual Studio, Cửa sổ lệnh có thể được mở bằng cách truy cập: Xem> Windows khác> Cửa sổ lệnh (VS Pro 2013) hoặc với CTRL + ALT + A
Cleanshooter

35
thật xấu hổ VS không có một mục menu cho chức năng rất cơ bản này. nhiều IDE / biên tập viên làm.
sương

14
Lưu ý: Trong Visual Studio 2015, bạn có thể tìm thấy nó ở đây: Xem -> Thanh công cụ -> So sánh tệp . Chỉ cần nhập "so sánh" vào cửa sổ khởi chạy nhanh và bạn sẽ được thêm nó.
Matt

84

Lấy cảm hứng từ câu trả lời được chấp nhận ở trên, tôi đã tìm thấy một cách rất thoải mái khi bạn có thể so sánh ngay lập tức hai tệp với Visual Studio bằng cách sử dụng kéo và thả hoặc thông qua menu ngữ cảnh "Gửi đến" . Nó chỉ đòi hỏi một chút chuẩn bị mà bạn cần phải làm một lần và sau đó nó hữu ích như một con dao quân đội Thụy Sĩ.

Visual Studio đã có mọi thứ bạn cần, chỉ có một số bước cấu hình cần thiết để thực hiện việc này:

So sánh tệp bằng cách sử dụng kéo và thả

Chuẩn bị:

1. Tạo một tệp bó mới bằng trình soạn thảo văn bản yêu thích của bạn. Gõ như sau:

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

Bạn có thể nhận thấy rằng tôi đã đảo ngược các tham số %1%2tham số trong lô. Điều này là do tôi nhận thấy rằng trình thám hiểm tệp vượt qua tệp thứ 2 làm tham số đầu tiên, sau đó tệp thứ 1 làm tham số thứ hai.

2. Lưu mã này VS_FileCompare.cmdđể sử dụng nó, sửa đổi vspathnếu cần để khớp với vị trí của devenv.exe(tùy thuộc vào phiên bản Visual Studio bạn đang sử dụng, xem chú thích *) )

3. Hoặc tạo một lối tắt có tên "So sánh tệp" cho VS_FileCompare.cmdvà đặt nó trên máy tính để bàn(như được sử dụng trong hình động bên dưới), do đó, luôn có sẵn để kéo và thả tệp vào nó hoặc đặt trực tiếp tệp bó trên màn hình. Đó là tất cả!

Sử dụng:

  1. Mở Windows explorer qua Win+E
  2. Chọn hai tệp để so sánh trong trình thám hiểm
  3. Kéo và thả chúng như hiển thị trong hình động dưới đây: DragDropDemo

  4. Sau vài giây (tùy thuộc vào thời gian ra mắt của Visual Studio), kết quả sẽ được hiển thị trong Visual Studio: Chế độ xem hình ảnh

Lưu ý: Sẽ không có hại nếu Visual Studio đã mở. Trong trường hợp này, nó sẽ chỉ mở ra một cửa sổ mới trong phiên bản đang chạy của Visual Studio. Vì vậy, bạn có thể so sánh nhiều cặp tệp, nhưng vui lòng đảm bảo rằng bạn chỉ chọn 2 tệp cùng một lúc.


Cách khác: Trình đơn ngữ cảnh SendTo

Đây là một cách thay thế để bạn có thể sử dụng tệp bó VS_FileCompare.cmdđược đề cập trong phần trên. Nó cho phép sử dụng thư mục Send To của menu ngữ cảnh để so sánh các tập tin.

Sự chuẩn bị:

  1. Tạo một lối tắt "So sánh2Files VS" cho tệp bó VS_FileCompare.cmdvà sao chép nó vào thư mục SendTo . Mở Windows explorer qua Win+E
  2. Mở thư mục SendTo bằng cách nhập shell:sendtovào thanh địa chỉ của trình khám phá tệp (như được mô tả ở đây ). Sau đó, đặt phím tắt đã chuẩn bị vào thư mục này.

Sử dụng:

  1. Mở Windows explorer qua Win+E
  2. Chọn hai tệp để so sánh trong trình thám hiểm
  3. Giả sử lối tắt cho tệp bó VS_FileCompare.cmdcó tên là "So sánh2Files VS" , bạn có thể chọn hai tệp, nhấp chuột phải và chọn Gửi đến -> So sánh2Files VS để gọi phép so sánh như dưới đây: Gửi đến

  4. Sau vài giây (tùy thuộc vào thời gian ra mắt của Visual Studio), kết quả sẽ được hiển thị trong Visual Studio: Chế độ xem hình ảnh


Tài liệu tham khảo MSDN:
- Sử dụng cửa sổ diff
- Tham số Diff của Visual Studio


*)  Chú thích:vsPath(đường dẫn đến DEVENV.exe) khác nhau tùy thuộc vào phiên bản Visual Studio của bạn, tôi đang mô tả cách bạn có thể tìm thấy nó (Windows 10):

  1. Trong menu bắt đầu của Windows Biểu tượng Windows nhỏ , định vị biểu tượng Visual Studio Biểu tượng Visual Studio Nhỏ
  2. Nhấp chuột phải để hiển thị menu ngữ cảnh. Chọn Thêm> Mở Vị trí tệp .
    Windows Explorer mở bằng phím tắt Visual Studio được tô sáng.
  3. Nhấp chuột phải vào Visual Studio và chọn Thuộc tính
  4. Trong hộp thoại thuộc tính, bạn có thể tìm thấy đường dẫn trong "Target:" VSProperies

5
Đây thực sự là một câu trả lời rất hay và công phu, chắc chắn nên được bình chọn. Tôi đến từ nhóm người luôn tìm kiếm câu trả lời ngay cả khi câu trả lời được đánh dấu trong một chủ đề vì vậy tôi hoàn toàn đưa ra câu trả lời.
Div Tiwari

1
@DivTiwari - Cảm ơn bạn, rất vui khi biết điều đó!
Matt

Chỉnh sửa: Đây là kịch bản cho VS 2013, cảm ơn một lần nữa. @echo tắt setlocal set vspath = C: \ Program Files (x86) \ Microsoft Visual Studio 12.0 \ Common7 \ IDE bắt đầu "So sánh các tệp" / B / MIN "% vspath% \ devenv.exe" / diff% 2% 1 Đầu tiên: '% 2' Thứ hai: '% 1'
Fernando Aguilar

1
Đó là tuyệt vời và làm việc như một nét duyên dáng. Cảm ơn rất nhiều người bạn đời
Sabbir Hassan 15/03/19

1
Đẹp! bỏ phiếu này..chỉ yêu bản chất 'hackish' của giải pháp này. Cảm ơn bạn đã chia sẻ.
Leo Gurdian


24

Tôi luôn là một fan hâm mộ của WinMerge, một dự án nguồn mở. Bạn có thể cắm nó vào Visual Studio khá dễ dàng.

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

sẽ chỉ cho bạn cách làm điều này


Cũng có thể tìm các thư mục khác nhau - rất mạnh mẽ
Jaans

2
Nhược điểm duy nhất của WinMerge là giới hạn ablitiy của nó để nhận ra các thay đổi (như khoảng trắng, các dòng được chia thành nhiều dòng hơn, v.v.)

24

Ngoài ra còn có một tiện ích mở rộng Visual Studio có tên là So sánhFiles , không có gì khác ngoài việc thêm mục "So sánh tệp" vào menu ngữ cảnh của trình thám hiểm giải pháp. Nó gọi công cụ tìm khác biệt Visual Studio tích hợp.

Chỉ trong trường hợp ai đó (như tôi) không muốn cài đặt tiện ích mở rộng tất cả trong một như VSCommands ...


1
NB - tiện ích mở rộng này chỉ dành cho VS2012, nhưng bạn có thể chỉnh sửa tệp kê khai để hỗ trợ VS2013 đủ dễ dàng - xem nhận xét của tôi về tab Hỏi & Đáp của tiện ích mở rộng để biết chi tiết. (Tôi muốn tính năng này, nhưng không thể sử dụng phiên bản VSCommands miễn phí tại nơi làm việc do có giấy phép)
James S

Công cụ so sánh Visual Studio có sẵn cho năm 2013, visualstudiogallery.msdn.microsoft.com/
Sắp xếp

23

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

Tools.DiffFiles File1 File2

Điều này giống như một câu trả lời khác
niico

4
Có lẽ - mặc dù cá nhân tôi muốn sử dụng GUI để chọn các tệp hơn loại phải xây dựng hai đường dẫn trong mọi trường hợp - ý tôi là không phải năm 1984.
niico

18

Trong Visual Studio 2012, 2013, 2015, bạn cũng có thể làm điều đó với Web Essentials , chỉ cần nhấp chuột phải vào các tệp và từ menu ngữ cảnh> Web Essential >> Các tệp được chọn:

Chỉnh sửa: Hiện đã có sẵn dưới dạng tiện ích mở rộng riêng biệt

nhập mô tả hình ảnh ở đây


Tôi không thấy các tệp được chọn Diff hoặc Biên dịch đánh dấu sang HTML trong Web Essential - VS 2015
hữu ích. Xem

Tôi đã cài đặt phiên bản mới cho VS 2015nhưng tôi không thể thấy Diff selected filestùy chọn tại sao?
shaijut

@stom cài đặt phần mở rộng tôi đã đề cập.
Hamid Mosalla


8

Trong Visual Studio Code, bạn có thể:

  • Đi đến Explorer
  • Nhấp chuột phải vào tệp đầu tiên bạn muốn so sánh
  • Lựa chọn Select for compare
  • Nhấp chuột phải vào tệp thứ hai bạn muốn so sánh
  • Lựa chọn Compare with '[NAME OF THE PREVIOUSLY SELECTED FILE]'

Điều này hoạt động tuyệt vời trong Visual Studio Code như bạn đã đề cập, nhưng thật đáng buồn là không có trong Visual Studio Enterprise (cũng không phải Professional).
Eptin


4

CẬP NHẬT: Đối với Trình cắm khác biệt tệp VS 2019 Cho phép so sánh các tệp trong các phần khác nhau nhập mô tả hình ảnh ở đây

nhập mô tả hình ảnh ở đây

Bạn có thể cài đặt nó từ đây:

nhập mô tả hình ảnh ở đây

OLD: Dành cho VS 2017 Cài đặt https://marketplace.visualstudio.com/items?itemName=vs-publisher-457497.FileComparer2017

Vấn đề là bạn không thể so sánh các tệp trong các ứng dụng khác nhau, nhưng bạn có thể sao chép các tệp trong cùng một dự án để so sánh ...

Sự khác biệt về tệp


1
Thật không may, điều này không hoạt động khi cố gắng so sánh hai tệp mà không có giải pháp (ví dụ: khi bạn mở VS2017 ở chế độ thư mục: Mở - Thư mục)
Yury Kozlov

2

Tôi đã có vấn đề này là tốt. Không có TFS, nhưng tôi thấy bài viết này hữu ích .

Cụ thể, bước 1b.

Mở dấu nhắc lệnh của Visual Studio và điều hướng đến thư mục Common7 / IDE và nhập

tf diff /configure

0

Tập tin so sánh mở rộng VS của Akhil Mittal. Công cụ nhẹ tuyệt vời mà hoàn thành công việc.


0

Để so sánh bất kỳ hai tệp nào và hợp nhất nó thành một tệp Dưới đây là các bước sau bạn có thể làm theo nếu bạn đã cài đặt studio hình ảnh (Bất kỳ phiên bản) nào.

Bước 1: Mở dấu nhắc lệnh của Visual studio. Nếu bạn không tìm thấy dấu nhắc lệnh của studio hình ảnh thì hãy chọn công cụ phòng thu trực quan

Bắt đầu -> Dấu nhắc lệnh của Visual studio

nhập mô tả hình ảnh ở đây

nhập mô tả hình ảnh ở đây

Bước 2: Nhập lệnh vsdiffmerge.exe

Bỏ qua công tắc / m nếu bạn chỉ cần so sánh.

Cú pháp 1:
vsdiffmerge <file1> <file2> <file1> <outputfile> / t / m

Cú pháp 2:
vsdiffmerge <basefilename> <CompareFilename> <basefilename> <OutputFilename> / t / m

Ví dụ 1:
vsdiffmerge test1.js test2.js test1.js output.js / t / m
Ví dụ 2:
vsdiffmerge.exe "C: \ Users \ Livingston \ Tải xuống \ wa \ wa \ Files \ pre \ Test.js" "C : \ Users \ Livingston \ Tải xuống \ wa \ wa \ Files \ Prod \ Test.js "" C: \ Users \ Livingston \ Tải xuống \ wa \ wa \ Files \ pre \ Test.js "" C: \ Users \ Livingston \ Tải xuống \ wa \ wa \ Files \ output \ samp.js "/ t / m

nhập mô tả hình ảnh ở đây


Bước 3: Hợp nhất các tập tin

nhập mô tả hình ảnh ở đây Xin lưu ý rằng nếu tên tệp không tồn tại trong vị trí, nó sẽ không mở so sánh.

Ngoài ra, bạn có thể làm đẹp các tập tin trước khi bạn so sánh. Trong phòng thu trực quan Ctrl + K + D.

Có rất nhiều trang web làm đẹp có sẵn trực tuyến.


0

Mã Visual Studio rất tốt cho việc này - mở một thư mục, nhấp chuột phải vào cả hai tệp và so sánh.


0

Trong Visual Studio, Diff có thể được gọi bằng cách sử dụng Command Windowvà sau đó ra Tools.DiffFileslệnh

  1. Mở Command Windowbằng phím nóng Ctrl + W, Ahoặc bằng menuView -> Other Windows -> Command Window
  2. Nhập lệnh Tools.DiffFiles "FirstFile.cs" "SecondFile.cs"


-4

Nếu bạn đang làm việc với TFS được kết nối thì nhấp chuột phải vào tệp mà bạn cần so sánh (thông qua trình khám phá kiểm soát nguồn) và nó hiển thị cho bạn một cửa sổ như thế này - nhập mô tả hình ảnh ở đây

Bây giờ thay đổi đường dẫn của tệp nguồn trong 'Đường dẫn Souce:' và bạn có được sự so sánh thông qua công cụ so sánh VS.

Tương tự, bạn có thể so sánh thư mục cũng so sánh tất cả các tệp của một thư mục cùng một lúc.


2
Nếu bạn đọc bài viết gốc, anh ấy đặc biệt nói, "Có cách nào để tôi có thể so sánh hai tệp với tính năng dựng sẵn trong VS nhưng không có TFS không?" Câu trả lời của bạn yêu cầu anh ta phải có TFS.
CigarDoug

mặc dù anh ta đã cố gắng trả lời .. mặc dù vậy, nỗ lực của anh ta đã sai +1
Irf
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.