Article ID: 302340 - Last Review: March 29, 2007 - Revision: 3.3

How To Create an Assembly with a Strong Name in .NET Framework SDK

This article was previously published under Q302340

On This Page

Expand all | Collapse all

SUMMARY

Assemblies can be assigned a cryptographic signature called a strong name, which provides name uniqueness for the assembly and prevents someone from taking over the name of your assembly (name spoofing). If you are deploying an assembly that will be shared among many applications on the same computer, it must have a strong name. This document describes how to create an assembly with a strong name.

Prerequisites

This article assumes that you have installed and are familiar with Visual Studio .NET.

Creating an Assembly with a Strong Name

  1. Use the Strong Name tool (Sn.exe) that comes with the .NET Framework Software Development Kit (SDK) to generate a cryptographic key pair.

    The following command uses the Strong Name tool to generate a new key pair and store it in a file called TestKey.snk:
    sn -k Testkey.snk
    						
  2. Add the proper custom attribute to your source for the compiler to emit the assembly with a strong name. Which attribute you use depends on whether the key pair that is used for the signing is contained in a file or in a key container within the Cryptographic Service Provider (CSP). For keys that are stored in a file, use the System.Reflection.AssemblyKeyFileAttribute attribute. For keys that are stored in the CSP, use the System.Reflection.AssemblyKeyNameAttribute attribute.

    The following code uses AssemblyKeyFileAttribute to specify the name of the file that contains the key pair.

    NOTE: In Microsoft Visual Basic, the assembly level attributes must appear as the first statements in the file.Visual Basic .NET Code
    Imports System
    Imports System.Reflection
    
    <assembly:AssemblyKeyFileAttribute("TestKey.snk")>
    					
    C# Code
    using System;
    using System.Reflection;
    
    [assembly:AssemblyKeyFileAttribute("TestKey.snk")]
    					

REFERENCES

For more information about the Strong Name tool (Sn.exe), see the following Microsoft .NET Framework Tools Web site:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cptools/html/cpgrfstrongnameutilitysnexe.asp (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cptools/html/cpgrfstrongnameutilitysnexe.asp)
For more information about the .NET Framework SDK, see the following Microsoft Web site:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/netstart/html/sdk_netstart.asp (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/netstart/html/sdk_netstart.asp)
For more information about global attributes, see the C# Programmer's Reference.


APPLIES TO
  • Microsoft .NET Framework 1.0
  • Microsoft .NET Framework 1.1
Keywords: 
kbhowtomaster KB302340
 

Article Translations

 

Related Support Centers