2010-06-16 11 views
60

Estoy ejecutando GacUtil.exe desde Visual Studio Command Prompt 2010 para registrar un dll (CatalogPromotion.dll) en el GAC. Después de ejecutar la utilidad, dice Assembly Successfully added to the cache, y ejecutar gacutil /l CatalogPromotionDll muestra que el GAC contiene el ensamblado, pero no puedo ver el ensamblaje cuando navego a C: \ WINDOWS \ assembly desde el Explorador de Windows. ¿Por qué no puedo ver el ensamblado en WINDOWS \ assembly desde Windows Explorer pero puedo verlo usando gacutil.exe?Gacutil.exe agrega ensamblado con éxito, pero el ensamblado no se puede ver en el explorador. ¿Por qué?


Antecedentes: Esto es lo que escribe en el símbolo del sistema de VS Herramientas:

 

    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 

Sin embargo, el montaje no demuestra en C: \ WINDOWS \ assembly.

Respuesta

103

Esto se debe a que utiliza la versión .NET 4.0 de gacutil.exe. Almacena el ensamblado en un diferente GAC, el que está en c: \ windows \ microsoft.net \ assembly. Donde se almacenan todos los ensamblados .NET 4.0. No hay un controlador de extensión de shell para ese, las carpetas están visibles como están. Puede echar un vistazo con el Explorador de Windows. Verá la estructura interna de las carpetas de GAC. No debería tener ningún problema para recuperar su ensamblaje, el GAC no es particularmente complicado.

Si el ensamblado está destinado a ser utilizado por una aplicación que apunta a una versión anterior de .NET, entonces debe usar la versión .NET 2.0 de gacutil.exe, almacenada en C: \ Archivos de programa \ Microsoft SDKs \ Windows \ v6.0A \ bin

+0

se pretende que el conjunto sea utilizado por una aplicación de VB6 con COM. Intenté usar la versión 3.5 de gacutil.exe en '\ v7.0.A \ bin', pero esa versión de la utilidad no puede instalar ensamblajes .NET 4.0. –

+1

VB6 no importa qué versión de .NET utilice. Funcionará bien con .NET 4.0. Es posible que desee comenzar a pensar en cómo implementarlo en la máquina de destino. No hay gacutil.exe disponible allí, debe crear un proyecto de instalación. Evite las molestias del GAC mientras depura esto utilizando la opción Regasm.exe/codebase. –

+0

gracias por el consejo. ¿Puede indicarme dónde puedo leer más sobre regasm.exe/codebase? He estado pensando en problemas relacionados con la implementación y sacas un buen punto de que el archivo gacutil.exe no estará disponible allí. Solo estoy tratando de ver cómo se supone que debe hacerse cuando se utilizan componentes .NET en una aplicación VB6. –

2

Esto se debe a que el ensamblado que está instalando en el GAC se compiló teniendo como objetivo el tiempo de ejecución 4.0. Los ensamblados de 4.0 GAC se almacenan en una ubicación diferente c: \ windows \ microsoft.net \ assembly.

La respuesta aceptada es incorrecta. El uso de .NET 4.0 gacutil para instalar un ensamblado compilado que apunta a 3.5 o un tiempo de ejecución anterior funciona bien y colocará el ensamblado en el directorio que el OP esperaba, c: \ windows \ assembly.

1

El camino es -> C: \ Windows \ Microsoft.NET \ assembly \ GAC_MSIL donde se almacenan todos los montajes de .NET versión 4.0

Cuestiones relacionadas