2009-06-20 57 views
12

Tôi có một dự án Visual Studio với khoảng 60 tệp nguồn C++. Tôi có thể làm một bản dựng, và nó hoàn thành mà không có lỗi. Nhưng nếu tôi ngay lập tức nhấn F7 một lần nữa, nó luôn biên dịch lại khoảng 50 tệp nguồn. Nó không biên dịch lại tất cả các tập tin, đó là lạ.Tại sao Visual Studio 2008 luôn xây dựng lại toàn bộ dự án của tôi?

Tôi có 'Bật tính năng tạo lại tối thiểu' (/ Gm) được đặt. Bất kỳ ý tưởng tại sao nó có thể làm điều này? Không có tệp nào có ngày được sửa đổi trong tương lai.

+1

Ngôn ngữ nào? C++? C#? VB? –

+0

Xin lỗi. Đó là chủ yếu là C + +, với một số C. – Rocketmagnet

+2

Vấn đề có biến mất nếu bạn làm "Giải pháp/Làm sạch" và/hoặc "Xây dựng lại Tất cả"? Liệu nó có biến mất nếu bạn tắt tùy chọn "Bật tối thiểu xây dựng lại" không? – ChrisW

Trả lời

8

Có bất kỳ ngày nào trong tệp của bạn trong tương lai không? Điều này có thể xảy ra nếu bạn thay đổi múi giờ hoặc thay đổi thời gian đồng hồ hệ thống. Ngày trong tương lai sẽ gây nhầm lẫn cho IDE và buộc xây dựng lại mỗi khi F7 hoặc F5 bị tấn công.

+1

Không có tệp nguồn nào trong tương lai. Tôi đã kiểm tra tất cả các tệp. – Rocketmagnet

+3

Điều này luôn xảy ra khi điều này xảy ra với tôi. Kiểm tra kỹ các ngày tệp của bạn, bao gồm tiêu đề từ các nguồn bên ngoài! – Mehrdad

+0

Tôi đã có điều này xảy ra với tôi nhiều lần và điều này không bao giờ xảy ra. –

5

Hầu hết có thể là vấn đề phụ thuộc.

Hãy xem xét các khả năng sau:

  • Nếu bạn đã tùy chỉnh xây dựng các công cụ định nghĩa cho một số các tập tin trong giải pháp của bạn, hãy chắc chắn rằng các tài sản đầu ra chứa tên tập tin bên phải (s). Nếu đầu ra của công cụ xây dựng không tương ứng với một (s) được chỉ định trong tên tệp đầu ra, trình tạo sẽ tạo lại tệp đó.

  • Nếu bạn có sự kiện xây dựng tùy chỉnh, hãy kiểm tra xem đầu ra từ các sự kiện xây dựng đó có ảnh hưởng đến phụ thuộc của tệp được xây dựng hay không.

  • Tôi gặp sự cố khi cố gắng, sau khi xây dựng, sao chép hoặc di chuyển một số tệp đầu ra sang thư mục xây dựng. Các hoạt động xây dựng bài đăng ảnh hưởng đến dấu thời gian của các tệp ouput của quá trình xây dựng sẽ quyết định xây dựng lại mỗi lần.

+0

Tôi không có sự kiện xây dựng tùy chỉnh nào. Mọi thứ chỉ là một biên dịch và liên kết bình thường, với các thư viện. – Rocketmagnet

2

Lý do là nếu 'ngày sửa đổi lần cuối' cho một tệp nguồn được đặt cho một số ngày trong tương lai: nó sẽ xây dựng lại và sau đó tệp nguồn vẫn chậm hơn tệp thực thi. Vấn đề này với những ngày tháng có thể xảy ra nếu tệp nguồn nằm trong một thư mục máy từ xa (chia sẻ mạng) và/hoặc thậm chí có thể xảy ra nếu thời gian của máy không được đồng bộ hóa với ngày của máy đang chạy máy chủ của hệ thống kiểm soát phiên bản nguồn của bạn.

+0

Không có tệp nguồn nào trong tương lai. Tất cả các tệp đều nằm trên máy cục bộ của tôi. – Rocketmagnet

3

Tôi gặp sự cố tương tự và dường như là do tôi đã tắt thông tin duyệt. Properties-> C/C++ -> Browse Info-> Enable Browse Info-> None. Sửa chữa duy nhất tôi đã tìm thấy là biến nó trở lại. Đây là một dự án xbox 360, fwiw, các dự án khác của tôi không có vấn đề gì.

