Проблемы с подписью dll в F# на Mono

Я получаю сообщение об ошибке при попытке подписать dll в F # на моно:

$ 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

Никакая dll не создается, и я возвращаю эту ошибку:

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

Ключевой файл был сгенерирован в Windows, имеет ли это какое-то значение?

Обновление:

Использование Моно 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

person Benjol    schedule 17.09.2010    source источник
comment
Какую версию Моно вы используете? (вы можете узнать с помощью mono --version)   -  person Édgar Sánchez Gordón    schedule 19.09.2010
comment
@ Эдгар, я добавил информацию к вопросу.   -  person Benjol    schedule 21.09.2010


Ответы (2)


Похоже, что fsc - это P/Invoking собственный API Windows, который не является переносимым. Вероятно, вам следует поднять этот вопрос перед командой F#.

person Mikayla Hutchinson    schedule 17.09.2010
comment
@Benjol: ты что-нибудь слышал? - person mmacaulay; 24.12.2010
comment
@mmacaulay, не совсем, я думаю, что меня скопировали во «внутреннем» письме, в котором говорилось, что они попытаются изучить это. Я подозреваю, что это где-то на нейтральной территории между Microsoft и Mono... Но если/когда я узнаю что-нибудь, я напишу здесь. - person Benjol; 25.12.2010

Попробуйте использовать sn для подписи после создания сборки.

Для этого сначала нужно выполнить компиляцию с флагом --delaysign. для создания сборки с отложенной подписью.

Затем вы можете использовать утилиту sn с флагом -R. чтобы потом подписать сборку.

Я не уверен на 100%, что это сработает, поскольку у меня нет машины с Linux или Mac, чтобы проверить это. Хотя стоит попробовать.

person Rick Minerich    schedule 21.09.2010
comment
Я посмотрел и не могу понять, как подписать ранее неподписанную сборку... Любые указатели приветствуются... - person Benjol; 22.09.2010
comment
Я добавил больше информации. Надеюсь это поможет. - person Rick Minerich; 23.09.2010