Trong dự án web ASP.Net của chúng tôi, chúng tôi dường như có một số tệp .refresh được liên kết với một số Dlls của bên thứ 3 mà chúng tôi đang sử dụng. Bất kỳ ý tưởng nào về chúng và làm thế nào / khi nào chúng được tạo ra?
Trong dự án web ASP.Net của chúng tôi, chúng tôi dường như có một số tệp .refresh được liên kết với một số Dlls của bên thứ 3 mà chúng tôi đang sử dụng. Bất kỳ ý tưởng nào về chúng và làm thế nào / khi nào chúng được tạo ra?
Câu trả lời:
Các tệp này cung cấp đường dẫn đến DLL được đề cập để cho Visual Studio biết nơi tìm nó (bạn có thể kiểm tra điều này nếu bạn mở chúng trong trình soạn thảo văn bản). Chúng sẽ được tạo mỗi khi bạn thêm một tham chiếu mới vào dự án.
Chúng thường xuất hiện khi bạn đang sử dụng loại dự án không tạo tệp dự án Visual Studio tiêu chuẩn, vì thông thường các đường dẫn đến các tệp DLL được tham chiếu sẽ đi vào đó.
Từ đây :
Trong dự án ASP.NET, việc thêm tham chiếu dựa trên tệp sẽ thêm tệp .refresh trong thư mục Bin. Khi dự án được kiểm soát nguồn, tệp này sau đó sẽ được thêm vào kiểm soát nguồn.
*.dll.refreshcác tệp nằm trong thư mục bin. Mỗi khi bạn thêm một tham chiếu bên ngoài, bạn sẽ tìm thấy một tệp dll.refresh ngay bên cạnh nó. Cácdll.refreshtệp này là một ngoại lệ đối với quy tắc và chúng sẽ được kiểm soát nguồn. Đó là cách duy nhất để dự án web của bạn biết được vị trí của các tham chiếu của nó.
Một số thông tin về các tệp làm mới sau khi thử và lỗi. Những thử nghiệm này được thực hiện với Visual Studio 2012. Các tham chiếu đã được thêm vào một dự án web C # asp.net.
Như đã thảo luận, việc thêm một tham chiếu đến một assembly thông qua trình duyệt sẽ thêm một tệp .refresh. Tuy nhiên, nếu có thêm tệp DLL phụ thuộc vào DLL được thêm rõ ràng trong thư mục mà bạn thêm từ đó, thì các tệp phụ thuộc cũng được thêm ngầm, nhưng không có tệp .refresh! Vì vậy, ví dụ: tôi thêm một tham chiếu đến "MyAssembly.dll", tôi cũng sẽ nhận được "MyAssembly.dll.refresh". Nhưng nếu có một assembly "MyDependentAssembly.dll" mà "MyAssembly.dll" phụ thuộc vào, tôi sẽ không nhận được "MyDependentAssembly.dll.refresh". Vì vậy, những gì sẽ xảy ra là một assembly được làm mới nhưng không phải là phụ thuộc của nó! Bạn phải thêm lần lượt các tệp DLL theo thứ tự ngược lại của sự phụ thuộc và khi đó mọi thứ sẽ hoạt động tốt hơn.
Một số điều khác cần phải cẩn thận. Thêm "MyAssembly.dll" cũng sẽ thêm "MyAssembly.pdb" nếu nó có mặt. Ngoài ra, "MyAssembly.xml" sẽ được thêm vào tham chiếu nếu nó có mặt. Hai tệp đó cũng sẽ làm mới khi có "MyAssembly.dll.refresh".
Nhưng, khi nào thì Visual Studio quyết định tìm kiếm tệp làm mới? Bây giờ hãy nhớ rằng, trong một dự án web, tệp dự án không theo dõi cụ thể các tệp DLL được tham chiếu. Bạn sẽ không tìm thấy tệp DLL được liệt kê trong tệp dự án chỉ phụ thuộc vào dự án. Vậy làm mới xảy ra khi nào?
Câu trả lời cho thời điểm làm mới xảy ra là trong quá trình xây dựng khi lắp ráp được tham chiếu phải được tải. Điều đó có nghĩa là, mặc dù việc xây dựng một trang web có thể cập nhật được dựng sẵn có thể không lấy được tất cả các tệp DLL. Tôi tiếp tục có một tệp DLL sẽ không làm mới và sau đó tôi nhận ra rằng nó chỉ được sử dụng bên trong tệp .ascx. Bỏ chọn hộp kiểm "Cho phép cập nhật trang web được biên dịch trước" trong trang dự án Tùy chọn MSBuild đã khắc phục sự cố đó cho tôi.
Tuy nhiên, nếu bạn thêm các tệp DLL được tham chiếu được tải thông qua phản chiếu trong mã của bạn, chúng sẽ không được cập nhật thông qua tham chiếu. Bạn sẽ phải sử dụng các sự kiện xây dựng để sao chép chúng vào thư mục bin.