3

Có vẻ như rằng vấn đề này có thể được gây ra bởi nhiều yếu tố, nhưng những gì cố định nó đối với tôi là:

  1. Đóng Visual Studio
  2. tay xóa tất cảbinobj thư mục (sạch không dường như để làm các thủ thuật)
  3. Mở giải pháp và chạy sạch (Tôi không chắc chắn nếu điều này là cần thiết, nhưng tôi đã làm nó chỉ trong trường hợp ...)
  4. Xây dựng như bình thường

Lưu ý: Đây là chương trình C# trong Visual Studio 2010.

0

Điều gì gây ra các triệu chứng tương tự ở tôi là: Tôi có một số dự án trong một giải pháp. Đã có các tệp .cpp được tham chiếu (và do đó được biên dịch) bởi> 1 dự án. Thật không may Visual Studio tạo ra các tập tin .obj với một tên rất đơn giản - nó chỉ thay thế ".cpp" bởi ".obj". Tạo trình bao bọc .cpp-s với tên khác được giải quyết vấn đề.

0

Tôi đã có một cái gì đó tương tự. Mặc dù tôi đã có các sự kiện trước và sau khi tạo dựng nhưng chúng không gây ra sự cố. Hóa ra tôi đã có một số dự án trong chuỗi tham chiếu có tệp nội dung được đánh dấu là "sao chép luôn" thay vì "sao chép nếu mới hơn" có nghĩa là các dự án này luôn được coi là "lỗi thời". Bằng cách thay đổi tất cả những điều này thành "sao chép nếu mới hơn", các thay đổi đối với dự án thử nghiệm đơn vị của tôi không còn buộc phải biên dịch lại tất cả các dự án khác.

4

Trong trường hợp của tôi có hiệu lực như vậy (C++ qua VS2005) chỉ có trên cấu hình phát hành và Studio cho biết đầu ra xây dựng, tùy chọn trình biên dịch/Gm bị bỏ qua nếu/Zi - tùy chọn không được đặt. Sau khi thiết lập/Zi qua

Configuration Properties -> C/C++ -> General -> Thông tin gỡ lỗi Format: Cơ sở dữ liệu Chương trình (/ Zi),

nó là ok. Nhưng không có gì đó sai, khi Cấu hình phát hành cần một cái gì đó về gỡ lỗi? Chưa rõ ràng với tôi!

+0

Đây là vấn đề của tôi cuối cùng, tôi phải vô tình tắt thông tin gỡ rối (/ Zi) về dự án phát hành của tôi - dường như nó được sử dụng trong quá trình xây dựng để quyết định những gì cần xây dựng! –

+0

Có vẻ như bạn cần có một chuỗi rỗng cho tên ProgramDatabase hoặc bạn phải tạo cơ sở dữ liệu. Đặt đầu ra xây dựng thành mức chẩn đoán bạn có thể thấy thông báo này: Tác vụ "Xóa" bị bỏ qua, do điều kiện sai; ... ('ProgramDatabase'! = '' Và 'ProgramDatabase'! = 'OldStyle' và 'ARM \ Release \ vc110.pdb'! = '' Và! Exists (ARM \ Release \ vc110.pdb)). –

3

Sau một vài ngày googling, tôi đã kết thúc với một giải pháp cho vấn đề của tôi.

Tôi gặp sự cố này khi tôi chuyển dự án của mình sang máy tính mới. Tôi đã kiểm tra nhiều lần ngày tạo tệp. Những ngày này đã được cập nhật, tuy nhiên các ngày sửa đổi là trong các bast (kinda kỳ quái) ngay cả khi tôi đã thay đổi các tập tin.

Bản cập nhật đơn giản của các tệp đã giải quyết được sự cố.

1

