我管理一个开源项目,希望对发布在项目二进制包中的二进制文件进行签名。我使用Visual Studio的csproj
和sln
文件来管理和构建我的项目,并将这些文件作为项目源代码包的一部分进行分发。
我如何对生成的二进制文件进行签名,而无需分发snk
密钥对文件?如果我使用Visual Studio对程序集进行签名,则每个项目文件现在都需要密钥对的副本才能进行构建。即使密码受到保护,我也不放心分发密钥对。
编辑:
另一个限制是,项目中的某些程序集通过InternalsVisibleToAttribute
授予了友元访问权限,并通过项目引用构建这些友元。因此,这些程序集需要使用强名称来引用已签名的程序集。但是,如果不分发密钥对,那么最终用户如何构建源代码并维护项目关系?如果使用临时密钥对文件,那么签名程序集的公钥令牌会改变,从而破坏InternalsVisibleToAttribute
的引用?