tệp nguồn khác với khi mô-đun được xây dựng


103

Điều này khiến tôi điên mất.

Tôi có một dự án khá lớn mà tôi đang cố gắng sửa đổi. Tôi đã nhận thấy trước đó rằng khi tôi nhập DbCommand, visual studio không thực hiện bất kỳ cú pháp đánh dấu nào trên đó và tôi đang sử dụng System.Data.Common.

Mặc dù không có gì được đánh dấu, dự án dường như đang chạy tốt trong trình duyệt của tôi. Vì vậy, tôi quyết định chạy trình gỡ lỗi để xem mọi thứ có thực sự hoạt động như bình thường không.

Mỗi khi lớp học không làm nổi bật được gọi là tôi nhận được "the source file is different from when the module was built"thông báo.

Tôi đã làm sạch giải pháp và xây dựng lại nó nhiều lần, xóa tệp tmp, làm theo tất cả các hướng dẫn ở đây Bắt "Tệp nguồn khác với khi mô-đun được tạo." , khởi động lại máy chủ web và nó vẫn cho tôi biết các tệp nguồn khác nhau khi chúng rõ ràng là không.

Tôi không thể kiểm tra bất kỳ mã nào tôi đã viết hôm nay vì điều này.

  • Làm thế nào mà nguồn có thể khác với mã nhị phân khi tôi vừa tuân thủ nó?
  • Có cách nào để đánh thức một số cảm giác vào studio trực quan, hay tôi chỉ thiếu thứ gì đó?

Xin lỗi nếu đó là một chút nhiều. Phiên bản ngắn: Tôi biên dịch chương trình của mình, sau đó tôi cố gắng gỡ lỗi nó và Visual studio cho tôi biết tệp nguồn của tôi (mà tôi vừa biên dịch) khác với mô-đun tôi vừa tạo. Tôi chỉ muốn biết tại sao nó nghĩ rằng
frustratedcoder

Câu trả lời:


111

Tôi gặp sự cố này khi chạy ứng dụng bảng điều khiển trong đó nguồn khác là nguồn có điểm nhập (static void Main). Xóa các thư mục bin và obj và thực hiện xây dựng lại toàn bộ dường như đã khắc phục được điều này, nhưng mỗi khi tôi thực hiện thay đổi mã, nó lại lỗi thời.

Lý do tôi tìm thấy cho điều này là:

  1. Tôi đã kiểm tra "Chỉ xây dựng các dự án khởi động và các phụ thuộc trên Run" (Công cụ -> Tùy chọn -> Dự án và giải pháp -> Xây dựng và chạy)
  2. Trong Trình quản lý cấu hình, dự án khởi động của tôi chưa được chọn "Bản dựng"

