签署 F# 程序集

9
我试图签署一个F #类库项目,但遇到了很多问题。
首先,我尝试使用AssemblyKeyFileAttribute,参考此贴,但并没有成功。我还尝试在项目属性中添加标志"--keyfile:keyfile.snk"(在“生成”选项卡的“其他标志”字段中),但同样不行。我正在使用Visual Studio 2013,它没有像C#类库项目一样显示“签名”选项卡。
所有尝试都会导致以下错误: FSC: error FS2014: A problem occurred writing the binary 'obj\Release\ExcelFinancialFunctions.dll': A call to StrongNameGetPublicKey failed (Value does not fall within the expected range.) 我做错了什么?
1个回答

6

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

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

您可以在ZeroToNine仓库中查看(几乎)所有细节信息,包括我用于签名的实际构建脚本。公共存储库中唯一缺少的细节是实际的.snk文件,因为如果它是公开可用的,则使用强名称关键字没有意义。

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

build-release.sh ../ZeroToNine.snk

正如您所看到的,我的.snk文件存放在仓库之外,并作为参数传递给脚本。


这确实是一个很好的解决方案。我不知道msbuild有自己的签名机制,但是我通过使用ilmerge(程序集链接器- al也没用!)成功解决了签名问题,尽管这并不是ilmerge的目的所在。由于这是比我的解决方案更好的解决方案,所以我将把它标记为正确答案。谢谢! - Vinícius Oliveira

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接