2012-10-15 31 views
5

Tôi thường thấy tình huống khi tham chiếu assembly có HintPath sai và điều này có thể gây ra các lỗi ngẫu nhiên lạ.MSBuild thi hành xác thực HintPath

Ví dụ, bạn có HintPath sai, nhưng bạn có một hội đồng tương ứng trong GAC của bạn. Điều đó có nghĩa là dự án sẽ biên dịch ok trên máy của bạn nhưng sẽ không thành công trên các máy khác.

Trong trường hợp của tôi, ngược lại, có một thư viện trong GAC ngay cả trên máy chủ CI, vì vậy vấn đề này sẽ không thể phát hiện được bằng cách tích hợp liên tục.

Tôi đang tìm một cái gì đó như nhiệm vụ MSBuild tùy chỉnh sẽ xác nhận tất cả các HintPath và gây ra lỗi xây dựng nếu có bất kỳ lỗi nào trong số đó sai.

Trả lời

0

Nếu bạn muốn không xây dựng nếu đường dẫn gợi ý không hợp lệ, tại sao không chỉ tham khảo một cái gì đó một cách rõ ràng? Đây là SOP tại công ty của tôi do có rất nhiều phiên bản của cùng một thư viện.

Ví dụ:

<Reference Include="C:\Path\To\Library\MyReference.dll"> 
     <Private>False</Private> 
    </Reference> 

Hoặc, nếu bạn muốn tham khảo thư viện dựa trên một số con đường tự động, bạn có thể thiết lập một số tài sản msbuild, nói rằng, "ExternalLibs" trỏ đến thư mục thư viện của bạn (nếu bạn giữ libs trong kiểm soát nguồn, v.v.) Sau đó, bạn có thể đặt thuộc tính đó thông qua dòng lệnh (khi bạn gọi msbuild) hoặc cung cấp cho nó một số giá trị mặc định mà mỗi người dùng có thể ghi đè trong tệp .user của họ, ví dụ.

<Reference Include="$(ExternalLibs)\MyReference.dll"> 
     <Private>False</Private> 
    </Reference> 

Giải pháp này khá linh hoạt.

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