(Đối với # 2 -> có thể truy cập thông qua thanh công cụ trong danh sách thả xuống 'Gỡ lỗi / Phát hành'.)


7
+1 cho mẹo quản lý cấu hình. Tôi đã cố gắng sắp xếp điều này trong một giờ và chỉ có thế.
Nick Sarabyn

Tôi đã có nhiều nhánh của một giải pháp trong TFS. Xóa các thư mục bin và obj trên tất cả các nhánh đã kiểm tra dường như sẽ làm rõ ràng mọi thứ.
tùng

trong trường hợp của tôi, tôi đã thay đổi solution platformstừ Any CPUđến Mixed Platformdo nhầm lẫn !!! Tôi thay đổi nó trở lại Any CPUvà nó hoạt động trở lại.
vaheeds

Cảm ơn bạn, Giải pháp> Thuộc tính> Thuộc tính cấu hình> Cấu hình, ứng dụng bảng điều khiển của tôi (chạy các thử nghiệm cho một ứng dụng web trong cùng một sln) đã được bỏ chọn.
emery.noel

23

Tôi chỉ gặp vấn đề tương tự này, các dự án của tôi đều có cùng một giải pháp nên chúng đang sử dụng các tham chiếu Project to Project, vì vậy một cái đã thay đổi những cái khác lẽ ra phải được cập nhật. Tuy nhiên không phải vậy, tôi đã cố gắng xây dựng, xây dựng lại, đóng VS2010, lấy một bản sao mới từ kiểm soát nguồn của chúng tôi. Không có cách nào trong số này hiệu quả, những gì cuối cùng tôi đã thử là nhấp chuột phải vào dự án và xây dựng lại từng dự án riêng lẻ. Điều đó đã cập nhật các tệp .dlls và .pdb để tôi có thể gỡ lỗi.

Vấn đề ở đây là tệp dll và hoặc tệp pdb của bạn không đồng bộ.


1
Bạn không đề cập trực tiếp, nhưng "dự án dỡ bỏ" (tải lại) hoạt động cho tôi, cảm ơn.
javaLover

điều này đã làm việc cho tôi:> Không cái nào trong số này hiệu quả, những gì cuối cùng tôi đã thử là nhấp chuột phải vào dự án và xây dựng lại từng dự án riêng lẻ. Điều đó đã cập nhật các tệp .dlls và .pdb để tôi có thể gỡ lỗi.
Khachatur

dỡ dự án (tải lại) và xuất bản các bit mới nhất lên máy chủ web (IIS) hoạt động cho tôi.
Jason Tang

5

Làm theo các bước sau

  1. Chỉ cần xóa thư mục bin khỏi dự án nơi DLL được tạo.
  2. Xây dựng lại dự án.
  3. Xóa tham chiếu khỏi dự án làm tham chiếu đến DLL.
  4. Bao gồm một lần nữa tài liệu tham khảo.
  5. Thưởng thức.

4

Ngoài các câu trả lời này, tôi đã gặp vấn đề tương tự khi thay thế các tệp DLL mới bằng các tệp cũ do đường dẫn sai. Nếu bạn vẫn gặp lỗi này, bạn có thể không tham chiếu sai đường dẫn cho các tệp DLL. Đi tới trình quản lý IIS và nhấp vào trang web sử dụng các tệp DLL của bạn. Trên cửa sổ bên phải, nhấp vào Cài đặt nâng cao và đi đến đường dẫn của thư mục Đường dẫn vật lý trên File Explorer và đảm bảo rằng bạn đang sử dụng thư mục này để thay thế các tệp DLL của mình.


4

Một số điều để bạn kiểm tra:

Bạn đã kiểm tra kỹ các tham chiếu dự án của mình chưa?

Bạn có máy chủ web khởi động Visual Studio vẫn đang chạy không? Kiểm tra khay hệ thống và tìm trang có biểu tượng bánh răng cưa (bạn có thể có nhiều hơn một):

văn bản thay thế
(nguồn: msdn.com )

Nhấp chuột phải và đóng / thoát khỏi nó. Bạn có thể có nhiều hơn một. Bạn có thể gỡ lỗi các thay đổi của mình bây giờ không?

Bạn đang chạy phiên bản gỡ lỗi nhưng chỉ mới xây dựng phiên bản phát hành (hoặc ngược lại)?

Biên dịch có thực sự thành công không? Tôi biết tôi đã nhấp qua "có lỗi, bạn có muốn tiếp tục không?" nhắn tin một vài lần mà không nhận ra.


Quá trình biên dịch thành công. Tôi là một người không thích khi nói đến Visual Studio. Làm cách nào để kiểm tra xem tôi đang chạy phiên bản gỡ lỗi hay phiên bản phát hành?
nản

1
@frustrated - Tôi chỉ đang cố gắng loại bỏ điều hiển nhiên. Để kiểm tra xem bạn đang phát hành hay gỡ lỗi, hãy kiểm tra menu thả xuống bên cạnh biểu tượng "gỡ lỗi" trên thanh công cụ. Nó sẽ là "Gỡ lỗi" hoặc "Phát hành".
ChrisF

Cảm ơn bạn. Nó nói là gỡ lỗi. Đó có phải là những gì nó nên được?
bực

@frustrated - Đó là một khởi đầu tốt;). Bạn có thể "gỡ lỗi" mã phát hành, nhưng nó không hữu ích bằng - nhưng điều đó không liên quan ở đây. Nó có nghĩa là bạn đang (hoặc ít nhất nên) xây dựng và chạy các tệp nhị phân gỡ lỗi. Tôi sẽ phải suy nghĩ thêm - nếu không thực sự thấy vấn đề thì hơi khó chẩn đoán.
ChrisF

