签署F#Assembly

时间:2015-06-05 18:03:51

标签: .net f# strongname assembly-signing

我在尝试签署F#类库项目时遇到了很多麻烦。 首先,我使用 AssemblyKeyFileAttribute 尝试了此thread,但没有成功。 我还尝试添加标志" - keyfile:keyfile.snk"到项目属性("其他标志"" Build"标签中的字段),它也没有奏效。我使用的是Visual Studio 2013,并没有显示"签名"像C#类库项目一样的选项卡。

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

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

我做错了什么?

1 个答案:

答案 0 :(得分:6)

FWIW,这是我签署ZeroToNine的方式:我不是使用Visual Studio,而是将其作为构建脚本的一部分。基本上,它是通过使用AssemblyOriginatorKeyFileSignAssembly

完成的
MSBuild.exe /property:AssemblyOriginatorKeyFile=mykey.snk /property:SignAssembly=true

您可以看到(几乎)ZeroToNine仓库中的所有细节,包括the actual build script I use for signing。公共仓库中缺少的唯一细节是实际的.snk文件,因为如果它是公开可用的,那么拥有强名称密钥是没有意义的。

以下是我如何从Bash调用构建脚本:

build-release.sh ../ZeroToNine.snk

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