我正在创建一个入门工具包,它将已编译的程序集从开源项目安装到GAC中,以便更容易地引用模板中的程序集.由于他们将加入GAC,因此需要签署.
我是否需要密码保护并保护密钥文件,或者是否可以将其保持打开并将文件包含在源代码管理中?
我看到像SN这样的工具生成用于签署程序集的私钥/公钥对.使用AL工具,我们可以为程序集指定一个强名称
我们还有Sign工具,用于签署程序集(可能只用于证书?).
这两者之间的确切区别是什么?在使用证书时是否必须使用签名工具,我们能否实现SN?或者他们完全不同.
请帮忙.
我理解签署程序集背后的基本思想,但在使用Telerik或第二方DLL时遇到问题.我有一个使用我自己的.DLL的.exe,这些DLL依次使用企业库DLL和Telerik DLL.
我为我的所有项目提供了一个强大的名称.snk,但是在编译时,编译器解释说企业库DLL没有签名,这是有道理的.
我不想用te sn.exe -Vr命令关闭验证,甚至延迟签署我的项目.但那怎么会起作用呢?我很感激任何见解.
方案是:我正在使用TeamCity构建我的解决方案,我没有以管理员身份运行构建帐户; 所以我遇到了强名称密钥的问题.
我知道一些解决方案,比如以管理员身份运行构建并在适当的容器中注册证书.
无论如何,仅在发布版本期间而不是在调试版本期间对解决方案文件中的程序集进行签名.或者有类似的解决方案吗?
我认为很奇怪,没有一个MSBuild参数可以设置,无论是否应该签署程序集.因为如果你查看csproj文件,那里有一个签名或未签名的选项
teamcity continuous-integration build visual-studio-2010 assembly-signing
我想在我的项目中签署一个程序集(由另一个团队使用).根据我的经验,我很快就需要签署其他项目,我想用一个文件签名.
我做了以下事情:
我的文件(MyKey.snk)保存在文件夹项目中.
并将MyKey.snk文件复制到项目文件夹中.
这个可以吗?我可以阻止密钥文件复制到项目文件夹中吗?
非常感谢.
PS我在VS 2008工作
我在尝试签署F#类库项目时遇到了很多麻烦.首先,我使用AssemblyKeyFileAttribute尝试了这个线程,但没有成功.我还尝试将标志"--keyfile:keyfile.snk"添加到项目属性("构建"选项卡中的"其他标志"字段),它也没有用.我正在使用Visual Studio 2013,它没有像C#类库项目那样显示"签名"选项卡.
所有尝试都会导致以下错误:
FSC:错误FS2014:写入二进制文件'obj\Release\ExcelFinancialFunctions.dll'时出现问题:对StrongNameGetPublicKey的调用失败(值不在预期范围内.)
我究竟做错了什么?
我们有一个包含许多项目的解决方案(可能是20个或更多).最近我们做了一些更改,需要从COM调用几个这些程序集,这意味着我们需要对它们进行强名称.这些程序集引用了我们项目中的其他程序集,这意味着它们也需要具有强名称.它们还具有InternalsVisibleTo属性,因此授予的程序集也必须具有强名称.
我建议我们简单地将它们全部命名,而不是试图找到哪些组件需要签名/强命名.这让几个人对风险感到不安.我认为没有风险,但他们想要签署集会的利弊.我能想到的唯一的事情是:
优点
缺点
我有两个具体问题:
我有一个包含多个c#类库的ac#解决方案.我最近正在做一些研究,建议我的库中输出的程序集应该签名,并使用强名称签名.首先,我想知道我是否最好进步?从这些类库输出的库用于多个其他项目.
如果从我之前的问题建议我是的,我应该签署我的dll,我使用的.snk,这可以用于解决方案中的每个类库吗?或者每个类库必须是一键吗?
我管理一个开源项目,并希望签署项目二进制包中发布的二进制文件.我使用Visual Studio csproj
和sln
文件来管理和构建我的项目,并将这些文件作为项目源包的一部分进行分发.
如何签署生成的二进制文件而不必分发snk
密钥对文件?如果我使用Visual Studio对程序集进行签名,则每个项目文件现在都需要密钥对的副本才能构建.即使密码保护,我也不习惯分发密钥对.
编辑:
另一个需要注意的是,项目中的某些程序集InternalsVisibleToAttribute
通过项目引用授予朋友访问权限,并构建这些朋友.因此,在引用签名的程序集时,此类程序集需要使用强名称.但是,如果密钥对未分发,那么最终用户如何构建源并维护项目关系?如果使用临时密钥对文件,签名程序集的公钥标记是否会更改,从而破坏InternalsVisibleToAttribute
引用?
我有一个C++项目,设置为/clr
,在同一解决方案中由C#项目引用.不幸的是,似乎C++没有正确签名,导致错误消息"程序集没有强名称".(sn.exe
同意该错误.)
然而,就是在项目设置(链接/高级)的SNK文件,因此它应该签署.此外,所有项目设置似乎与同一解决方案中的另一个C++项目相同 - 一切正常.
我将头发撕裂了几个小时后发现的一件事:
当取消/NOLOGO
链接器的开关时,很明显连接器被调用两次.我没有丝毫想到为什么会这样.
现在,在作品的链接被传递的命令行(SNK文件的项目/KEYFILE:
的)都调用,在一个,它不工作,第二次调用并没有获得通过的SNK文件.
为什么要调用链接器两次?是什么决定它不会在第二次调用中传递snk文件?
assembly-signing ×10
c# ×5
.net ×4
strongname ×3
gac ×2
open-source ×2
assemblies ×1
build ×1
c++ ×1
clr ×1
f# ×1
snk ×1
teamcity ×1
vb.net ×1