Kiểm tra dự án của bạn bao gồm mọi tệp tiêu đề .h không tồn tại trên đĩa. Luôn luôn xảy ra với tôi khi tôi xóa một tập tin tiêu đề tôi không thực sự bao gồm bất cứ nơi nào, nhưng quên để xóa nó từ navigator giải pháp của tôi trong VS. Lưu ý: thiếu tiêu đề sản xuất không có lỗi trong quá trình xây dựng (khi không # bao gồm bất cứ nơi nào).

1

Kiểm tra dự án của bạn Tên tệp cơ sở dữ liệu chương trình cài đặt. Vì lý do nào đó, nếu điều này được đặt thành tên của một thư mục (chẳng hạn như "$(IntDir)\"), đôi khi nó có thể khiến VS phải xây dựng lại dự án của bạn mọi lúc, ngay cả khi bạn không tạo tệp PDB (tức là Định dạng thông tin gỡ lỗi được đặt thành " Tàn tật").

Đây là lỗi trong VS2008; Tôi vẫn chưa sao chép nó trong VS2010, nhưng các bài kiểm tra của tôi chưa được triệt để, vì vậy tôi không tự tin nói rằng hành vi đó không có trong VS2010.

0

Tắt "tối thiểu xây dựng lại" (Thuộc tính cấu hình> C/C++> Tạo mã) đã sửa nó cho tôi. Trình biên dịch thậm chí còn để lại một đầu mối:

1> cl: Cảnh báo dòng lệnh D9007: '/ Gm' yêu cầu '/ Zi hoặc/ZI'; tùy chọn bị bỏ qua

Mặc dù tôi phải chỉ ra, trình biên dịch không bỏ qua tùy chọn như đã nói.

7

Tôi đã giải quyết được vấn đề tương tự.

Trong trường hợp của tôi trình biên dịch được hiển thị cảnh báo, tùy chọn/Zi là bắt buộc nếu/Gm được chỉ định.

/Gm cho phép "xây dựng lại tối thiểu", yêu cầu thông tin gỡ lỗi trong tệp .pdb. Vì vậy, nếu bạn không muốn sử dụng .pdb, cũng vô hiệu hóa minumum xây dựng lại - nó giải quyết được một vấn đề trong trường hợp của tôi.

4

Thuộc tính dự án -> "C/C++" -> "Tệp xuất" -> "Tên tệp cơ sở dữ liệu chương trình" tùy chọn không được để trống. Đặt tùy chọn này bằng cách chọn từ hộp thả xuống. Tùy chọn sẽ được thiết lập như sau: $ (IntDir) \ vc90.pdb. Và dòng ProgramDataBaseFileName = "" sẽ bị xóa khỏi tệp vcproj.

Sau đó, chỉ thay đổi * .cpp tệp sẽ được biên dịch lại khi bạn tạo dự án hoặc giải pháp.

0

Trong trường hợp của tôi, tôi đã thay đổi thời gian dữ liệu hệ thống thành ngày trước đó, vì vậy nó được xây dựng lại mỗi lần vì dấu thời gian khác nhau của các tệp đã được thay đổi đến thời điểm hiện tại mà nó không xây dựng lại mỗi lần.

0

Chúng tôi có mà ở đây thường xuyên:

  • xóa tất cả các file trung gian và đầu ra bằng tay. Tùy chọn sạch trong vstudio đôi khi không đủ. Từ một khởi đầu mới làm việc xây dựng hoàn chỉnh. Nếu sau khi một vstudio xây dựng hoàn chỉnh vẫn muốn biên dịch lại một số tệp nhất định, nó có thể liên quan đến dấu đầu dòng tiếp theo.
  • nếu trong tệp vcxproj của bạn, tệp tiêu đề được tham chiếu không có trong đĩa, dự án cũng được biên dịch lại. Bạn có thể kiểm tra điều này bằng một số tính năng ẩn được mô tả trên blog MSDN hoặc chỉ cần chạm (tức là nhấp vào nó để mở) tất cả các tệp tiêu đề trong trình thám hiểm dự án và xem tệp không tồn tại trên đĩa
0

Có cùng vấn đề. Giải quyết bằng cách: thư mục đầu ra -delete (obj, exe, tất cả các file) -Khởi Cygwin -CD thư mục dự án -Khởi "cảm ứng *", trong đó thiết lập lại tập tin sửa đổi ngày/giờ -Xây dựng và tận hưởng vấn đề cố định

0

Có vấn đề tương tự với việc xây dựng lại dự án. Visual Studio không biên dịch lại nhưng liên kết lại dự án mỗi lần nhấn F7.

Khắc phục đơn giản. Cố gắng mở trong Trình chỉnh sửa tất cả các tệp được đưa vào dự án (từ Solution Explorer nhấp đúp vào mỗi tệp) và xóa khỏi giải pháp những tệp không tồn tại.

Các vấn đề liên quan