C#:为什么要签署程序集?

标签 c# assemblies

在我接手的一些 C# 代码中(在 Visual Studio 2005 中),我注意到程序集都使用相同的 .snk 文件签名。

  • 为什么以前的作者会以这种方式签署程序集?
  • 签署程序集是必要的吗? 不签名有错吗?
  • 有什么缺点 签署程序集 - 它会导致延迟吗?

最佳答案

Why would the previous author have signed the assemblies in this way?

不知道,也许他希望他的所有程序集都使用相同的 key 签名。

Is signing assemblies necessary and what would be wrong with not signing it?

不,这不是必需的,但它是一种允许您确保程序集真实性的机制。它使您可以确保程序集未被篡改,并且确实来自该作者。如果您想将它们放入 GAC,这也是必要的。

What disadvantages are there in signing assemblies - does it cause delays?

签名的程序集只能加载其他签名的程序集。此外,它们与特定版本相关联,这意味着如果您想使用不同的版本,则需要使用绑定(bind)重定向或重新编译应用程序。由于签名的验证,还有一点性能开销,但它很小,您不应该担心。

关于C#:为什么要签署程序集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3975723/

相关文章:

c# - 如何让 C# 项目忽略程序集的版本号?

visual-studio-2008 - 每次构建时自动提升次要版本号 (VS 2008)

c# - 在英特尔 phi 协处理器上运行 mono/c#

c# - 如何在 C# 中读取和写入文件

c# - Entity Framework 代码优先 : Set unique key constraint is not working

c# - 没有这样的表 - 内存中带有 Sqlite 的 EF Core

c# - ToLookup 与多个键

asp.net - 在 ~/App/web.config 中设置 <probing> privatePath 而不访问根应用程序 .config?

.net - 强制从/bin 而不是 GAC 加载程序集?

c# - 通过代码(C# 或 PowerShell)获取有关进程(如 Sysinternals Process Explorer)的 .NET 程序集信息