我在尝试签署F#类库项目时遇到了很多麻烦。 首先,我使用 AssemblyKeyFileAttribute 尝试了此thread,但没有成功。 我还尝试添加标志" - keyfile:keyfile.snk"到项目属性("其他标志"" Build"标签中的字段),它也没有奏效。我使用的是Visual Studio 2013,并没有显示"签名"像C#类库项目一样的选项卡。
所有尝试都会导致以下错误:
FSC:错误FS2014:编写二进制文件' obj \ Release \ ExcelFinancialFunctions.dll'时出现问题:对StrongNameGetPublicKey的调用失败(值不在预期范围内。)
我做错了什么?
答案 0 :(得分:6)
FWIW,这是我签署ZeroToNine的方式:我不是使用Visual Studio,而是将其作为构建脚本的一部分。基本上,它是通过使用AssemblyOriginatorKeyFile
和SignAssembly
:
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之外,并将其作为参数传递给脚本。