2010-09-17 15 views
5

Ricevo un errore nel tentativo di firmare una dll in F # in mono:Problemi di accesso una DLL in C# su 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 dll viene generato, e ottengo questo errore di nuovo:

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)` 

Il file di chiavi è stato generato in Windows, non fa alcuna differenza?

Aggiornamento:

Utilizzando 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

Quale versione di Mono stai usando? (puoi scoprire con la versione mono) –

+0

@Edgar, ho aggiunto le informazioni alla domanda. – Benjol

risposta

3

Sembra FSC è P/Invocare API native di Windows, che non è portatile. Probabilmente dovresti sollevare il problema con il team di F #.

+0

Grazie, ho fatto e riporterò qui. – Benjol

+0

@ Benjol: hai sentito qualcosa? – mmacaulay

+0

@mmacaulay, non proprio, penso di essere stato copiato su una mail "interna" che diceva che avrebbero cercato di esaminarlo. Sospetto che sia da qualche parte nella terra di nessuno tra Microsoft e Mono ... Ma se/quando io ** faccio ** sentire qualcosa, posterò qui. – Benjol

2

Provare a utilizzare sn per firmare dopo aver generato l'assembly.

Per fare ciò, è necessario prima compilare con --delaysign flag per produrre un assembly con firma ritardata.

È quindi possibile utilizzare l'utilità sn con il flag -R per firmare l'assembly in un secondo momento.

Non sono sicuro al 100% che funzioni perché non ho un computer Linux o Mac in giro per testarlo. Vale comunque la pena sparare.

+0

Ho cercato e non riesco a capire come firmare un assembly precedentemente non firmato ... Qualsiasi suggerimento benvenuto ... – Benjol

+0

Ho aggiunto più informazioni. Spero che questo ti aiuti. –