2010-09-03 17 views
17

Estoy tratando de extender cierta aplicación. Estoy usando un archivo DLL que viene incluido con esa aplicación para ampliar su funcionalidad. Estoy usando Visual Studio 2010 Express Edition. Agregué una referencia a la biblioteca dll. En las propiedades de referencia, la opción "Copiar local" está desactivada. (En gris) ¿por qué? Quiero que Visual Studio copie el dll a mi carpeta de lanzamiento. Si esto no se puede hacer ¿hay alguna otra manera de agrupar el dll?visual studio copia dll se refiere a la carpeta de salida

Respuesta

25

su comentario Hans respuesta indica que se trata de un montaje de COM y que está utilizando Visual Studio 2010.

Esto significa que la referencia de ensamblado probablemente fue añadido con los "Tipos de interoperabilidad Insertar" Configuración establecidas en true. Esto tiene el efecto de vincular el ensamblado COM en su binario eliminando la necesidad de implementarlo por completo. El siguiente enlace tiene una explicación más detallada

Si desea implementar él sin embargo a continuación, tendrá que hacer lo siguiente

  • Haga clic en la referencia en la pestaña referencias
  • Pulse F4 para mostrar la cuadrícula de propiedades
  • Establezca "Insertar tipos de interoperabilidad" en False (esto desgrajará C opiar local)
  • Set "Copia Local" true
2

Depende del tipo de DLL que sea. Si es un servidor COM, Copy Local está desactivado cuando tiene un PIA registrado para ese servidor COM. Si se trata de un ensamblado .NET regular, se desactivará cuando se registre en el GAC.

Solucione el problema, respectivamente, utilizando regasm/u para anular el registro del PIA o gacutil/u para eliminarlo del GAC. Tenga en cuenta que es posible que no desee hacer esto si esta DLL requiere que su instalador se ejecute en la máquina de destino. Lo cual es probable Hable con el vendedor o el autor del componente para averiguar qué debe hacer.

+0

Es un montaje de COM (I puede ver que aparece en la ficha COM en Visual Studio añadir refrence añadir refrence de diálogo). ¿Cómo puedo encontrar el camino de la asamblea que necesito proporcionar a regasm? La ruta de acceso que se muestra junto a ella en Visual Studio es project \ obj \ x86 \ Release \ Interop.lbname.dll. Siempre que la ruta se ejecute correctamente, pero todavía tengo el mismo problema. – user434541

+0

Es difícil dar sentido a eso. project \ obj \ x86 \ release no es una ruta válida para un ensamblado de interoperabilidad. Tampoco debería aparecer en el cuadro de diálogo Agregar referencia. Y no usa regasm.exe en un servidor COM nativo, solo en uno que se implementó en .NET. En ese caso, debe usarlo tal como está, no como un servidor COM. Habla con tu vendedor. –

Cuestiones relacionadas