Export (0) Print
Expand All


Specifies a file containing a key or key pair to give an assembly a strong name.





Required. File that contains the key. Place the string in double quotation marks (" ") if it contains a space.


The compiler inserts the public key into the assembly manifest and then signs the final assembly with the private key. To generate a key file, type sn -k file at the command line.

If you compile with /target:module, the name of the key file is held in the module and incorporated into the assembly that is created when you compile an assembly with /addmodule.

You can also pass your encryption information to the compiler with /keycontainer. Use /delaysign if you want a partially signed assembly.

You can also specify this option as a custom attribute (System.Reflection.AssemblyKeyFileAttribute) in the source code for any MSIL module.

In case both /keyfile and /keycontainer are specified (either by command line option or by custom attribute) in the same compilation, the compiler will first try the key container. If that succeeds, then the assembly is signed with the information in the key container. If the compiler does not find the key container, it will try the file specified with /keyfile. If that succeeds, the assembly is signed with the information in the key file and the key information will be installed in the key container (similar to sn -i) so that on the next compilation, the key container will be valid.

Note that a key file might contain only the public key.

See Creating and Using Strong-Named Assemblies for more information on signing an assembly.

This option is not available within the development environment.

To set /keyfile programmatically

  • See AssemblyOriginatorKeyFile Property and AssemblyOriginatorKeyMode Property.


The following code compiles source file input.vb and specifies a key file:

vbc /keyfile:myfile.sn input.vb

See Also

Assemblies | Visual Basic Compiler Options | /target:module | /reference | Sample Compilation Command Lines

© 2015 Microsoft