Tôi có thể cấu hình một ứng dụng .NET theo cách (thiết lập trong Visual Studio) mà nó tham chiếu đến một assembly "cục bộ" (không phải trong GAC) thay vì một assembly trong GAC, mặc dù cả hai assembly có cùng tên và cùng phiên bản ?Làm cách nào để ngăn ứng dụng .NET tải/tham chiếu một assembly từ GAC?
Trả lời
Nếu cả hai cụm được đặt tên mạnh (ký), CLR sẽ luôn tải từ GAC.
Dưới đây là các bước thời gian chạy sử dụng để giải quyết tài liệu tham khảo lắp ráp (từ How the Runtime Locates Assemblies):
Xác định phiên bản lắp ráp chính xác bằng cách kiểm tra áp dụng file cấu hình, bao gồm cả các tập tin cấu hình ứng dụng, nhà xuất bản tệp chính sách và tệp cấu hình máy . Nếu tệp cấu hình nằm trên máy từ xa , thời gian chạy phải tìm và tải xuống ứng dụng tệp cấu hình trước.
Kiểm tra xem tên lắp ráp có bị ràng buộc trước và, nếu có, sử dụng cụm đã được tải trước đó. Nếu một yêu cầu trước đó để tải lắp ráp không thành công, yêu cầu không thành công ngay lập tức mà không cố gắng tải lắp ráp.
Kiểm tra bộ nhớ cache lắp ráp chung. Nếu lắp ráp được tìm thấy ở đó, thời gian chạy sử dụng lắp ráp này.
dò cho lắp ráp (... một số tài liệu bỏ qua ...)
Như đã trình bày sau trong cùng bài viết:
Không có phiên bản kiểm tra lắp ráp không có tên mạnh, cũng như thời gian chạy kiểm tra bộ nhớ cache lắp ráp toàn cục cho các hội đồng không có tên mạnh.
Vì vậy, nếu bạn có thể đủ khả năng để xóa đăng ký khỏi hội đồng địa phương, ứng dụng sẽ sử dụng nó thay vì ký tên trong GAC.
Để biết thêm chi tiết hơn bạn có thể muốn về cơ chế ràng buộc thời gian chạy, hãy xem Suzanne Cook's blog.
This blog entry from Scott Hanselman cũng cung cấp tổng quan tuyệt vời về quy trình ràng buộc.
Bạn có thấy câu trả lời này không?
Forcing the ASP.NET Application to load the assembly from bin not from GAC
Có vẻ như bạn đang cố gắng làm điều tương tự.
Để triển khai thành công ứng dụng .NET Framework của bạn, bạn phải hiểu cách thời gian chạy ngôn ngữ chung định vị và liên kết với các assembly tạo nên ứng dụng của bạn. Theo mặc định, thời gian chạy cố gắng liên kết với phiên bản chính xác của một assembly mà ứng dụng đã được xây dựng.Hành vi mặc định này có thể bị ghi đè bởi cài đặt tệp cấu hình.
Bạn có thể xem thông tin liên kết trong tệp nhật ký bằng Trình xem nhật ký ràng buộc lắp ráp (Fuslogvw.exe), được bao gồm trong Bộ phát triển phần mềm Windows (SDK).
s
Nếu bạn có thể thay đổi số phiên bản của dll địa phương, bạn có thể sử dụng một chuyển hướng phiên bản dll sử dụng thuộc tính oldversion. Bạn có thể sử dụng một tên mạnh mẽ đối với các hội đồng địa phương: Hãy tìm trang này: http://msdn.microsoft.com/en-us/library/7wd6ex19.aspx
Ngoài ra bạn nên xem xét rằng chúng ta có thể thay đổi số phiên bản của một hội đồng biên soạn như nó được mô tả ở đây: Change Assembly Version in a compiled .NET assembly
- 1. Cài đặt một assembly vào GAC cho cả mono/.NET
- 2. Phiên bản GAC và Assembly
- 3. Làm cách nào để hợp nhất nhiều assembly .net vào một assembly đơn?
- 4. GAC - Assembly nằm trong GAC nhưng “Không thể tải tập tin hoặc assembly”
- 5. Tôi làm cách nào để tạo và sử dụng .NET Reference-only 'Reference Assembly'?
- 6. C#: Làm thế nào để tải lắp ráp từ GAC?
- 7. Làm cách nào để di chuyển các assembly từ một dự án triển khai mà không phá vỡ các tham chiếu ứng dụng?
- 8. Cách tham chiếu đến nhiều phiên bản assembly
- 9. Làm thế nào để cài đặt assembly vào GAC bằng Msbuild?
- 10. Làm thế nào để tạo một assembly .NET trong IronPython và gọi nó từ C#?
- 11. Tôi làm cách nào để ngăn mã Alt trong ứng dụng .NET?
- 12. Import-Module từ GAC cho PowerShell Cách sử dụng
- 13. Cách tải lại một assembly cho một miền ứng dụng .NET?
- 14. Làm thế nào để hỗ trợ .NET 2.0 và .NET 4.0 trong một ứng dụng?
- 15. Làm cách nào để thêm tham chiếu assembly vào một dự án?
- 16. Hội GAC Thiếu trong hộp thoại Thêm Tham chiếu
- 17. Làm thế nào để có được .NET để tìm các assembly trong các thư mục cục bộ đầu tiên thay vì GAC?
- 18. Làm cách nào để ngăn gỡ cài đặt ứng dụng?
- 19. .NET Assembly Culture
- 20. Không thể gỡ cài đặt một hội từ GAC?
- 21. Để GAC, hoặc không để GAC?
- 22. Làm cách nào để đăng ký tệp DLL .NET trong GAC?
- 23. Sử dụng Powershell để đăng ký một tệp trong Gac
- 24. Đăng ký các assembly vào GAC bằng InstallShield
- 25. Có thể tham khảo một assembly .NET từ ColdFusion không?
- 26. Có thể thực thi một assembly .NET (dll) từ vbscript không?
- 27. GAC trong .NET là gì?
- 28. .net 4 một phần tin tưởng một hội đồng từ GAC
- 29. Loại 'System.Object' được định nghĩa trong một assembly không được tham chiếu - Ứng dụng Windows Store
- 30. Làm thế nào để bạn sử dụng RequireJS trong một ứng dụng .NET?
Ồ tôi không tìm thấy câu trả lời này khi tôi tìm kiếm StackOverFlow cho chủ đề này. Nhưng bạn nói đúng, cuối cùng câu hỏi gần như giống nhau. – Flo