2010-09-17 7 views
5

estoy recibiendo un error al intentar firmar un DLL en C# en blanco y negro:problemas que firman un DLL en C# en Mono

$ mono /usr/local/share/FSharp-2.0.0.0/bin/fsc.exe\ 
    --target:library \ 
    --keyfile:../../external/MyKeyFile.snk\ 
    AssemblyInfo.fs\ 
    ../../fs/FooBar.fs\ 
    -o:FooBar.dll 

no se genera ningún archivo DLL, y me sale este error de vuelta:

Microsoft (R) F# 2.0 Compiler build 2.0.0.0 Copyright (c) Microsoft Corporation. All Rights Reserved.` 

error FS2014: A problem occurred writing the binary '': A call to StrongNameGetPublicKey failed (mscoree.dll)` 

El archivo de claves se generó en Windows, ¿hace alguna diferencia?

Actualización:

Usando Mono 2.6.4

$ mono --version 

Mono JIT compiler version 2.6.4 (tarball Mon Jun 21 19:26:21 UTC 2010) 
Copyright (C) 2002-2010 Novell, Inc and Contributors. www.mono-project.com 
TLS:   __thread 
GC:   Included Boehm (with typed GC and Parallel Mark) 
SIGSEGV:  altstack 
Notifications: epoll 
Architecture: amd64 
Disabled:  none 
+0

¿Qué versión de Mono estás usando? (puede averiguarlo con monoversión) –

+0

@ Edgar, he agregado la información a la pregunta. – Benjol

Respuesta

3

Parece que el FSC es P/invocación de API nativa de Windows, que no es portátil. Probablemente deberías plantearte el problema con el equipo de F #.

+0

Gracias, lo he hecho y volveré a informar aquí. – Benjol

+0

@Benjol: ¿oíste algo? – mmacaulay

+0

@mmacaulay, no realmente, creo que me copiaron en un correo "interno" diciendo que tratarían de investigarlo. Sospecho que está en algún lugar de la tierra de nadie entre Microsoft y Mono ... Pero si/cuando ** escucho ** algo, lo publicaré aquí. – Benjol

2

Pruebe usar sn para firmar después de generar el ensamblaje.

Para hacer esto, primero debe compilar con el --delaysign flag para producir un ensamblaje de retraso firmado.

Luego puede usar la utilidad sn con el indicador -R para firmar el ensamblaje después.

No estoy 100% seguro de que esto funcionará ya que no tengo una máquina Linux o Mac para probarlo. Vale la pena intentarlo.

+0

He buscado y no puedo encontrar la forma de firmar un ensamble sin firmar ... Cualquier puntero es bienvenido ... – Benjol

+0

Agregué más información. Espero que esto ayude. –