2010-09-07 38 views
17

Tôi có một dự án thử nghiệm đơn vị chứa một vài tệp XML để kiểm tra định hướng dữ liệu. Những tệp này được đặt thành Build Action Nội dungSao chép nếu mới hơn hoặc Sao chép luôn.Visual Studio không xây dựng lại sau khi thay đổi tệp nội dung

Đối với hầu hết các phần, điều này hoạt động tốt. Tuy nhiên, khi tôi thay đổi một trong các tệp dữ liệu mà không thay đổi bất kỳ mã nào, Visual Studio sẽ không kích hoạt hành động xây dựng nào cả và không có tệp XML nào được sao chép. Có hiệu quả, tôi đang chạy thử nghiệm đơn vị của tôi với tệp dữ liệu cũ.

Tôi có thể kích hoạt xây dựng thủ công, nhưng tôi muốn ngăn chặn những sai lầm như vậy nếu có thể. Có cách nào để làm cho Visual Studio (2008) thực hiện thao tác sao chép mỗi khi ai đó thay đổi các tệp nội dung chỉ?

Để làm rõ: Tệp XML nằm trong dự án thử nghiệm đơn vị, không nằm trong dự án mã sản xuất. Tôi có thuộc tính có liên quan [DeploymentItem] cho tệp được đặt trên thử nghiệm đang chạy.

+0

Bạn đang chạy thử nghiệm đơn vị trong? Visual Studio (mstest)? NUnit? Nếu nó là 'mstest' sau đó có một cái nhìn tại [Làm thế nào tôi có thể nhận được" Copy to Output Directory "để làm việc với Unit Tests?] (Http://stackoverflow.com/questions/227545/how-can-i-get- copy-to-output-directory-to-work-với-unit-tests) –

Trả lời

1

Điều này có vẻ đơn giản là câu trả lời, vì vậy hãy tha thứ cho tôi nếu bạn đã thực hiện nó. Tuy nhiên, tôi đã từng gặp vấn đề này sau khi chỉnh sửa các nguồn dữ liệu của tệp văn bản.

Để khắc phục điều này, tôi phải làm sạch dự án sau mỗi thay đổi gây phiền toái cho một dự án lớn mà tôi đang thực hiện.

Điều này đã dừng lại khi cần thiết khi tôi đã cài đặt VS2008 trên một bản sao Windows mới để có thể là sự cố cấu hình.

1

Trước khi chạy thử nghiệm, Visual Studio gọi MSBuild trên dự án của bạn với mục tiêu Xây dựng và thử nghiệm. Nếu bạn nhìn vào Microsoft.CSharp.targets (xem http://msdn.microsoft.com/en-us/library/ms164312.aspx), bạn có thể theo dõi cách các tệp từ Nhóm nội dung được sao chép xung quanh như một phần của quá trình bẻ khóa. AFAIK, chúng được khai báo đầu vào và đầu ra của một trong các mục tiêu phụ Bulild, vì vậy MSBuild nên thực sự xem xét sao chép chúng nếu dấu thời gian của chúng thay đổi.

Bạn có thể đảm bảo rằng: * thay đổi các tập tin được lưu * bạn đang sử dụng NTFS * khi bạn chạy build từ msbuild cmd-line, nó vẫn không xây dựng lại khi một tập tin xml thay đổi?

Visual Studio Tích hợp MSBuild khá bị hỏng, nó không thực hiện điều đơn giản khi gọi dòng lệnh MSBuild cmd. (Nó có vấn đề với nhập khẩu được lưu trữ và tất cả các loại điều điên rồ, không trực giác).

1

Tôi không biết liệu nó có giúp ích gì cho tình huống của bạn hay không nhưng để giải quyết vấn đề này, tôi đã thay đổi Xây dựng hành động của các tệp XML thành Tài nguyên được nhúng và dường như điều đó.

+0

Trông giống như hack, nhưng có vẻ thực sự hoạt động trên VS2010. –

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