"mà không thực sự nhìn thấy vấn đề thì hơi khó chẩn đoán" tôi đã nghĩ như vậy. Tôi đánh giá cao sự giúp đỡ mặc dù
thất

3

Với các dịch vụ web, sự cố có thể do sử dụng lệnh "Xem trong trình duyệt" của Visual Studio. Thao tác này sẽ đặt các tệp DLL và PDB của dịch vụ vào thư mục bin và obj. Khi bước vào dịch vụ web từ máy khách, bằng cách nào đó Visual Studio sử dụng PDB trong thư mục bin (hoặc obj), nhưng nó sử dụng DLL trong thư mục xây dựng đầu ra của dự án. Có một số cách giải quyết:

  1. Thử xóa các tệp DLL và PDB trong thùng dịch vụ web và tệp obj.
  2. Hãy thử nhấp vào "Xem trong Trình duyệt" trong Visual Studio.

Nếu trước đó bạn gặp lỗi tệp nguồn không khớp, Visual Studio có thể đã thêm tên tệp vào danh sách đen. Kiểm tra các thuộc tính giải pháp của bạn. Chọn "Thuộc tính chung -> Gỡ lỗi tệp nguồn" ở phía bên trái của hộp thoại. Nếu các tệp nguồn dịch vụ web của bạn xuất hiện trong trường "Không tìm kiếm các tệp nguồn này", hãy xóa chúng.


2

Tôi chỉ có vấn đề này.

Tôi đã thử tất cả các cách trên, nhưng chỉ điều này hoạt động:

  • xóa tệp .pdb cho giải pháp.
  • xóa các tệp .obj vi phạm (đối với tệp được báo cáo là không đồng bộ hóa)

xây dựng giải pháp.

Điều này đã khắc phục sự cố cho tất cả các bản dựng trong tương lai đối với tôi.


Tôi nghĩ rằng việc xóa các tệp .pdb là chìa khóa ở đây. Điều này xảy ra với tôi vì tôi đã sao chép các tệp .pdb cũ từ một chi nhánh khác.
Danzomida

1

Đây là cách tôi khắc phục sự cố trong Visual Studio 2010:

1) Thay đổi tùy chọn 'Cấu hình giải pháp' từ "Gỡ lỗi" thành "Phát hành"

2) Bắt đầu gỡ lỗi

3) Dừng gỡ lỗi và chuyển tùy chọn 'Cấu hình giải pháp' trở lại thành "Gỡ lỗi"

Điều này đã làm việc cho tôi. Bước 3 là tùy chọn - nó hoạt động tốt khi tôi thay đổi thành "Phát hành" nhưng tôi muốn thay đổi lại.


1

Giải pháp của tôi:

Tôi đã đưa một dự án hiện có từ một giải pháp khác vào một tệp giải pháp mới.

Tôi không nhận thấy rằng khi dự án hiện có được xây dựng lại, nó đang đưa đầu ra cuối cùng vào thư mục đầu ra của giải pháp MỚI. Tôi đã xác định đường dẫn trình liên kết để xem thư mục đầu ra của giải pháp OLD.

Chuyển dự án của tôi sang tìm kiếm trong thư mục đầu ra của giải pháp mới đã khắc phục sự cố này cho tôi.


1

Tôi gặp sự cố này và hóa ra là tôi đang chạy ứng dụng bảng điều khiển của mình dưới dạng ứng dụng windows. Việc chuyển loại đầu ra trở lại bảng điều khiển đã khắc phục sự cố.


