“trang web” dự án trong Visual Studio là một điều kỳ lạ. Họ dường như là một nỗ lực để phục vụ cho các nhà phát triển web truyền thống, nơi một "trang web" chỉ là một tập hợp các tệp trong một thư mục. Trong cùng một cách, khi bạn thực hiện một dự án "Web Site" trong Visual Studio, không có tệp "dự án" thực, như các dự án C# có tệp .csproj. Tuy nhiên, vẫn còn một tệp giải pháp (.sln). Thông thường, tham chiếu assembly được lưu trong tệp dự án. Vì một trang web không có trang web, chúng sẽ đi đâu?
Tài liệu tham khảo cho các dự án khác
Nếu bạn thêm một tham chiếu đến một dự án khác, sau đó một mục được thực hiện trong các giải pháp sln tập tin. Nó kết thúc lên tim như thế này:
Project("{E24C65DC-7377-472B-9ABA-BC803B73C61A}") = "WebSite1", "..\..\WebSites\WebSite1\", "{F25DB9D6-810D-4C18-ACBB-BFC420D33B20}"
ProjectSection(WebsiteProperties) = preProject
TargetFramework = "3.5"
ProjectReferences = "{11666201-E9E8-4F5A-A7AB-93D90F3AD9DC}|ClassLibrary1.dll;"
File System References
Nếu bạn duyệt hệ thống tập tin và thêm một tập tin .dll, sau đó Visual Studio sẽ tạo ra một “.refresh” tập tin với cùng trong thư mục \ Bin. Tệp này chỉ là tệp văn bản 1 dòng cho biết đường dẫn tệp đã được tải. Vì vậy, ví dụ nếu tôi thêm "MyAssem.dll" từ .... \ libs, sau đó trong thư mục Web Site \ Bin, tôi sẽ kết thúc với 2 tệp được sao chép ở đó: MyAssem.dll và MyAssem.dll.refresh. Tệp .refresh sẽ chứa văn bản: “.... \ libs”. Tại mỗi bản dựng, Visual Studio sẽ kiểm tra đường dẫn trong tệp .refresh và nếu một tệp .dll mới tồn tại ở đó, nó sẽ ghi đè lên một trong thư mục Bin.
Cảnh báo: Visual Studio sẽ KHÔNG phát ra lỗi nếu tệp không tồn tại ở nơi tệp .refresh yêu cầu nó xem xét. Nó sẽ chỉ tiếp tục sử dụng .dll đã có trong thư mục \ Bin. Tuy nhiên nó sẽ xuất ra một Warning.
GAC Tham khảo
Nếu bạn thêm một assembly từ Global Assembly Cache, Visual Studio sẽ nhập nó vào file Web.config như sau:
<compilation debug="false">
<assemblies>
<add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
Again thứ bạn cần xem ở đây là Visual Studio giả định rằng nếu hội đồng nằm trong GAC trên máy tính phát triển của bạn, thì nó sẽ ở cùng một nơi trong thời gian chạy! Điều đó có thể khiến bạn gặp rắc rối nếu bạn có thể đã cài đặt Oracle.DataAccess
trên máy tính của mình, điều này sẽ được đặt trong GAC, nhưng khi bạn triển khai, bạn chỉ cần sao chép .dll vào vị trí trên máy sản xuất. Nó vẫn sẽ cố gắng tìm nó trong GAC và có thể thất bại trong thời gian chạy.
Tôi hy vọng điều này sẽ giúp làm sáng tỏ những điểm kỳ quặc của các trang web và cách tham chiếu hoạt động!
Cảm ơn người đàn ông! Tôi luôn luôn có một vấn đề với các tài liệu tham khảo dự án và không nhận thấy tập tin sln đang thay đổi khi tôi thêm tham chiếu dự án. –