【问题标题】:Signing F# Assembly签署 F# 程序集
【发布时间】:2015-06-05 18:03:51
【问题描述】:

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

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

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

我做错了什么?

【问题讨论】:

    标签: .net f# strongname assembly-signing


    【解决方案1】:

    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 文件位于存储库之外,并将其作为参数传递给脚本。

    【讨论】:

    • 这确实是一个不错的解决方案。我不知道 msbuild 有它自己的签名机制,但是我设法使用 ilmerge 解决了签名问题(程序集链接器 - 也没有工作!)虽然这不是 ilmerge 的目的。由于这是比我更好的解决方案,因此我将其标记为正确答案。谢谢!
    猜你喜欢
    • 2013-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-24
    • 1970-01-01
    • 2011-11-14
    相关资源
    最近更新 更多