使用 Publicize 来创建专用访问器

更新:2007 年 11 月

命令行工具 publicize.exe 可生成包含公共类型的程序集。这些公共类型将所有私有类型封装在另一个程序集中。使用 Publicize 可帮助创建针对私有类型的单元测试。

生成的程序集也称为“专用访问器”。您也可以从 IDE 生成专用访问器,但您可能会在 Automation 中、脚本撰写过程中和生成方案中改为使用 publicize.exe。

Publicize 不支持委托或事件

测试的程序集可能包含各种私有类型或内部类型。当运行 publicize.exe 并传递该程序集的名称时,它将为该程序集生成一个专用访问器。生成的专用访问器包含允许您的测试代码访问程序集中的私有类型的代码。但是,它不提供对任何私有或内部委托或事件的访问。

使用 Publicize.exe 工具

若要使用 publicize.exe,请首先打开 Visual Studio 2008 命令提示符。为此,请单击“开始”,再单击“所有程序”,依次指向“Microsoft Visual Studio 9.0”和“Visual Studio Tools”,然后单击“Visual Studio 2008 命令提示”。对 publicize.exe 使用下列语法:

Publicize.exe [options] input-assembly

此命令包装 input-assembly 程序集中存在的所有私有类型。

选项

此命令具有 /target、/delaysign 和 /keyfile 选项。以下各部分对这些选项进行了描述。

/target

语法:Publicize.exe /target:[value] input-assembly

/target 选项指定生成的程序集是为在特定的平台上运行而生成的。/target 的可能值如下:

  • 桌面:生成标准的 CLR 专用访问器。Desktop 是 target: 选项的默认值。

  • 网站:生成与网站兼容的专用访问器。

    说明:

    只有在测试您在 Visual Studio 中通过选择“文件”菜单上的“网站”创建的网站中的代码时,才应使用 WebSite 选项。

  • 设备:生成与智能设备兼容的专用访问器。

/delaysign

语法:Publicize.exe /delaysign input-assembly

使用 /delaysign 选项可指示您当前不希望对程序集进行签名。在输出程序集中保留了空格,以便以后能够添加数字签名。

通过使用 /delaysign,您可以在运行 publicize.exe 后继续进行测试。使用了一个临时的公钥标记,并且您以后可以对此程序集进行签名。

如果您使用 /delaysign 选项,您还必须使用 /keyfile 选项。您使用 /keyfile 选项指定的文件必须包含公钥;它也可以包含私钥。

/delaysign 也是一个 .NET 编译器选项。有关更多信息,请参见创建和使用具有强名称的程序集延迟为程序集签名

/keyfile

语法:Publicize.exe /keyfile<key file> input-assembly

使用 /keyfile 选项可在您运行 publicize.exe 时对程序集进行签名。使用 <key file> 词语可指定包含加密密钥的现有文件的名称。<key file> 词语可以包含密钥文件的绝对路径或相对路径。

如果您使用 /keyfile 选项,您还可以使用 /delaysign 选项。如果您使用 /keyfile 时未使用 /delaysign,则您使用 /keyfile 选项指定的文件必须既包含公钥,又包含私钥。

/keyfile 也是一个 .NET 编译器选项。有关更多信息,请参见 创建和使用具有强名称的程序集

示例

下列命令为 Myassembly.dll 生成一个标准的桌面专用访问器:

Publicize.exe myassembly.dll

下列命令为 MyWebSite 网站生成一个专用访问器:

Publicize.exe /target:WebSite myassemby.dll

下面的命令为具有强名称的程序集 Myassembly.dll 生成一个标准的桌面专用访问器,但将签名延迟到以后进行:

Publicize.exe /delaysign /keyfile<FileWithPublicKey.snk> myassembly.dll

下面的命令生成一个专用访问器,以供在测试为在智能设备上运行而生成的应用程序时使用:

Publicize.exe /target:device /keyfile<FileWithKeys.snk> myassembly.dll

请参见

任务

如何:测试私有方法

概念

使用专用访问器