1

Tôi đã từng gặp vấn đề tương tự. Để khắc phục, tôi đã sử dụng "Chế độ phát hành" để gỡ lỗi trong VS2013. Điều này là đủ đối với tôi, vì tôi đang làm việc trong một addon nút js \ c ++.


1

Dỡ dự án có tệp gây ra lỗi.

Tải lại dự án.

đã sửa


1

Trong Visual Studio 2017, việc xóa thư mục .vs ẩn trong đã giải quyết được vấn đề này cho tôi.


1

Vấn đề của tôi là tôi có hai dự án trong giải pháp của mình. Dự án thứ hai là một dự án thử nghiệm được sử dụng để gọi dự án đầu tiên. Tôi đã chọn đường dẫn đến các tham chiếu từ thư mục phát hành của thư mục bin.

Vì vậy, bất cứ khi nào tôi thực hiện thay đổi đối với mã của dự án đầu tiên và xây dựng lại nó, nó sẽ cập nhật các dlls trong thư mục gỡ lỗi nhưng dự án đang gọi đang trỏ đến thư mục phát hành, gây ra lỗi cho tôi, "tệp nguồn khác với khi mô-đun. đã được xây dựng."

Sau khi tôi xóa tham chiếu đến dll của dự án chính trong thư mục phát hành và đặt nó thành dll trong thư mục gỡ lỗi, sự cố đã biến mất.


0

giải pháp: - vấn đề là: - nếu một số dự án của bạn trong một giải pháp, tham khảo một số dự án khác, thì đôi khi dll của một số dự án, sẽ không cập nhật tự động, bất cứ khi nào bạn xây dựng giải pháp, một số dự án sẽ có các tệp xây dựng trước đó, không dlls mới nhất

bạn phải thực hiện thủ công và sao chép dll của dự án xây dựng mới nhất vào dự án được tham chiếu


0

Tôi đang sử dụng Visual Studio 2013 và tôi đã có một dự án hiện có dưới quyền kiểm soát nguồn.
Tôi đã tải xuống một bản sao mới từ kiểm soát nguồn vào một thư mục mới.
Sau khi thực hiện các thay đổi đối với bản sao mới, khi xây dựng, tôi nhận được lỗi được đề cập.

Giải pháp của tôi:
1) Mở Documents\IISExpress\config\applicationhost.config
2) Cập nhật virtualDirectorynút với thư mục vào bản sao mới và lưu.


0

Vấn đề của tôi là tôi có một dịch vụ web trong dự án và tôi đã thay đổi đường dẫn xây dựng.

Khôi phục đường dẫn xây dựng mặc định đã giải quyết được vấn đề của tôi.


0

Tôi gặp vấn đề tương tự và tôi đã làm theo phần lớn hướng dẫn trong các câu trả lời khác được đăng ở đây, dường như không có gì hiệu quả với tôi.

Cuối cùng tôi đã mở IIS và tái chế nhóm ứng dụng cho ứng dụng web của mình. Tôi có phiên bản IIS 8.5.9600, tôi nhấp chuột phải vào ứng dụng web của mình, sau đó: Triển khai> Tái chế> Nhóm ứng dụng tái chế> OK.

Điều đó dường như đã được khắc phục, các điểm ngắt giờ đã bị tấn công như mong đợi. Tôi nghĩ rằng việc làm này cùng với việc xóa các thư mục bin và obj đã giúp ích cho tình huống của tôi.

Chúc may mắn!


0

Tôi biết đây là một câu hỏi cũ nhưng tôi vừa gặp phải vấn đề tương tự và muốn đăng ở đây để phòng trường hợp nó giúp ích cho người khác. Tôi có một máy tính mới và bộ phận CNTT đã hợp nhất máy tính cũ của tôi với máy tính mới. Khi tôi thiết lập TFS, tôi đã ánh xạ một đường dẫn cục bộ khác với những gì tôi đang sử dụng trước đây, tới một ổ đĩa nội bộ bổ sung. Đường dẫn cũ vẫn tồn tại từ dữ liệu đã hợp nhất trên ổ cứng của tôi nên tôi vẫn có thể xây dựng và chạy. Các đường dẫn IIS của tôi cũng trỏ đến thư mục cũ. Sau khi tôi cập nhật IIS theo đúng đường dẫn, tôi đã có thể gỡ lỗi tốt. Tôi cũng đã xóa thư mục cũ để có biện pháp tốt.


