-keyfile

指定包含密钥或密钥对的文件从而为程序集赋予强名称。

语法

-keyfile:file

参数

file(必需)。 包含密钥的文件。 如果文件名包含空格,则将名称括在引号内 (" ")。

备注

编译器在程序集清单中插入公钥,然后使用私钥对最终的程序集进行签名。 若要生成密钥文件,请在命令行键入 sn -k file。 有关详细信息,请参阅 Sn.exe(强名称工具)

如果使用 -target:module 进行编译,密钥文件的名称将保存在模块中,并在使用 -addmodule 编译程序集时包含到创建的程序集中。

也可以使用 -keycontainer 将加密信息传递给编译器。 如果需要部分签名的程序集,请使用 -delaysign

还可以将此选项指定为任何公共中间语言模块的源代码中的自定义属性 (AssemblyKeyFileAttribute)。

如果在同一编译中同时指定 -keyfile-keycontainer(通过命令行选项或通过自定义特性),则编译器将首先尝试密钥容器。 如果成功,则使用密钥容器中的信息对程序集签名。 如果编译器没有找到密钥容器,它将尝试用 -keyfile 指定的文件。 如果成功,则使用密钥文件中的信息对程序集签名,并且将密钥信息安装到密钥容器中(类似于 sn -i),以便在下一次编译中,密钥容器选项将生效。

请注意,密钥文件可能仅包含公钥。

有关对程序集签名的详细信息,请参阅创建和使用具有强名称的程序集

注意

-keyfile 选项在 Visual Studio 开发环境内无法使用;仅当从命令行编译时才可用。

示例

下面的代码编译源文件 Input.vb,并指定一个密钥文件。

vbc -keyfile:myfile.sn input.vb

请参阅