Firmar un ensamblado

11/01/2006 - 14:10 por AOG | Informe spam
Hola, tengo un proyecto en VB 2005 con arquitectura distribuida con Servicio
Web, la parte de negocio la voy a esponer en COM+ ya que utilizo
EnterpriseServices para usar ObjectPooling y JustInTimeActivation.
Entoces tengo que firmar los ensamblados con un nombre seguro para
exponerlos en servicios COM+, hasta aquí sin problemas, he hecho el Imports
System.EnterpriseServices y he añadido <Assembly:
ApplicationName("MiServicioApp")>
<Assembly: Description("MiServicioApp - servicios acceso a datos")>
<Assembly: AssemblyKeyFile("C:\MiProyecto\MiArchivo.snk")> en el archivo
AssemblyInfo.vb de cada ensamblado de mi proyecto.
El problema que me ocurre es que tengo una referencia al ensamblado
Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.dll (para controlar
las excepciones que se proboca en la distintas capas y poder exponerlas en la
capa de interfaz del usuario).
El problema es que me da un error a compilar mi proyecto, y me dice:
Unable to emit assembly: Referenced assembly
'Microsoft.Practices.EnterpriseLibrary.ExceptionHandling' does not have a
strong name
¿como puedo firmar dicho ensamblado?.
Ha instalar Microsoft Practices EnterpriseLibrary te deja el fuente en C#,
he intentado hacerlo añadiendo las mismas líneas en el archivo en el archivo
AssemblyInfo.cs pero me da un error que me dice que lo intente con /filekey
lo he intentado con al.exe y tlbimp.exe pero no me deja me dice que el
fichero entrada no valido, esto es lo que hago:
al.exe Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.dll
/out:c:\otraruta\Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.dll
/keyfile:C:\MiProyecto\MiArchivo.snk

Supongo que no lo hago bien.
Alguien me podría ayudar, como puedo solucionar esto, o si hay otro modo de
firmar.
Un saludo.
 

Leer las respuestas

#1 AOG
12/01/2006 - 17:45 | Informe spam
... ya está solucionado el problema,en otro foro me ha dado la respuesta y
quisiera
compartirlo para quien lo necesite como yo lo necesitaba, y esta es la
solución:

Como utilizo en mi proyecto la libreria
Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.dll,
tambien debe de ir firmado con mi archivo snk, he abierto la solucion de
EnterpriseLibrary 2.0
hay que abrir las propiedades de los proyecto Common, ObjectBuilder
ExceptionHandling,
ExceptionHandling.Logging y Logging. en la solapa Signing ahí especifico el
archivo que contiene la firma (.snk)
He compilado toda la solución,luego ejecutado los bat's, en este orden:
BuildLibrary.bat,
CopyAssemblies.bat y InstallServices.bat esto compila, copia e instala las
distintas
librerias Enterprise Library, despues en mi proyecto he hecho la
referencia a la nueva dll
Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.dll
y me ha dejado compilar mi proyecto sin ningún problema. Ya queda registar
en los
ServiciosComponet (COM+) los ensamblados, que normalmete se autoregistra
cuando se ejecuta
la aplicación y se accede aun metodo de la librerias que utiliza
EnterpriseServices ecepto
si se hacede a través de Servicio Web porque no tiene permisos para acceder
al registro, en
este caso se registra manualmente con regsvcs bin\debug\ServicedCom.dll, yo
no lo he registrodo
manualmente esto quiere decir que no se si funciona regsvcs, aunque yo
utilizo un SW el truco
es acceder directamente desde IU a la capa de negocio que utiliza
EnterpriseServices y se registra
automaticamente cuando ejecuto mi aplicación.

Un saludo, para quien le pueda servir estas líneas.
AOG

"AOG" escribió:

Hola, tengo un proyecto en VB 2005 con arquitectura distribuida con Servicio
Web, la parte de negocio la voy a esponer en COM+ ya que utilizo
EnterpriseServices para usar ObjectPooling y JustInTimeActivation.
Entoces tengo que firmar los ensamblados con un nombre seguro para
exponerlos en servicios COM+, hasta aquí sin problemas, he hecho el Imports
System.EnterpriseServices y he añadido <Assembly:
ApplicationName("MiServicioApp")>
<Assembly: Description("MiServicioApp - servicios acceso a datos")>
<Assembly: AssemblyKeyFile("C:\MiProyecto\MiArchivo.snk")> en el archivo
AssemblyInfo.vb de cada ensamblado de mi proyecto.
El problema que me ocurre es que tengo una referencia al ensamblado
Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.dll (para controlar
las excepciones que se proboca en la distintas capas y poder exponerlas en la
capa de interfaz del usuario).
El problema es que me da un error a compilar mi proyecto, y me dice:
Unable to emit assembly: Referenced assembly
'Microsoft.Practices.EnterpriseLibrary.ExceptionHandling' does not have a
strong name
¿como puedo firmar dicho ensamblado?.
Ha instalar Microsoft Practices EnterpriseLibrary te deja el fuente en C#,
he intentado hacerlo añadiendo las mismas líneas en el archivo en el archivo
AssemblyInfo.cs pero me da un error que me dice que lo intente con /filekey
lo he intentado con al.exe y tlbimp.exe pero no me deja me dice que el
fichero entrada no valido, esto es lo que hago:
al.exe Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.dll
/out:c:\otraruta\Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.dll
/keyfile:C:\MiProyecto\MiArchivo.snk

Supongo que no lo hago bien.
Alguien me podría ayudar, como puedo solucionar esto, o si hay otro modo de
firmar.
Un saludo.


Preguntas similares