5 Stimmen

Probleme beim Signieren einer dll in F# auf Mono

Ich erhalte einen Fehler beim Versuch, eine DLL in F# auf Mono zu signieren:

$ 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

Es wird keine DLL erzeugt, und ich erhalte diese Fehlermeldung:

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

Die Schlüsseldatei wurde unter Windows erstellt, macht das einen Unterschied?

Aktualisierung:

Mono 2.6.4 verwenden

$ 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

3voto

Mikayla Hutchinson Punkte 16038

Es sieht so aus, als ob fsc die native Windows-API P/Invoke aufruft, was nicht portabel ist. Du solltest das Problem wahrscheinlich dem F#-Team melden.

2voto

Rick Minerich Punkte 3048

Probieren Sie, nachdem Sie das Assembly generiert haben, sn zu verwenden.

Dazu müssen Sie zunächst mit dem --delaysign flag kompilieren, um ein verzögert signiertes Assembly zu erstellen.

Sie können dann das sn-Dienstprogramm mit dem -R-Flag verwenden, um das Assembly anschließend zu signieren.

Ich bin mir nicht zu 100% sicher, ob das funktioniert, da ich keine Linux- oder Mac-Maschine zur Verfügung habe, um es zu testen. Es ist jedoch einen Versuch wert.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X