签署F#程序集

Vin*_*ira 9 .net f# strongname assembly-signing

我在尝试签署F#类库项目时遇到了很多麻烦.首先,我使用AssemblyKeyFileAttribute尝试了这个线程,但没有成功.我还尝试将标志"--keyfile:keyfile.snk"添加到项目属性("构建"选项卡中的"其他标志"字段),它也没有用.我正在使用Visual Studio 2013,它没有像C#类库项目那样显示"签名"选项卡.

所有尝试都会导致以下错误:

FSC:错误FS2014:写入二进制文件'obj\Release\ExcelFinancialFunctions.dll'时出现问题:对StrongNameGetPublicKey的调用失败(值不在预期范围内.)

我究竟做错了什么?

Mar*_*ann 6

FWIW,这是我如何签署ZeroToNine:我不是使用Visual Studio,而是将其作为构建脚本的一部分.基本上,它是通过使用AssemblyOriginatorKeyFile和完成的SignAssembly:

MSBuild.exe /property:AssemblyOriginatorKeyFile=mykey.snk /property:SignAssembly=true
Run Code Online (Sandbox Code Playgroud)

您可以看到(几乎)ZeroToNine仓库中的所有细节,包括我用于签名的实际构建脚本.公共存储库中唯一缺少的细节是实际的.snk文件,因为如果它是公开可用的,那么拥有强名称密钥是没有意义的.

以下是我从Bash调用构建脚本的方法:

build-release.sh ../ZeroToNine.snk
Run Code Online (Sandbox Code Playgroud)

如您所见,我将.snk文件驻留在repo之外,并将其作为参数传递给脚本.