什么是.snk文件?我知道它代表Strongly Named Key,但所有关于它是什么以及它是如何工作的解释都在我脑海中.
关于如何使用强名称密钥以及它如何工作,是否有任何简单的解释?
我无法使用强名称密钥签名来构建项目 - 标题中的消息总是会出现.
是的,项目最初是从另一台机器复制而来的.但是,即使我通过"项目属性"中的"签名"选项卡添加新密钥,仍会显示此错误.
我尝试以管理员身份运行Visual Studio,并尝试手动将密钥添加到Windows证书库.
救命!
编辑:我没有得到一个新项目的错误,但我很想让这个现有的项目工作.即使我创建了新证书,它也无法工作!
我的一位同事非常热衷于签署集会.他确实试图签署任何东西.即使我们使用未经签名的Microsoft程序集,他也会获取源代码,签名,然后请其他开发人员使用他的副本.
我可以理解签署程序集的基本思想:确保特定程序集不会受到一些狡猾的黑客的影响.因此,如果我们是一家软件开发公司,我们应该在向客户发布一些.NET库之前签署我们的程序集.
但是,我们主要在这里开发自己使用的Web应用程序,而我无法看到签署我们使用的每个程序集的重点.
我在这里错过了什么吗?
如何找到程序集的完全限定名称,例如:
MyNamespace.MyAssembly, version=1.0.3300.0,
Culture=neutral, PublicKeyToken=b77a5c561934e089
Run Code Online (Sandbox Code Playgroud)
我已经设法使用sn.exeSDK中的我的PublicKeyToken ,但我想轻松获得完整的限定名称.
可能重复:
什么是强命名,我如何强名二进制?
实际上,昨天我参加了一次采访.他们在那里问了我一个关于强名的问题.我无法猜出它是什么?请解释一下.谢谢.
我的应用程序包含三个程序集:一个引用几个DLL的EXE.DLL对我的应用程序是私有的 - 它们仅由此可执行文件使用.
这些集会是否应该有一个强有力的名字?
FxCop建议他们应该 - 对于它目前生成的所有程序集:
CA2210:使用强名称密钥对<assembly>进行签名.
但是,这个建议说:
通常,您应该避免强命名应用程序EXE程序集.
和
您可能希望避免使用应用程序专用的强命名组件.
我应该给这些集会一个强有力的名字吗?在这种情况下这样做(或不这样做)有什么好处?
编辑:
看几个具有类似结构的应用程序,似乎没有就此问题达成共识.Paint.NET和Crack.NET的二进制文件没有强名称,而.NET Reflector和Snoop的二进制文件则没有.
有趣的是,使用Expression套件,Microsoft采用了后一种方法:例如,在Expression Blend中,他们选择对Blend.exe和随附的DLL(例如Microsoft.Expression.Blend.dll)进行强名称签名.
似乎我不太可能得到第一个问题的简单答案:"我应该给这些集会一个强有力的名字吗?".但是,我的第二个问题仍然存在:
在这种情况下,强名称签名二进制文件是否有任何好处?或者,不这样做会有什么好处吗?
编辑2:
如果无论如何都没有压倒性的理由,我倾向于给我的集会一个强有力的名字.因此,我对是否有人可以扩展(从第一个链接)感兴趣:
"强命名可能会使管理依赖项变得更加困难,并为私有组件增加不必要的开销."
我目前正在考虑开源我的项目,并且正在准备向公众发布的源代码和项目结构.现在我有一个问题:如何处理我的程序集的签名密钥?我应该为开源版本创建一个新密钥,并将其与其他文件一起发布到SVN存储库吗?我应该保留密钥,每个想编译代码的人都应该生成自己的密钥吗?
你怎么处理这个?向公众发布签名密钥让我感到有点不舒服.
我有一个使用AjaxControlToolkit.dll和Log4Net.dll的网站.
当我尝试在VS 2010上运行性能分析工具时,它会给我以下警告:
AjaxControlToolkit.dll已签名并且检测它将使其签名无效.如果您在没有仪器后事件的情况下继续重新签名二进制文件,则可能无法正确加载.
现在,如果我选择继续而不重新签名,则分析将开始,但程序集不会加载并提供ASP.NET异常.
我有一个项目,我为它创建了一个强名称密钥文件.
我怎么知道我的集会的强名是什么?看来这应该是显而易见的,但我找不到任何参考.
c# strongname .net-assembly visual-studio visual-studio-2012
strongname ×10
.net ×5
c# ×4
assemblies ×3
code-signing ×1
deployment ×1
open-source ×1
profiling ×1
snk ×1