2009-12-16 34 views
5

tôi phải triển khai một vài bản lắp ráp cho GAC. Tôi chỉ có một vài câu hỏi về sự hiểu biết của tôi về GAC. thực sự làm tôi bối rối.Phiên bản GAC và Assembly

Tôi muốn biết phiên bản nào cần thay đổi phiên bản tệp và phiên bản. Các kết hợp có thể có trong đó dll GAC sẽ được thay thế bằng cách cài đặt ứng dụng là gì. và quản lý cơ bản cho các tệp GAC.

tôi sẽ giải thích câu hỏi của tôi sử dụng ví dụ sau để hiểu rõ hơn về GAC:

Giả sử tôi có sản phẩm A và B.

Cả A và B đều tham khảo myfile.dll được cài đặt trong GAC.
phiên bản (i) lắp ráp: [1.0.0.0]
(ii) tập tin phiên bản lắp ráp: [2.0.0.0] (cố ý khác nhau để tránh sự nhầm lẫn hơn)

  1. Giả sử tôi có một bản vá lỗi được áp dụng trong myfile.dll. Vậy tôi nên thay đổi phiên bản nào?

  2. Giả sử tôi có phiên bản mới của A 'ANEW'. Phiên bản nào sẽ được thay đổi để cả A, B ANEW có thể nằm cạnh nhau.

  3. giả sử nếu tôi có 'A' được cài đặt với myfile.dll hiện diện trong GAC và bây giờ tôi cố gắng cài đặt 'B' có gac dll với sửa lỗi .. sau đó phiên bản để thay đổi để thay đổi phản ánh trong ' A '.

  4. giống như Q3 nhưng thay đổi của B không được phản ánh trong 'A'.

  5. Giả sử 'A' được cài đặt với tệp của tôi (1.0.0.0). Bây giờ giả sử 'B' đang cài đặt với myfile (1.x.y.z) .. tệp GAC sẽ được thay thế?

  6. Giả sử 'A' được cài đặt với tệp của tôi (1.0.0.0). Bây giờ giả sử 'B' đang cài đặt với myfile (2.x.y.z) .. tệp GAC sẽ được thay thế?

  7. Giả sử 'A' được cài đặt với tệp của tôi (1.0.0.0). Bây giờ giả sử 'B' được cài đặt với myfile (1.0.0.0) giả sử phiên bản không thay đổi .. tệp GAC sẽ được thay thế?

  8. Ngoài ra cách xóa GAC ​​cũng có bất kỳ tiêu chí nào để xóa không?

Tôi đoán câu hỏi có chút khó hiểu nhưng hy vọng các bạn biết những gì tôi đang hỏi.

PS: Liên quan đến chủ đề này net-assembly-dll-sharing-and-deploying

Trả lời

4

1) Phụ thuộc vào những loại thay đổi bạn thực hiện để sửa chữa lỗi. Nếu bạn thay đổi bất kỳ giao diện công cộng nào hoặc thực hiện những thay đổi đáng kể đối với hành vi, tôi sẽ gặp phải số phiên bản lắp ráp. Nếu không, bạn có thể làm những gì Microsoft làm một phiên bản duy nhất các tập tin.

2) Phiên bản lắp ráp là tất cả những gì mà GAC quan tâm. Vì vậy, nếu bạn muốn hai hội đồng được đặt tên giống nhau để sống cạnh nhau, chúng phải khác nhau theo phiên bản lắp ráp.

3) Tôi có thể thay đổi số phiên bản lắp ráp và bao gồm chính sách dành cho nhà xuất bản để chuyển hướng khách hàng của phiên bản cũ sang phiên bản mới.

4) Tương tự như 3 nhưng không bao gồm chính sách của nhà xuất bản hoặc định cấu hình A để bỏ qua nó.

5) & 6) Không, nó được cài đặt cạnh nhau.

7) Tôi không nghĩ như vậy, nhưng nó có thể phụ thuộc vào nếu chúng khác nhau trong phiên bản tệp. Tôi chắc chắn bạn có thể thử nó để xác minh.

8) Có các tham chiếu có thể được sử dụng để ngăn chặn tình cờ xóa. MSI sử dụng nó, vì vậy nếu bạn sử dụng MSI để cài đặt, nó sẽ theo dõi các tham chiếu đến assembly và không gỡ bỏ nó cho đến khi tất cả các ứng dụng được gỡ cài đặt. Nếu bạn làm điều đó bằng tay (nói bằng cách sử dụng Gacutil/uf) bạn có thể vít những thứ lên.

+1

thx để trả lời. Tôi cũng đã tìm thấy liên kết này http://blogs.msdn.com/junfeng/archive/2004/02/14/72666.aspx "Khi chúng tôi thấy lắp ráp đã tồn tại trong GAC, chúng tôi cố gắng so sánh phiên bản tệp của hội đồng trong GAC (chúng ta hãy gọi nó là "cũ" lắp ráp), và phiên bản tập tin của hội đồng về để cài đặt (và "mới" lắp ráp) .Nếu phiên bản tập tin "lắp ráp mới" là thấp hơn so với "cũ" lắp ráp, chúng tôi sẽ từ chối cài đặt "mới" lắp ráp, trừ khi bạn yêu cầu nhiệt hạch để buộc cài đặt ("gacutil -if"). " – Amitd

+1

Sau câu trả lời này và một số nghiên cứu .. tôi đã nhận được câu trả lời, thx u :) [a] để cài đặt cạnh nhau trong GAC luôn thay đổi phiên bản lắp ráp. [b] để sửa lỗi luôn thay đổi phiên bản tệp lắp ráp. [c] phiên bản tệp cũ hơn luôn được thay thế bằng phiên bản mới hơn nếu cùng phiên bản. [d] để buộc thay thế phiên bản tệp mới bằng phiên bản tệp cũ hơn (cho cùng phiên bản lắp ráp) sử dụng cờ hiệu lực trong gacutil. – Amitd

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