0

Tôi cũng từng trải qua điều đó. Tôi chỉ cần mở thư mục obj trên dự án và sau đó mở thư mục gỡ lỗi, xóa tệp .pdb và đó là tất cả.


0

Lỗi này cũng xảy ra nếu bạn cố gắng thực hiện thay đổi đối với tệp nguồn không phải là một phần của dự án.

Tôi đang gỡ lỗi một phương thức từ tệp .dll của một dự án khác của tôi, trong đó Visual Studio đã tải nguồn khá hữu ích vì tệp .dll đã được xây dựng trên cùng một máy và nó biết đường dẫn đến nguồn. Rõ ràng, việc thay đổi một tệp như vậy sẽ không làm được gì trừ khi bạn xây dựng lại dự án được tham chiếu.


0
  1. Xóa tất cả các điểm ngắt.
  2. Xây dựng lại.
  3. Làm xong

0

Tại Visual Studio 2015, sử dụng C ++, the source file is different from when the module was builtvấn đề đã khắc phục cho tôi là

  • khởi động lại Visual Studio.

0

Gỡ lỗi-> bắt đầu mà không cần gỡ lỗi.

Tùy chọn này đã làm việc cho tôi. Hi vọng điêu nay co ich!


0

Kiểm tra xem vị trí bạn trỏ đến bằng cách sử dụng mex () trong Matlab có đúng không (chứa các tệp lib và obj được sửa đổi theo ngày cuối cùng bạn biên dịch thư viện trong Visual studio).

Nếu đây không phải là trường hợp:

Đảm bảo rằng bạn đang biên dịch Visual studio ở chế độ lưu tệp .lib:

  1. thuộc tính -> Thuộc tính cấu hình -> Chung -> Loại cấu hình -> thư viện tĩnh

  2. thuộc tính -> Thuộc tính cấu hình -> Chung -> Phần mở rộng mục tiêu = .lib (thay vì exe)

Đảm bảo đầu ra và thư mục trung gian khớp với thư mục Matlab trong

  1. thuộc tính -> Thuộc tính cấu hình -> Chung -> Thư mục đầu ra
  2. thuộc tính -> Thuộc tính cấu hình -> Chung -> Thư mục trung gian

0

Trong trường hợp của tôi, câu trả lời của @ Eliott không hoạt động. Để giải quyết vấn đề này, tôi đã Loại trừ / Bao gồm khỏi Dự án tệp bị thiếu của tôi và cũng Làm sạchXây dựng lại giải pháp.

Sau những hành động này, tệp của tôi với các sửa đổi cuối cùng và trình gỡ lỗi được khôi phục.

Tôi hy vọng điều này giúp đỡ.


0

Tôi gặp sự cố này khi gỡ lỗi đôi khi w / Visual Studio nhưng khi ứng dụng được IIS phân phối . (chúng tôi phải phát triển ở dạng này vì một số lý do phức tạp liên quan đến cách nhà phát triển ban đầu thiết lập dự án này.)

Khi tôi thay đổi tệp và xây dựng lại , điều đó sẽ sửa nó rất nhiều lần. Tôi biết điều đó nghe có vẻ ngớ ngẩn, nhưng tôi chỉ đang cố gắng gỡ lỗi một số mã để xem tại sao nó lại hoạt động kỳ lạ khi tôi không thay đổi nó trong một thời gian và tôi đã thử hàng tá thứ từ trang này, nhưng nó đã được sửa chỉ bằng cách thay đổi tập tin..

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.