[FxCop.设计规则]2. 程序集应该拥有一个有效的强名称

2.     程序集应该拥有一个有效的强名称

原文引用:

Assemblies should have valid strong names

TypeName:

AssembliesShouldHaveValidStrongNames

CheckId:

CA2210

Category:

Microsoft.Design

Message Level:

CriticalError

Certainty:

95%

Breaking Change:

NonBreaking


Cause: An assembly is not signed with a strong name, the strong name could not be verified, or the strong name would not be valid without the current registry settings of the computer.

Rule Description

This rule retrieves and verifies the strong name of an assembly. A violation occurs if any of the following are true:

  • The assembly does not have a strong name.

  • The assembly was altered after signing.

  • The assembly is delay-signed.

  • The assembly was incorrectly signed, or signing failed.

  • The assembly requires registry settings to pass verification. For example, the Strong Name tool (Sn.exe) was used to skip verification for the assembly.

The strong name protects clients from unknowingly loading an assembly that has been tampered with. Assemblies without strong names should not be deployed outside of very limited scenarios. If you share or distribute assemblies that are not correctly signed, the assembly can be tampered with, the common language runtime might not load the assembly, or the user might have to disable verification on his or her computer. An assembly without a strong name suffers from the following drawbacks:

  • Its origins cannot be verified.

  • The common language runtime cannot warn users if the contents of the assembly have been altered.

  • It cannot be loaded into the global assembly cache.

Note that to load and analyze a delay-signed assembly, you must disable verification for the assembly.

How to Fix Violations

To fix a violation of this rule, use the Strong Name tool (sn.exe) to create a key file and sign the assembly with a strong name using one of the following procedures:

When to Exclude Messages

Only exclude a message from this rule if the assembly is used in an environment where tampering with the contents is not a concern.

引起的原因:

1.  程序集没有使用强名称进行签名

2.  强名称不能被校验

3.  该程序集的强名称依赖于当前计算机的设置才有效。

描述:

这个规则读取并校验一个程序集的强名称,下面任何一条都会引起这条规则校验失败:

1.  这个程序集没有进行强名称签名

2.  进行签名后,这个程序集被修改过。

3.  程序集被设置成延迟签名

4.  程序集签名失败

5.  程序集需要一定的注册表设置才能通过强名称校验

例如:通过强名称工具(Sn.exe)设置跳过对这个程序集的强名称确认

 

强名称保护用户不会使用一个被篡改的程序集。一个没有强名称的程序集只能被使用在非常小的范围内。如果你分发一个没有进行正确签名的程序集,将不能保证它没有被篡改。如果用户没有设置忽略强名称确认,CLR将会拒绝载入这个程序集。

 

不对程序集进行强名称签名会有如下缺点:

1.  程序集的来源将不能被保证

2.  用户将无法知道程序集被篡改过

3.  程序集不能被载入GAC(全局程序集缓存)

如果需要分析一个延迟签名的程序集,必须禁用这条规则。

修复:

使用强名称工具生成Key文件,并用这个文件签名程序集。你可以使用下面的一种方法签名这个程序集:

1.  使用.NET Framework SDK中的程序集连接工具(Al.exe)

2.  .NET Framework v1.0v1.1中,使用System.Reflection.AssemblyKeyFileAttributeSystem.Reflection.AssemblyKeyNameAttribute属性标记程序集。

3.  .NET Framework v2.0中,使用/keyfile或者/keycontainer编译指令。(在C++中,使用/KEYFILE or /KEYCONTAINER连接指令)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: .NET Framework 4.0开发者工具包是一个由微软提供的应用程序开发工具,用于简化和加速Windows应用程序的开发和部署。它包含了各种开发工具和调试工具,帮助开发人员更容易地创建高效、可扩展、安全的应用程序。 这个工具包中包含了许多开发组件和工具,包括编译器、调试工具、代码分析器、测试工具等。其中,最核心的组件是.NET Framework框架本身,它提供了一系列组件和API,帮助开发人员创建各种类型的应用程序,如桌面应用、Web应用、服务应用等。 .NET Framework 4.0开发者工具包还提供了很多大的开发工具,如Visual Studio成开发环境(IDE)、线程分析器、CLR分析器等。这些工具可以帮助开发人员快速诊断和解决各种应用程序问题,并优化应用程序的性能。 总的来说,.NET Framework 4.0开发者工具包是一个极为大和实用的工具,它可以帮助开发人员更加高效地创建和维护Windows应用程序。无论是初学者还是专业开发人员,都可以从中受益匪浅。 ### 回答2: .NET Framework 4.0是Microsoft推出的一个跨平台开发框架,旨在提供大的工具和技术,以帮助开发人员构建高质量的应用程序。开发者工具包则是作为.NET Framework 4.0的一个重要组成部分,为开发人员提供了一系列开发工具和组件,使他们能够更高效地编写.NET应用程序。 开发者工具包中包含的一些关键组件和工具,例如.NET Framework 4.0 SDK、Visual Studio 2010、ASP.NET和Silverlight等,这些都是.NET开发的关键要素。通过使用这些组件和工具,开发人员可以利用.NET Framework 4.0所提供的大的编程模型和开发环境,轻松地构建出面向Web、桌面等不同平台的高性能应用程序。 此外,开发者工具包还提供了许多实用工具和组件,例如.NET Reflector、FxCop、LINQ to SQL、Entity Framework、WCF和WPF等。这些工具和组件可以使开发人员更轻松地开发、测试和部署.NET应用程序,并且可以大大提升应用程序的性能和可维护性。 总之,.NET Framework 4.0开发者工具包是.NET开发的一个重要工具,可以为开发人员提供一系列大的工具和组件,帮助他们更有效地构建.NET应用程序。 ### 回答3: .NET Framework 4.0开发者工具包是一个非常有价值的工具,它为.NET开发者提供了许多工具和资源来简化和优化其工作流程。这个工具包包含了多种工具和组件,可以用于开发和部署.NET应用程序。以下是针对.NET Framework 4.0开发者工具包的几个主要特点: 1. 全面的成开发环境(IDE):这个工具包包含了Visual Studio 2010 SP1,一个大的IDE,可以帮助.NET开发者编写高效和可维护的代码。 2. 新的.NET Framework 4.0组件:这个工具包包含了.NET Framework 4.0中的许多新组件,比如ParallelFX、MVC 3以及Dynamic Data,这些组件可以帮助.NET开发者编写更好的Web应用程序。 3. 官方文档和示例:这个工具包还包含了大量的文档和示例,帮助.NET开发者学习如何使用.NET Framework 4.0和其组件。 4. 调试和优化工具:这个工具包还包含了许多调试和优化工具,帮助.NET开发者诊断和修复其代码中的错误和性能问题。 总之,.NET Framework 4.0开发者工具包是一个非常有用的工具,可以帮助.NET开发者编写更好的应用程序。无论是初学者还是经验丰富的开发人员,都可以从这个工具包中受益。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值