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

#f# #mono #assembly-signing

#f# #mono #сборка-подписание

Вопрос:

Я получаю сообщение об ошибке при попытке подписать библиотеку dll в F # на 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
  

Библиотека 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, имеет ли это какое-либо значение?

Обновить:

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

Комментарии:

1. Какую версию Mono вы используете? (вы можете узнать с mono —version)

2. @Edgar, я добавил информацию к вопросу.

Ответ №1:

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

Комментарии:

1. @Benjol: ты что-нибудь слышал?

2. @mmacaulay, не совсем, я думаю, что меня скопировали по «внутренней» почте, сказав, что они попытаются разобраться в этом. Я подозреваю, что это где-то на нейтральной полосе между Microsoft и Mono… Но если / когда я что -нибудь услышу, я опубликую здесь.

Ответ №2:

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

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

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

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

Комментарии:

1. Я посмотрел и не могу понять, как подписать ранее неподписанную сборку… Любые указания приветствуются…

2. Я добавил больше информации. Надеюсь, это поможет.