若要部署适配器,必须将适配器程序集安装到全局程序集缓存(GAC),然后在 machine.config 文件中注册适配器。
将适配器程序集安装到 GAC 中
在使用“添加适配器服务引用插件”命令在 Visual Studio 中使用适配器,或在 BizTalk Server 中使用“消费适配器服务”加载项功能之前,必须将程序集安装到 GAC 中。 只有强名称的程序集才能安装到 GAC 中。
注释
若要完成此过程,必须使用对 GAC 具有写入权限的帐户登录。 本地计算机上的管理员帐户具有这些权限。
配置强名称程序集密钥文件
在 Visual Studio 中,加载需要强名称的适配器项目文件。
打开 Visual Studio 命令提示符。
在命令提示符处,从要存储密钥文件的文件夹键入以下命令,然后按 Enter:
sn /kfile_name.snk
示例: sn /k EchoAdapter.snk
命令行上显示一条确认消息:密钥对写入到<file_name>.snk
,
。在 Visual Studio 解决方案资源管理器中,右键单击该项目,然后单击“ 属性”。
在左窗格中,展开 “通用属性”,然后单击“ 程序集”。
在右窗格中,滚动到 “强名称 ”框。
在 “强名称 ”框中,单击 “程序集密钥文件”旁边的字段,单击“浏览”按钮(...),然后浏览到密钥文件。
单击密钥文件,单击“ 打开”,然后单击“ 确定”。
在 Visual Studio 菜单上,单击“ 生成”,然后选择“ 生成解决方案”。
注释
如果适配器程序集依赖于任何其他程序集,请确保这些引用的程序集使用强名称进行签名;否则将收到错误。
如果您有源代码,则可以按照前述方法使用强名称重新编译。 如果引用的程序集属于第三方,并且您无法确保该程序集被赋予强名称,那么您可以将其反汇编,然后再赋予强名称重新组装。
原始程序集将被覆盖,因此,如果要保留原始版本,请确保先创建其备份副本,然后再继续执行以下步骤。
使用 Microsoft 中间语言(MSIL)反汇编器来拆解程序集:
ILDASM thirdparty.dll /out:thirdparty.il
使用 MSIL 汇编器重新组装带有强名称的程序集:
ILASM thirdparty.il /dll /key=strongkeyfile.snk
在 GAC 中安装程序集
验证适配器是否已签名。
打开 Visual Studio 命令提示符。
键入以下命令:
gacutil.exe /if "<程序集 .dll 文件的路径>"
这会将程序集安装到全局程序集缓存中,替换具有相同程序集名称的任何现有程序集。
在 Machine.config 中注册适配器
使用 WCF LOB 适配器 SDK 开发的适配器显示为 WCF 绑定。 有关详细信息,请参阅 Microsoft.ServiceModel.Channels.Common.AdapterBinding。 在 WCF 中通过 system.ServiceModel 内的 <bindingExtensions> 部分注册适配器绑定,并通过 system.ServiceModel 内的 <bindingElementExtensions> 部分注册适配器传输绑定元素。
可以使用文本编辑器手动编辑 machine.config 文件。
手动编辑 machine.config 文件
编辑位于 Microsoft .NET 配置文件夹中的 machine.config 文件。 为此,请单击“ 开始”,单击“ 运行”,键入记事本 <Windows 安装路径>\Microsoft.NET\Framework\<version>\CONFIG\machine.config,然后单击“ 确定”。
更新 machine.config 文件。 如果该文件不包含 system.serviceModel 节,请在配置文件末尾添加以下部分,但在结束根标记之前。
注释
将“myAdapterBinding”、版本、区域性和其他特定于程序集的信息替换为适配器的信息。
<system.serviceModel> <extensions> <bindingExtensions> <add name="myAdapterBinding" type="Microsoft.Adapters.Samples.Echo.EchoAdapterBindingCollectionElement,EchoAdapter, Version=0.0.0.0, Culture=neutral, PublicKeyToken= fafafafafafafafa" /> </bindingExtensions> <bindingElementExtensions> <add name="echoAdapter" type="Microsoft.Adapters.Samples.Echo.EchoAdapterBindingElementExtension,EchoAdapter, Version=0.0.0.0, Culture=neutral, PublicKeyToken=37f23b4adb996dcf" /> </bindingElementExtensions> </extensions> </system.serviceModel>
或-
如果 machine.config 文件包含 system.serviceModel 部分,请确定缺少哪些元素并添加它们,并将“MyAdapter”和其他信息替换为适配器的信息。
<extensions> <bindingExtensions> <add name="myAdapterBinding" type="Microsoft.Adapters.Samples.Echo.EchoAdapterBindingCollectionElement,EchoAdapter, Version=0.0.0.0, Culture=neutral, PublicKeyToken= fafafafafafafafa" /> </bindingExtensions> <bindingElementExtensions> <add name="echoAdapter" type="Microsoft.Adapters.Samples.Echo.EchoAdapterBindingElementExtension,EchoAdapter, Version=0.0.0.0, Culture=neutral, PublicKeyToken=37f23b4adb996dcf" /> </bindingElementExtensions> </extensions>
关闭并保存 machine.config 文件。
还可以使用 服务配置编辑器 修改 machine.config 文件。
使用服务配置编辑器编辑 machine.config 文件
打开 服务配置编辑器。 有关详细信息,请参阅 服务配置编辑器 。
在树视图窗格(标记为 “配置”)中,展开节点树。 单击 “高级 ”文件夹,单击 “扩展 ”文件夹,然后选择绑定扩展元素。
创建新的绑定扩展。 单击“ 新建 ”按钮打开“扩展 配置元素编辑器 ”对话框。 在 配置名称中,输入扩展的唯一名称,例如 MyAdapterExtension。
单击 “类型” 字段,然后单击省略号按钮(...)打开“ 绑定扩展类型浏览器 ”对话框。
单击全局程序集缓存 (GAC) 图标列出 GAC 中的 DLL。
单击适配器程序集。
单击 “打开 ”按钮以选择程序集。
在“ 绑定扩展类型浏览器 ”对话框中,单击实现绑定集合元素的类型名称。
单击“ 打开 ”按钮以选择类型。
单击 “确定 ”关闭 “扩展配置元素编辑器 ”对话框。
在 绑定扩展编辑器的详细信息窗格中,验证绑定扩展是否显示。 在下图中,突出显示了 MyAdapterExtension。
关闭 服务配置编辑器。