2010-06-16 10 views
60

Tôi đang chạy GacUtil.exe từ trong Visual Studio Command Prompt 2010 để đăng ký một dll (CatalogPromotion.dll) vào GAC. Sau khi chạy tiện ích, nó nói Assembly Successfully added to the cache và chạy gacutil /l CatalogPromotionDll cho thấy GAC chứa assembly, nhưng tôi không thể thấy assembly khi tôi điều hướng đến C: \ WINDOWS \ assembly từ Windows Explorer. Tại sao tôi không thể thấy assembly trong Windows \ assembly từ Windows Explorer nhưng tôi có thể thấy nó bằng gacutil.exe?Gacutil.exe thêm thành công assembly, nhưng assembly không thể xem được trong explorer. Tại sao?


Bối cảnh: Đây là những gì tôi đã gõ vào cửa sổ lệnh cho VS cụ:

 

    C:\_Dev Projects\VS Projects\bmccormack\CatalogPromotion\CatalogPromotionDll\bin 
    \Debug>gacutil /i CatalogPromotionDll.dll 
    Microsoft (R) .NET Global Assembly Cache Utility. Version 4.0.30319.1 
    Copyright (c) Microsoft Corporation. All rights reserved. 

    Assembly successfully added to the cache 

    C:\_Dev Projects\VS Projects\bmccormack\CatalogPromotion\CatalogPromotionDll\bin 
    \Debug>gacutil /l CatalogPromotionDll 
    Microsoft (R) .NET Global Assembly Cache Utility. Version 4.0.30319.1 
    Copyright (c) Microsoft Corporation. All rights reserved. 

    The Global Assembly Cache contains the following assemblies: 
     CatalogPromotionDll, Version=1.0.0.0, Culture=neutral, PublicKeyToken=9188a175 
    f199de4a, processorArchitecture=MSIL 

    Number of items = 1 

Tuy nhiên, việc lắp ráp không hiển thị trong C: \ WINDOWS \ lắp ráp.

Trả lời

103

Đó là vì bạn sử dụng phiên bản .NET 4.0 của gacutil.exe. Nó lưu trữ các hội đồng trong một khác nhau GAC, một trong c: \ windows \ microsoft.net \ lắp ráp. Nơi tất cả các hội đồng .NET 4.0 được lưu trữ. Không có trình xử lý mở rộng trình bao cho thư mục đó, các thư mục được hiển thị dưới dạng. Bạn có thể xem trong Windows Explorer, bạn sẽ thấy cấu trúc bên trong của các thư mục GAC. Bạn không nên gặp rắc rối khi tìm lại lắp ráp, GAC không phức tạp lắm.

Nếu lắp ráp được dự định sẽ được sử dụng bởi một ứng dụng nhắm vào phiên bản .NET cũ hơn thì bạn nên sử dụng phiên bản .NET 2.0 của gacutil.exe, được lưu trữ trong C: \ Program Files \ Microsoft SDKs \ Windows \ v6.0A \ bin

+0

Việc lắp ráp được thiết kế để được sử dụng bởi một ứng dụng VB6 với COM. Tôi đã thử sử dụng phiên bản 3.5 của gacutil.exe trong '\ v7.0.A \ bin', nhưng phiên bản của tiện ích đó không thể cài đặt các phiên bản .NET 4.0. –

+1

VB6 không quan tâm bạn sử dụng phiên bản .NET nào. Nó sẽ hoạt động tốt với .NET 4.0. Bạn có thể muốn bắt đầu suy nghĩ về cách bạn có được điều này triển khai trên máy mục tiêu. Không có gacutil.exe có sẵn ở đó, bạn phải tạo một dự án Thiết lập. Tránh GAC phức tạp trong khi bạn gỡ lỗi này bằng cách sử dụng tùy chọn Regasm.exe/codebase. –

+0

cảm ơn lời khuyên. Bạn có thể chỉ cho tôi theo một hướng mà tôi có thể đọc thêm về regasm.exe/codebase không? Tôi đã suy nghĩ về các vấn đề liên quan đến triển khai, và bạn đưa ra một điểm tốt rằng gacutil.exe sẽ không có sẵn ở đó. Tôi chỉ cố gắng để cảm thấy xung quanh để xem làm thế nào điều này là nghĩa vụ phải được thực hiện khi sử dụng các thành phần NET trong một ứng dụng VB6. –

2

Điều này là do lắp ráp bạn đang cài đặt vào GAC được biên dịch nhắm mục tiêu thời gian chạy 4.0. 4.0 GAC hội đồng được lưu trữ ở một vị trí khác nhau c: \ windows \ microsoft.net \ assembly.

Câu trả lời được chấp nhận không chính xác. Sử dụng .NET 4.0 gacutil để cài đặt một assembly được biên dịch nhắm mục tiêu 3.5 hoặc thời gian chạy sớm hơn hoạt động tốt, và sẽ đặt assembly trong thư mục OP mong đợi, c: \ windows \ assembly.

1

Đường dẫn là -> C: \ Windows \ Microsoft.NET \ lắp ráp \ GAC_MSIL nơi tất cả các bộ phận nhỏ được lưu trữ trong phiên bản .net 4.0